如何从 Flask 扩展加载模板

How to load templates from Flask extension

我正在根据这个 tutorial 开发烧瓶扩展。我的扩展部分也是模板。默认情况下,我想使用来自 flask 扩展的模板,除非用户在主 flask 应用程序中覆盖它们。问题是默认模板路径指向 main_flask_app/templates。如何克服它?非常感谢。

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

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)
    ...