我正在用蓝图测试Flask.我的应用有两个蓝图:
碱/ __ init__.py
base = Blueprint('base', __name__, static_folder='static', template_folder='templates')
#http://server.com/base
Run Code Online (Sandbox Code Playgroud)
意见/ __ init__.py
opinions = Blueprint('opinions', __name__, static_folder='static', template_folder='templates')
#http://server.com/opinions
Run Code Online (Sandbox Code Playgroud)
__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
Run Code Online (Sandbox Code Playgroud)
如果我只注册其中一个蓝图,一切运行正常.但是,如果我同时注册两个蓝图,则始终会加载模板opinions.例如,如果我点击http://server.com/base,则会从views文件夹中选择index.html.Flask文档没有提到任何关于'template_folder'命名空间冲突的内容.
PS - 我想知道处理多个蓝图的其他方法.我不太习惯views从两个不同的蓝图导入文件.什么是更好的方法呢?
蓝图模板目录在全球注册.它们共享一个命名空间,以便您的应用程序可以在必要时覆盖蓝图的模板.这在文档中提到了.
因此,您不应该将您的意见命名为模板index.html,而是opinions/index.html.乍一看(…/opinions/templates/opinions/…)这会产生尴尬的路径,但增加了自定义"预制"模板的灵活性,而无需更改蓝图的内容.