Python Flaskで別のディレクトリからHTMLテンプレートを参照する方法 質問する

Python Flaskで別のディレクトリからHTMLテンプレートを参照する方法 質問する
@app.route('/view', methods=['GET', 'POST'])
def view_notifications():
    posts = get_notifications()
    return render_template("frontend/src/view_notifications.html", posts=posts)

私のにはこのコードがあります。使用しようとしたproject/backend/src/app.pyテンプレートをどのように参照すればよいのでしょうか。パスが見つからないというメッセージが表示されます。別の方法はありますか?project/frontend/src/view_notifications.html..

[Tue Jun 23 12:56:02.597207 2015] [wsgi:error] [pid 2736:tid 140166294406912] [remote 10.0.2.2:248] TemplateNotFound: frontend/src/view_notifications.html
[Tue Jun 23 12:56:05.508462 2015] [mpm_event:notice] [pid 2734:tid 140166614526016] AH00491: caught SIGTERM, shutting down

ベストアンサー1

Flask はtemplates/frontend/src/view_notifications.htmlテンプレート ファイルを検索しています。テンプレート ファイルをその場所に移動するか、デフォルトのテンプレート フォルダーを変更する必要があります。

Flask のドキュメントによると、テンプレート用に別のフォルダーを指定できます。デフォルトではtemplates/アプリのルートにあります。

import os
from flask import Flask

template_dir = os.path.abspath('../../frontend/src')
app = Flask(__name__, template_folder=template_dir)

アップデート:

Windows マシンで自分でテストしたところ、テンプレート フォルダーに名前を付ける必要がありましたtemplates。使用したコードは次のとおりです。

import os
from flask import Flask, render_template

template_dir = os.path.dirname(os.path.dirname(os.path.abspath(os.path.dirname(__file__))))
template_dir = os.path.join(template_dir, 'frontend')
template_dir = os.path.join(template_dir, 'templates')
# hard coded absolute path for testing purposes
working = 'C:\Python34\pro\\frontend\\templates'
print(working == template_dir)
app = Flask(__name__, template_folder=template_dir)


@app.route("/")
def hello():
    return render_template('index.html')

if __name__ == "__main__":
    app.run(debug=True)

この構造では、

|-pro
  |- backend
    |- app.py
  |- frontend
    |- templates
      |- index.html

のインスタンスを'templates'に変更し'src'、テンプレート フォルダーの名前を に変更すると、'src'OP が受け取ったのと同じエラーが発生しました。

おすすめ記事