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

能否使用单个with模板标签为组合生成的变量id赋值?

问题解答

可以通过单个内置with标签实现需求,不需要自定义模板标签,你的写法错误在于两个关键点:

  • with标签内部赋值时不需要用{{ }}包裹变量/表达式,模板会直接解析等号右侧的内容
  • 直接写-会被解析为算术减法,字符串拼接必须用Django内置的add过滤器,同时要注意把数值类型的suggestion.pk转为字符串后再拼接

正确的写法示例:

{% with id=key|slice:":4"|add:"-"|add:suggestion.pk|stringformat:"d" %}
    {{ id }}
{% endwith %}

代码解释

  1. key|slice:":4":对key进行前4位切片处理
  2. |add:"-":将切片后的字符串与-拼接
  3. |add:suggestion.pk|stringformat:"d":先把suggestion.pk(整数类型)格式化为十进制字符串,再拼接到前面的结果上

如果你的Django版本在3.2及以上,也可以用format过滤器更直观地完成拼接:

{% with id=key|slice:":4"|format:"-{0}" suggestion.pk %}
    {{ id }}
{% endwith %}

这里format:"-{0}"会把suggestion.pk作为第一个参数填充到占位符{0}的位置,实现字符串拼接。

内容的提问来源于stack exchange,提问作者curious-broccoli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 00:11:07