我的flask应用程序布局为:
myapp/
run.py
admin/
__init__.py
views.py
pages/
index.html
main/
__init__.py
views.py
pages/
index.html
_ init _ .py文件为空。admin / views.py的内容是:
from flask import Blueprint, render_template
admin = Blueprint('admin', __name__, template_folder='pages')
@admin.route('/')
def index():
return render_template('index.html')
main / views.py与admin / views.py类似:
from flask import Blueprint, render_template
main = Blueprint('main', __name__, template_folder='pages')
@main.route('/')
def index():
return render_template('index.html')
run.py是:
from flask import Flask
from admin.views import admin
from main.views import main
app = Flask(__name__)
app.register_blueprint(admin, url_prefix='/admin')
app.register_blueprint(main, url_prefix='/main')
print app.url_map
app.run()
现在,如果我访问http://127.0.0.1:5000/admin/,它将正确显示admin / index.html。但是,http://127.0.0.1:5000/main/仍显示admin / index.html而不是main / index.html。我检查了app.url_map:
<Rule 'admin' (HEAD, OPTIONS, GET) -> admin.index,
<Rule 'main' (HEAD, OPTIONS, GET) -> main.index,
另外,我验证了main / views.py中的索引函数是否按预期方式被调用。如果我将main / index.html重命名为其他名称,那么它将起作用。因此,不重命名,如何实现1http://127.0.0.1:5000 / main / 1显示main / index.html?
从Flask 0.8开始,设计图将指定的template_folder添加到应用程序的搜索路径中,而不是将每个目录都视为单独的实体。这意味着,如果你有两个具有相同文件名的模板,则在搜索路径中找到的第一个模板就是所使用的模板。公认的是,这令人困惑,并且目前尚无记录。看来你并不是唯一对此行为感到困惑的人。
这种行为的设计原因是,可以轻松地从主应用程序的模板中覆盖蓝图模板,这些模板是Flask模板搜索路径中的第一行。
我想到两个选择。
admin.html
和main.html
)。yourapp/admin/pages/admin/index.html
,然后从蓝图中以调用render_template('admin/index.html')
。Flask可以以HTML形式返回绑定到某个URL的函数的输出。 例如,在以下脚本中,函数将使用附加的标记呈现‘Hello World’ 。 但是,从Python代码生成HTML内容非常麻烦,尤其是在需要放置可变数据和Python语言元素(如条件或循环)时。经常需要转义HTML代码。 它可以利用Jinja2模板引擎技术,而不需要从函数返回硬编码HTML。如下代码所示,可以通过函数渲染HTML文件。
问题内容: 我今天才遇到这个问题-不是OP发布的文档问题,而是上面链接的stackoverflow问题中提到的问题,稍后将在这些评论中进行讨论。我同意@TRII-从树的下面覆盖一个蓝图的模板是有意义的,但是来自不同蓝图的模板彼此冲突似乎是错误的。当你从蓝图中加载模板时,为什么其他蓝图的文件夹会包含在搜索路径中?能够从另一个蓝图覆盖蓝图的模板是否有用? 通过阅读和思考,我想我已经弄清楚了它是如何工作
问题内容: 我在我的Web应用程序中使用了它们,但是我不完全了解它们是什么,或者它们如何适合我的整个应用程序。它与我的应用程序实例有何相似之处,但又不太相似?文档虽然很全面,但是我想寻求外行的解释或启发性的类比给我以启发。当一位同事要求我向他们解释我选择在这里询问的烧瓶蓝图时,我感到非常困惑。 问题答案: 蓝图是用于生成Web应用程序“部分”的模板。你可以将其视为模具: 你可以获取该蓝图,并将其应
问题内容: 我正在尝试使用Django,并弄清楚如何设置urls.py以及URL如何工作。我已经在项目的根目录中配置了urls.py,以定向到我的博客和管理员。但是,现在我想在首页添加一个页面,所以在。 因此,我在项目根目录的urls.py中添加了以下代码: 问题是它在blog / templates / …中搜索模板, 而不是在我的根目录中搜索template文件夹。其中包含base.html。
问题内容: 默认情况下,使用内置服务器()运行Flask应用程序时,它会监视其Python文件并在代码更改时自动重新加载该应用程序: 不幸的是,这似乎仅适用于* .py文件,而且我似乎没有找到任何将此功能扩展到其他文件的方法。最值得注意的是,当模板更改时,让Flask重新启动应用程序将非常有用。我已经迷失了多少次我不喜欢模板中的标记,却因为看不到任何更改而感到困惑,只是发现该应用程序仍在使用旧版本
Compose 模板文件 模板文件是使用 Compose 的核心,涉及到的指令关键字也比较多。但大家不用担心,这里面大部分指令跟 docker run 相关参数的含义都是类似的。 默认的模板文件名称为 docker-compose.yml,格式为 YAML 格式。 version: "3"services: webapp: image: examples/web ports: