You need to enable JavaScript to run this app. 如何在Django模板文件中声明变量?with标签赋值报错的解决方法
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django模板文件中声明变量?with标签赋值报错的解决方法

报错核心原因

触发'with' expected at least one variable assignment报错的本质是你混淆了Django模板两类语法的使用边界:

  • {{ }}双大括号仅用于输出区域的变量渲染,绝对不能嵌套在{% %}模板标签内部使用。你在with标签、if判断里嵌套的{{ }}会被模板解析器识别为普通字符串,根本无法识别到合法的变量赋值逻辑。
  • 你写的"{{object.id}}"是带引号的硬编码字符串,不是动态变量引用,解析器找不到合法的赋值源,自然抛出异常。
修正后可正常运行的代码
{% with post_id=object.id %}
  {% for detail in details %}
    {% if detail.post.id == post_id %}
      {{ detail.name }}
    {% endif %}
  {% endfor %}
{% endwith %}
关键语法提醒
  • with标签的正确赋值格式为{% with 自定义变量名=原变量路径 %},赋值的变量直接书写字段路径即可,不需要引号、不需要额外嵌套双大括号。
  • 不建议把新赋值的变量和外层已有变量重名(比如你原代码里把新变量命名为object,会覆盖视图传入的原始对象,极易引发逻辑混乱),用post_id这类语义清晰的短名更稳妥。
  • 只要是写在模板标签内部的变量引用(包括with赋值、if条件比较、for循环迭代路径),统一直接书写变量路径;仅在需要把变量内容输出到HTML页面的位置,使用{{ }}语法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.08 02:45:03