テンプレートファイルは正しい場所に作成する必要があります。templates
pythonモジュールの横のサブディレクトリ。
エラーはhome.html
、templates/
ディレクトリにファイルがないことを示しています。pythonモジュールと同じディレクトリにそのディレクトリを作成し、実際home.html
にそのサブディレクトリにファイルを置いたことを確認してください。アプリがパッケージの場合、テンプレートフォルダーはパッケージ内に作成する必要があります。
myproject/
app.py
templates/
home.html
myproject/
mypackage/
__init__.py
templates/
home.html
または、テンプレートフォルダーに別の名前を付け、templates
それをデフォルトに変更したくない場合は、Flaskにその別のディレクトリを使用するように指示できます。
app = Flask(__name__, template_folder='template') # still relative to module
EXPLAIN_TEMPLATE_LOADING
オプションをに設定することで、Flaskが特定のテンプレートを見つけようとした方法を説明するように要求できますTrue
。ロードされたすべてのテンプレートについて、レベルでFlaskapp.logger
に記録されたレポートを取得しますINFO
。
これは、検索が成功したときの様子です。この例では、foo/bar.html
テンプレートがテンプレートを拡張しているbase.html
ため、2つの検索があります。
[2019-06-15 16:03:39,197] INFO in debughelpers: Locating template "foo/bar.html":
1: trying loader of application "flaskpackagename"
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- /.../project/flaskpackagename/templates
-> found ('/.../project/flaskpackagename/templates/foo/bar.html')
[2019-06-15 16:03:39,203] INFO in debughelpers: Locating template "base.html":
1: trying loader of application "flaskpackagename"
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- /.../project/flaskpackagename/templates
-> found ('/.../project/flaskpackagename/templates/base.html')
ブループリントは独自のテンプレートディレクトリも登録できますが、ブループリントを使用してより大きなプロジェクトを論理ユニット間で簡単に分割できるようにする場合は、これは必須ではありません。ブループリントごとに追加のパスを使用する場合でも、メインのFlaskアプリテンプレートディレクトリが常に最初に検索されます。
template_folder
パスを設定してください。