环境如下:
win10, Python3.6.5, Flask1.0.2
项目结构如下:
<代码>/应用程序/jobs/主要/views.py/模板 index . html/管理/views.py/模板 index . html 代码>
/app/主/views.py内容如下:
<代码类="语言python ">从瓶进口蓝图,render_template 主要=蓝图(“主要”,__name__ template_folder=澳0濉? @main.route (“/? def指数(): 代码返回render_template (index . html) >
/app/admin/views.py内容如下:
<代码类="语言python ">从瓶进口蓝图,render_template 管理=蓝图(‘管理’,__name__ template_folder=澳0濉?url_prefix=/管理) @admin.route (“/? def指数(): 代码返回render_template (index . html) >
/app/jobs内容如下:
<代码类="语言python ">从瓶进口瓶 从app.main进口主要 从app.admin进口管理 def create_app (): 应用=瓶(__name__) app.register_blueprint(主要) app.register_blueprint(管理) 返回应用代码>
在cmd中输入瓶运行(执行前记得设置FLASK_APP, FLASK_DEBUG)。待程序跑起来后,在浏览器
地址栏中输入<代码> 127.0.0.1:5000> 代码,显示的主要是蓝图的inde.html。输入<代码> 127.0.0.1/管理/代码>,
显示的还主要是蓝图的指数。html。奇怪,这是为什么呢?浮砂在网上搜索半天,最终在烧瓶官方的
github上找到了相关的问题,感兴趣的朋友可以看看。
<代码> render_template方法> 代码不使用蓝图指定<代码> template_folder> 代码# 1361
此外,官方的文档中也有相关说明(模板部分):blueprint-resources
为了方便新手朋友,浮砂翻译成了中文,部分地方进行了补充。
<强>模板强>
<强>模板强>
如果你想蓝图暴露模板可以通过提供
<代码> template_folder> 代码参数:类:<代码>蓝图> 代码构造函数::
如果你想让蓝图暴露一些模板(比如flask-bootstrap扩展提供的“引导/base.html"),
可以给在构造蓝图时,指定<代码> template_folder> 代码参数。
<代码>管理=蓝图(‘管理’,__name__ template_folder=澳0濉?代码>
静态文件,可以绝对或相对路径蓝图
资源文件夹。
对于静态的文件,路径可以是绝对或相对于蓝图资源文件夹的。
模板文件夹添加到搜索路径的模板,但
优先级低于实际应用程序的模板文件夹中。这样你可以轻松
覆盖模板,一个蓝图提供了实际应用。
这也意味着如果你不希望蓝图模板不小心
覆盖,确保没有其他蓝图或实际应用模板
有相同的相对路径。当多个蓝图提供相同的相对
模板路径第一蓝图注册优先于他人。
模板的全局搜索路径中会自动添加这个模板文件夹,并且它的优先级低于应用的模板文件夹。这样,
你可以在实际应用中,轻而易举地覆盖某个蓝图的模板。也就是说,如果不想让某个蓝图模板
莫名其妙地被覆盖,请确保其他的蓝图的模板相对路径不同于实际应用的模板相对路径。假如
多个蓝图模板被指定了相同的相对路径,那么,当瓶搜索模板的时候,先被注册的蓝图模板
优先于后被注册的蓝图模板。
如果你有一个蓝图在文件夹<代码>个人信息/admin 代码>和
需要渲染模板<代码>“管理/索引。html的> 代码,你提供了
<代码>模板作为一个<代码> 代码> template_folder> 代码必须创建一个文件像
::文件:<代码>个人信息/admin/模板/admin/index . html> 代码。额外的原因
<代码>管理> 代码文件夹是避免我们的模板由模板覆盖
名叫<代码>索引。>