如果我像这样返回 Jinja2 模板:return render_response('home.htm', **context)
那么如何从模板中获取上下文中的变量列表?
从技术上讲,由于上下文不是作为命名字典传递的,因此需要做一些工作才能从模板内部生成上下文变量列表。但这是可能的。
定义一个Jinja 上下文函数 https://jinja.palletsprojects.com/en/2.10.x/api/#jinja2.contextfunction返回 jinja2.Context 对象,它本质上是全局变量/函数的字典
使该函数在全局命名空间中可用;即 jinja2.Environment 或 jinja2.Template 全局字典
(可选)从上下文中过滤对象;例如,使用callable()
跳过 Jinja 的默认全局辅助函数(范围、连接器等)。这可以在上下文函数或模板中完成;无论它最有意义。
Example:
>>> import jinja2
>>>
>>> @jinja2.contextfunction
... def get_context(c):
... return c
...
>>> tmpl = """
... {% for key, value in context().items() %}
... {% if not callable(value) %}
... {{ key }}:{{ value }}
... {% endif %}
... {% endfor %}
... """
>>>
>>> template = jinja2.Template(tmpl)
>>> template.globals['context'] = get_context
>>> template.globals['callable'] = callable
>>>
>>> context = {'a': 1, 'b': 2, 'c': 3}
>>>
>>> print(template.render(**context))
a:1
c:3
b:2
[或者,致电render_response
with ('home.htm', context=context)
使其他解决方案发挥作用。]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)