我正在测试带有蓝图的Flask。我的应用有两个蓝图:
基/ __初始化__。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
文件。什么是更好的方法呢?
答案 0 :(得分:6)
蓝图模板目录全局注册。它们共享一个命名空间,以便您的应用程序可以在必要时覆盖蓝图的模板。这在文档中提到了。
因此,您不应将您的意见命名为index.html
,而是opinions/index.html
。乍一看这会产生尴尬的路径(…/opinions/templates/opinions/…
),但增加了自定义“预制”模板的灵活性,而不会改变蓝图的内容。