Jinja模板include语句with参数如何拼接固定字符串与变量
正确实现方案
方案1:提前声明拼接变量(最稳妥,可读性最高)
先通过set标签将拼接后的结果存为变量,再传递给include的参数:
{% set combined_type = "teacher" ~ teacher.id %} {% include 'Discret/buttons/modal.html' with type=combined_type id=teacher.id %}
方案2:括号包裹拼接表达式(无需额外声明变量)
把整个字符串拼接逻辑用括号包裹为完整表达式,直接赋值给type参数即可:
{% include 'Discret/buttons/modal.html' with type=("teacher" ~ teacher.id) id=teacher.id %}
之前写法失效原因
- Jinja 语法中仅支持用波浪号
~做字符串拼接,加号+仅用于数值求和,哪怕搭配string过滤器也无法实现字符串拼接效果 - 未加括号直接在参数位写
type="teacher"~teacher.id不生效,是因为include ... with的参数解析优先级问题,无法识别未包裹的拼接逻辑,需要用括号把整个拼接部分标记为一个完整的赋值表达式
内容的提问来源于stack exchange,提问作者Dasha
相关产品推荐
相关产品推荐

