9

Flask ブループリントの作成方法を学び、Jinja2 テンプレートを使用する非フラスコ製品のブループリントを作成し、それらをフラスコ プロジェクト内で使用できるようになりました。私はこのようなことをします:

# blueprint code
from flask import Blueprint
from pkg_resources import resource_filename
app = Blueprint('formgear', __name__, 
                template_folder=resource_filename('formgear', 'templates'))

これは、Flask 以外のプロジェクトと論理的に接続されていますが、Flask 専用です。それが良いデザインかどうかは完全にはわかりませんが、1 つの設計図から両方のテンプレート フォルダーを伝播する方法はありますか? そして、両方のテンプレート セットを Flask プロジェクト全体で使用できるようにしますか?

注:formgearFlask以外のプロジェクトの名前です。

4

1 に答える 1

8

調査の軌跡はこちら。

フラスコから.blueprints

class Blueprint(_PackageBoundObject):
    ....
    def __init__(self, name, import_name, static_folder=None,
                 static_url_path=None, template_folder=None,
                 ...)
        _PackageBoundObject.__init__(self, import_name, template_folder)
    ....

フラスコヘルパーから

@locked_cached_property
def jinja_loader(self):
    """The Jinja loader for this package bound object.

    .. versionadded:: 0.5
    """
    if self.template_folder is not None:
        return FileSystemLoader(os.path.join(self.root_path,
                                             self.template_folder))

調査結果:

  1. に渡される te​​mplate_folderBlueprintsは、その後クラスに_PackageBoundObject
  2. フォルダのリストとしてではなく、単一の文字列として扱われます

結果:

  1. template_folder に複数のパスを渡すことはできません
于 2012-06-25T17:03:25.333 に答える