Django模板中for循环传递变量至href URL参数失效问题
问题解决:Django模板for循环生成的URL链接无效
你的问题出在模板中{% url %}标签的写法上:在for循环里,你错误地用'{{person}}'作为参数传递给url标签,这会让Django将{{person}}当作字符串字面量处理,而不是解析模板变量person的值,最终生成的URL是错误的(比如会变成/person/{{person}}/,而不是预期的/person/logan/)。
修正后的模板代码
<h2>works now</h2> {% for person in people %} <a href="{% url 'person' person %}">{{person}}</a> {% endfor %} <h2>works</h2> <a href="{% url 'person' 'logan' %}">logan</a> <a href="{% url 'person' 'paul' %}">paul</a> <a href="{% url 'person' 'nicola' %}">nicola</a>
原因说明
- 手动编写的链接有效,是因为你直接传递了字符串字面量(比如
'logan'),Django能正确匹配URL路由中的<str:name>参数。 - 在for循环中,你需要直接传入模板变量
person,不需要额外的{{}}包裹,也不需要加引号——Django的{% url %}标签会自动解析变量并生成正确的URL。
验证一下,修正后页面源码中的URL会和手动编写的格式一致,都指向正确的用户页面。
内容的提问来源于stack exchange,提问作者logan_9997
相关产品推荐
相关产品推荐

