gpt4 book ai didi

templates - 如何从 Jinja 2 模板获取当前变量列表?

转载 作者:行者123 更新时间:2023-12-03 10:56:08 25 4
gpt4 key购买 nike

如果我像这样返回 Jinja2 模板:return render_response('home.htm', **context)
那么如何从模板中获取上下文中的变量列表?

最佳答案

从技术上讲,因为上下文不是作为命名字典传递的,所以需要做一些工作来从模板内部生成上下文变量的列表。这是可能的。

  • 定义一个 Jinja context function返回 jinja2.Context 对象,它本质上是一个全局变量/函数的字典
  • 使该函数在全局命名空间中可用;即 jinja2.Environment 或 jinja2.Template 全局字典
  • 可选地,从上下文中过滤对象;例如,使用 callable()跳过 Jinja 的默认全局辅助函数(范围、连接器等)。这可以在上下文函数或模板中完成;最有意义的地方。

  • 例子:
    >>> 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('home.htm', context=context)使其他解决方案起作用。]

    关于templates - 如何从 Jinja 2 模板获取当前变量列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3398850/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com