2015-09-05 39 views
1

我正在开发一个烧瓶扩展模块,在tutorial之后。我的扩展的一部分也是模板。默认情况下,我希望使用瓶扩展模板,除非用户在主瓶应用中覆盖它们。问题是默认模板路径指向main_flask_app/templates。如何检查它?非常感谢。如何从Flask扩展模板加载模板

+0

@davidism是的,这就是我想要的,我希望用户的应用程序覆盖扩展的模板。但是,如果在用户的应用程序中没有这样的模板,那么我希望从扩展中加载模板。但在这种情况下,在当前设置下,我得到'templateNotFound'错误,因为用户的应用程序正在寻找模板,可能只在用户的应用程序模板目录中(root_path指向的地方) – user3024710

+0

@davidism非常感谢您的快速回复。我的扩展的蓝图根本没有配置。因此,我添加了my_app = Blueprint('my_app',__name__,template_folder ='templates',static_folder ='static')和app.register_blueprint(my_app,url_prefix ='/ _ my_app')以使其工作。 – user3024710

回答

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