能否使用单个with模板标签为组合生成的变量id赋值?
问题解答
可以通过单个内置with标签实现需求,不需要自定义模板标签,你的写法错误在于两个关键点:
with标签内部赋值时不需要用{{ }}包裹变量/表达式,模板会直接解析等号右侧的内容- 直接写
-会被解析为算术减法,字符串拼接必须用Django内置的add过滤器,同时要注意把数值类型的suggestion.pk转为字符串后再拼接
正确的写法示例:
{% with id=key|slice:":4"|add:"-"|add:suggestion.pk|stringformat:"d" %} {{ id }} {% endwith %}
代码解释
key|slice:":4":对key进行前4位切片处理|add:"-":将切片后的字符串与-拼接|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
相关产品推荐
相关产品推荐

