【问题标题】:How to load from more then one template_folder for Flask blueprint?如何从多个模板文件夹加载 Flask 蓝图?
【发布时间】:2012-06-25 15:54:21
【问题描述】:

我学会了如何创建 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。我完全不确定它是否是好的设计,但有没有办法从一个蓝图传播两个模板文件夹?并让这两个模板集可用于整个 Flask 项目?

注意:formgear 是我的非 Flask 项目的名称。

【问题讨论】:

  • 我的回复能回答你的问题吗?

标签: python flask jinja2 blueprint


【解决方案1】:

这是调查的踪迹。

来自flask.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)
    ....

来自flask.helpers

@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. 传递给Blueprints的模板文件夹随后是_PackageBoundObject
  2. 它被视为单个字符串,而不是文件夹列表

结果:

  1. 您不能为 template_folder 传递多个路径

【讨论】:

  • 还没有人提交错误报告/功能请求?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多