2014-03-05 75 views
5

我正在测试烧瓶蓝图。我的应用程序有两个蓝图:烧瓶:多个蓝图互相干扰

  1. 基地
  2. 意见

基地/ __ init__.py

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

的意见/ __ init__.py

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

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

如果我注册只有这些蓝图1,一切都正常运行。但是,如果我注册两个蓝图,模板始终从opinions加载。例如,如果我点击http://server.com/base,index.html会从意见文件夹中选取。 Flask文档没有提及有关'template_folder'命名空间冲突的任何信息。

PS - 我想知道处理多个蓝图的替代方式。从两张不同的蓝图中导入views文件并不是很舒服。有什么更好的方法来做到这一点?

+0

请在您的模板和生成的html行中包含静态的示例用法。 –

+0

@PaoloCasciello - 您的评论肯定有帮助。这不是静态文件,而是被选中的错误模板。我已经适当地编辑了这个问题。 – Neo

+0

[flask蓝图模板文件夹]的可能重复(http://stackoverflow.com/questions/7974771/flask-blueprint-template-folder) – Neo

回答

5

蓝图模板目录是全局注册的。它们共享一个名称空间,以便您的应用程序可以根据需要覆盖蓝图的模板。文件中提到了这一点。

因此,你不应该命名您的意见模板index.html,而是opinions/index.html。乍一看(…/opinions/templates/opinions/…)使路径变得尴尬,但增加了灵活性,可以在不更改蓝图内容的情况下自定义“预置”模板。

+0

是的,它是一个有意识的设计选择。 http://stackoverflow.com/a/8198325/1678010 – Neo