Flask では、テンプレートを定義する方法が 2 つあります。
アプリレベル:
app/ templates/ index.html user/ index.htmlブループリント レベル:
app/ user/ templates/ index.html templates/ index.html
どちらも機能しているように見えますが、どちらが優れているのでしょうか? そうでない場合、各アプローチの利点/欠点は何ですか?
ブループリントに関するドキュメントはそれほど多くありません。
欠点は、アプリで何をするか、あなたの計画に本当に依存すると思います. ブループリント レベルにテンプレートがある場合、ブループリントをあるアプリから別のアプリに移動し、すべてを 1 か所にまとめたい場合に備えて、アプリはより柔軟になります。アプリのニーズとアーキテクチャ以外に何かがあるはずだとは思わないでください。
また、アプリの jinja2 テンプレート ローダーを完全に上書きして、必要なディレクトリにテンプレートを配置することもできます:) したがって、現在の方法が気に入らない場合は、すべてのテンプレートを本当に必要なディレクトリに移動できます。このようなもの:
import jinja2
my_loader = jinja2.ChoiceLoader([
app.jinja_loader,
jinja2.FileSystemLoader(['templates/somwehere',
'templates/another_place',
'apps/templates']),
])
app.jinja_loader = my_loader
ここでは順序が重要であることを覚えておいてください。