烧瓶:多个蓝图相互干扰

时间:2014-03-05 07:04:28

标签: python flask

我正在测试带有蓝图的Flask。我的应用有两个蓝图:

  1. base
  2. 意见
  3. 基/ __初始化__。PY

    base = Blueprint('base', __name__, static_folder='static', template_folder='templates') 
    #http://server.com/base
    

    意见/ __初始化__。PY

    opinions = Blueprint('opinions', __name__, static_folder='static', template_folder='templates')
    #http://server.com/opinions
    

    __初始化__。PY

    app = Flask(__name__)
    from app.base import views 
    from app.base import base
    app.register_blueprint(base, url_prefix='/base')
    
    from app.opinions import views
    from app.opinions import opinions
    #app.register_blueprint(opinions, url_prefix='/opinions')  <-- Uncommenting this line causes issues
    

    如果我只注册其中一个蓝图,那么一切都运行良好。但是,如果我同时注册两个蓝图,则始终从opinions加载模板。例如,如果我点击http://server.com/base,则会从views文件夹中选择index.html。 Flask文档没有提到任何关于'template_folder'命名空间冲突的内容。

    PS - 我想知道处理多个蓝图的其他方法。我不太习惯从两个不同的蓝图导入views文件。什么是更好的方法呢?

1 个答案:

答案 0 :(得分:6)

蓝图模板目录全局注册。它们共享一个命名空间,以便您的应用程序可以在必要时覆盖蓝图的模板。这在文档中提到了。

因此,您不应将您的意见命名为index.html,而是opinions/index.html。乍一看这会产生尴尬的路径(…/opinions/templates/opinions/…),但增加了自定义“预制”模板的灵活性,而不会改变蓝图的内容。