Python プログラミング

【Python】Djangoのエラー「ValueError didn’t return an HttpResponse object. It returned None instead.」の原因と解決法

この記事は約2分で読めます。

 

こんにちは、ミナピピン(@python_mllover)です!

 

MentaでPython Django 超入門 を参考にDjangoでのSNSアプリの製作をメンターしていた際に遭遇したエラー、関数の最後にreturn render(requets,, ‘~~~.html’)で戻り値を設定しているにも関わらず、「ValueError didn’t return an HttpResponse object. It returned None instead.」が出るという相談を受けました。

 

エラーメッセージを表面的に見る限り、viewの中でHttpレスポンスオブジェクトを返していないことが原因です。djangoは必ずHttpリクエストを受け取り、Httpレスポンスを返さなければいけません。

 

しかし、コードをみるとreturn render(requets,, ‘~~~.html’)は記載されています。なのに、「ValueError didn’t return an HttpResponse object. It returned None instead.」というエラーメッセージが表示されていました。

 

何が原因なのか調査した結果、真の原因はインデントがずれていたことでif文の下にreturn render(requets,, ‘~~~.html’)が来ており、if文の条件がFalseだった際にレンダリング処理が実行されていなかったことです。

 

というわけでインデントを参考書通りに直すことでGETでもPOSTでもreturn render(requets,, ‘~~~.html’)の部分が実行され、ページが表示されるようになりました。同じようなエラーに遭遇している方は参考書通りにインデントが揃っているか一度よく確認してみてください。参考書を写経するときはインデントもちゃんと揃えるように気を付けないとダメですね、というお話でした。

 

参照:https://teratail.com/questions/173758

 

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

タイトルとURLをコピーしました