如何从Flask扩展加载模板

时间:2015-09-05 16:23:53

标签: python flask flask-extensions

我在tutorial之后开发了一个烧瓶扩展。我的扩展部分也是模板。默认情况下,我希望使用flask扩展模板,除非用户在主烧瓶应用程序中覆盖它们。问题是默认模板路径指向main_flask_app / templates。怎么回头看?非常感谢。

1 个答案:

答案 0 :(得分:2)

您的应用的布局以及您的扩展程序应如下所示:

myapp_project/
    myapp/
        __init__.py
        models.py
        ...
        static/
        templates/
            index.html
            ...
            myext/
                mypage.html  # overrides default from ext

myext_project/
    myext/
        __init__.py
        ...
        templates/
            myext/
                mypage.html  # the default template from ext
            ...

注意目录结构是如何相同的。添加具有相同路径的模板到应用程序将覆盖扩展名中该路径上的默认值。

您的扩展程序会通过在应用中注册蓝图来提供这些模板。应该设置蓝图以使用模板文件夹。

from flask import Blueprint

bp = Blueprint('myext', __name__, template_folder='templates')

class MyExt(object):
    ...
    def init_app(self, app):
        ...
        app.register_blueprint(bp)
    ...