Django模板语言:如何将JSON字段作为URL参数传入url标签?
Django模板中正确传递变量到{% url %}标签的方法
你出错的核心原因是在{% url %}标签里多余地用了{{}}包裹变量,Django的模板标签内部可以直接引用模板变量,不需要再套一层双大括号。
正确的写法分两种常见场景:
场景1:URL使用位置参数
如果你的URL配置是位置参数形式(比如参数按顺序匹配):
# urls.py path('some-url/<int:param>/', views.some_view, name='some-url')
对应的模板代码应写成:
{% for row in rows %} <tr> <td>{{ row.a }}</td> <td><a href="{% url 'some-url' row.b %}">{{ row.b }}</a></td> </tr> {% endfor %}
场景2:URL使用关键字参数
如果希望通过参数名明确传递(可读性更强,尤其当URL有多个参数时):
# urls.py path('some-url/<int:param>/', views.some_view, name='some-url')
模板代码可以写成:
{% for row in rows %} <tr> <td>{{ row.a }}</td> <td><a href="{% url 'some-url' param=row.b %}">{{ row.b }}</a></td> </tr> {% endfor %}
简单来说:在{% url %}标签内部传递模板变量时,直接写变量名row.b即可,不需要写成{{ row.b }}——后者会被标签当成普通字符串处理,根本无法解析出变量的实际值,自然生成不了正确的URL。
内容的提问来源于stack exchange,提问作者Guitar Geek
相关产品推荐
相关产品推荐

