You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jinja2中拼接字符串取值输入及读取字典填充模板

在Jinja2里处理字典取值与字符串拼接的实用方案

我来帮你梳理下怎么在Jinja2模板里搞定这个answers字典的取值和字符串拼接需求,分几种常见场景来介绍:

1. 直接读取已知键的取值

如果已经明确要取的键名,用点语法或者方括号语法都很方便:

<!-- 点语法,简洁直观 -->
Observation 1: {{ answers.obs_1 }}
<!-- 方括号语法,适合键名带特殊字符的情况 -->
Observation 1: {{ answers['obs_1'] }}

像obs_1有值jack,就会输出Observation 1: jack;而值为None的键(比如obs_18),Jinja2默认会渲染成空字符串,要是想给这些空值加个默认提示,接着看下面的方法。

2. 给None值设置默认显示文本

碰到值为None的情况,可以用default过滤器来替换成友好的提示:

Observation 18: {{ answers.obs_18 | default('未提供输入') }}

这样obs_18就会显示未提供输入,而不是空着。

3. 动态拼接键名来取值

要是你需要批量处理类似obs_1到obs_21、rot1到rot21这类有规律的键,就可以用Jinja2的字符串拼接符~来动态生成键名:

{% for num in range(1, 22) %}
  Observation {{ num }}: {{ answers['obs_' ~ num] | default('未提供输入') }}
{% endfor %}

这里'obs_' ~ num会把字符串和数字拼接成完整的键名(比如obs_1、obs_2),然后从字典里取出对应的值,循环就能批量处理所有观测项。

处理旋转项rot系列也是一样的逻辑:

{% for num in range(1, 22) %}
  Rotation {{ num }}: {{ answers['rot' ~ num] | default('未提供输入') }}
{% endfor %}

4. 遍历字典所有键值对(按需排除特定键)

如果想一次性遍历整个answers字典,又不想显示_id这类字段,可以这么写:

{% for key, value in answers.items() %}
  {% if key != '_id' %}
    {{ key }}: {{ value | default('未提供输入') }}
  {% endif %}
{% endfor %}

这样会输出除了_id之外的所有键值对,空值也会被替换成默认提示。

小提醒

  • Jinja2里字符串拼接一定要用~,别用+——+只能用来加数字,拼字符串会报错哦
  • 对于_id那个ObjectId类型的值,直接渲染会显示ObjectId('5...'),如果只需要它的字符串形式,可以用{{ answers._id | string }}或者{{ answers._id.__str__() }}来转换。

内容的提问来源于stack exchange,提问作者David Borges

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:13:40