python-3.x - JinJa 模板中的全局 url_for
问题描述
我将 base_template 读为
Example 3-10. templates/base.html: favicon definition
#+BEGIN_SRC html
{% block head %}
{{ super() }} <!-- preserve the original contents -->
<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}"
type="image/x-icon">
<link rel="icon" href="{{ url_for('static', filename='favicon.ico') }}"
type="image/x-icon">
{% endblock %}
#+END_SRC
和视图功能:
from datetime import datetime
from flask import Flask, render_template
from flask_bootstrap import Bootstrap
from flask_moment import Moment
app = Flask(__name__)
bootstrap = Bootstrap(app)
moment = Moment(app)
..
@app.route('/')
def index():
return render_template('index.html',
current_time=datetime.utcnow())
至于url_for
没有传递给上下文的index
,怎么能直接在模板中使用呢。
搜索 JinJia2 docs 因此没有找到url_for
关键字,实际上是从顶层导入的
In [1]: from flask import url_for
In [2]:
解决方案
Context Processor
充当 HTML 和 Python 之间的桥梁,您可以将信息从视图函数传递到 HTML。
来自 Flask 文档
为了将新变量自动注入到模板的上下文中,Flask 中存在上下文处理器。上下文处理器在模板渲染之前运行,并且能够将新值注入到模板上下文中。上下文处理器是一个返回字典的函数。
@app.context_processor
def inject_user_last_name():
return {last_name=user.last_name}
现在您可以访问last_name
模板中的 ,而无需将 last_name 传递给每个render_template
.
这是参考的默认标准上下文变量列表。
- 配置
- 要求
- 会议
- G
- url_for
- get_flashed_messages
推荐阅读
- database - 记录中的所有字段都没有映射到 apache-nifi 列
- android - 有什么方法可以从android开发中的快速api响应url加载图像
- r - R - 给定一个概率向量,如何找到一个阈值,使得恰好 n 个元素被分类为正数?
- python - 当我尝试通过单击图像按钮打开文件选择器时发生错误
- reactjs - react create-app typescript compilerOptions file like angular
- python - 解析文件以创建字典
- reactjs - 使用 useSelector react-redux hook 重新选择 - 未定义状态
- flutter - Flutter - 如何对齐文本和图像小部件?
- php - Preg_match_all() - 正则表达式太大
- java - 从 Web 应用程序与文件服务器通信的正确方法