1

我正在按照本教程开发烧瓶扩展。我的扩展部分也是模板。默认情况下,我希望使用来自烧瓶扩展的模板,除非用户在主烧瓶应用程序中覆盖它们。问题是默认情况下模板路径指向 main_flask_app/templates。怎么过去?非常感谢。

4

1 回答 1

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)
    ...
于 2015-09-05T16:54:42.393 回答