gpt4 book ai didi

python - 我如何在 Jinja 中创建一个包含模板后面的值的标签?

转载 作者:太空宇宙 更新时间:2023-11-03 15:29:42 25 4
gpt4 key购买 nike

我正在使用 Jinja2,我正在尝试创建一些协同工作的标签,这样如果我有一个看起来像这样的模板:

{{ my_summary() }}
... arbitrary HTML ...
{{ my_values('Tom', 'Dick', 'Harry') }}
... arbitrary HTML ...
{{ my_values('Fred', 'Barney') }}

我最终会得到以下结果:

This page includes information about <b>Tom</b>, <b>Dick</b>, <b>Harry</b>, <b>Fred</b>, and <b>Barney</b>.
... arbitrary HTML ...
<h1>Tom, Dick, and Harry</h1>
... arbitrary HTML ...
<h1>Fred and Barney</h1>

换句话说,页面开头的 my_summary() 包含页面稍后提供的信息。它应该足够聪明,可以考虑 includeimport 语句中出现的表达式。

执行此操作的最佳方法是什么?

最佳答案

免责声明:我不了解 Jinja。

我的猜测是您无法(轻松)完成此任务。

我会建议以下替代方案:

  • 将 Tom、Dick 等值作为变量从外部传递到模板。
  • 让您的自定义标签将值作为参数。
  • 我不知道在你的情况下“外部”是什么。如果模板用于 Web 应用程序框架,“外部”可能是 Controller 方法。
  • 例如:

模板:

{{ my_summary(list1 + list2) }}... arbitrary HTML ...{{ my_values(list1) }}... arbitrary HTML ...{{ my_values(list2) }}

Controller :

def a_controller_method(request):    return render_template('templatefilename', {        'list1': ['Dick', 'Tom', 'Harry'],        'list2': ['Fred', 'Barney']})
  • 如果从外部传递值不可行,我建议您在模板顶部定义它们,如下所示:
{% set list1 = ['Dick', ...] %}{% set list2 = ['Fred', ...] %}{{ my_summary(list1 + list2) }}... arbitrary HTML ...{{ my_values(list1) }}... arbitrary HTML ...{{ my_values(list2) }}

关于python - 我如何在 Jinja 中创建一个包含模板后面的值的标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/535743/

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