3

Flask では、テンプレートを定義する方法が 2 つあります。

  1. アプリレベル:

    app/
        templates/
            index.html
            user/
                index.html
    
  2. ブループリント レベル:

    app/
        user/
            templates/
                index.html
        templates/
            index.html
    

どちらも機能しているように見えますが、どちらが優れているのでしょうか? そうでない場合、各アプローチの利点/欠点は何ですか?

ブループリントに関するドキュメントはそれほど多くありません。

4

1 に答える 1

3

欠点は、アプリで何をするか、あなたの計画に本当に依存すると思います. ブループリント レベルにテンプレートがある場合、ブループリントをあるアプリから別のアプリに移動し、すべてを 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

ここでは順序が重要であることを覚えておいてください。

于 2012-12-29T06:39:20.140 に答える