烧瓶:多个蓝图相互干扰

Neo*_*Neo 7 python flask

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

  1. 基础
  2. 意见

碱/ __ 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从两个不同的蓝图导入文件.什么是更好的方法呢?

Mat*_*chs 7

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

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