【Flask】jinja2.exceptions.TemplateNotFoundの解消法|Python実行時の3つのチェックポイント

Flask TemplateNotFoundの接続エラー解消の巻

PythonのFlaskを使っていて、WEBブラウザから以下のエラーが返ってくることがあります。

jinja2.exceptions.TemplateNotFound
お悩みさん

そうそう、全然解決できなくて、どうしたらいいのー

僕もなかなか解決ができなかったのですが、方法自体はとても簡単なものでした。

さっそくご紹介をしていきます。

この記事で学べること
  1. jinja2.exceptions.TemplateNotFoundの解決法
  2. templatesフォルダの注意事項
目次

エラー内容:jinja2.exceptions.TemplateNotFound

Flaskのワークフレームを作成して、Pythonを実行しました。(実行結果はいつも通り)

* Serving Flask app "__init__" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!

しかし、Webブラウザで確認すると以下のエラーが返ってきています。

Python Flask jinja2.exceptions.TemplateNotFound エラー内容

【解決方法】templatesの3つの注意事項

僕自身、いくつかのパターンを試してみて、ミスしやすい箇所が大きく3つあることが分かりました。

もしエラーが発生した場合は、以下に該当していないかチェックしてみてください。

その①:Pythonスクリプトとtemplatesフォルダの階層が違う

Pythonのスクリプトと、templatesフォルダが同じ階層でなければ、

ブラウザでエラーが発生するようです。

Python Flask jinja2.exceptions.TemplateNotFound templatesフォルダ スクリプト 同じ階層

この2つが同じディレクトリにあるか確認してみてください

その②:templatesフォルダ名を間違えている

凡ミスですが、やりがちなのがフォルダ名の間違い。

templateではなく、templatesです。

最後のsを必ず忘れないようにしてください。

その③:htmlファイルの指定は、相対パスではない

スクリプトを書いていて、うっかり相対パスで書いてしまっていませんか?

return render_template( ‘xxxxxx.html’ )  だけで問題ありません。

templates/xxxxxx.html’赤字の部分は不要です。

以下が正常に動いた記述です。

@app.route('/')
def home():
    return render_template('home.html',posts=posts)

@app.route('/about')
def about():
    return render_template('about.html')

NGパターン!

例えば、以下のようにtemplatesを書いていないか確認してみてください

jinja2.exceptions.TemplateNotFound 解消法

まとめ

非常に簡単な修正なので、分かっていればすぐに解決できますが、初めてだとなかなか苦戦する部分ではないでしょうか。

僕は1時間程度、格闘してしまいました。。。

templatesフォルダの注意事項をぜひ参考にしてみてください

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

節約に励むマーケターです!30歳を機に別職種から、マーケターにキャリアチェンジ。IT企業で専任のマーケターをしています。0からプログラミングを学びはじめました! ★データサイエンティストの勉強中です!お問合せはこちら!

コメント

コメントする

CAPTCHA


目次