如何在Django中正确链接带参数的urlpattern?
Django URL反向解析带参数的正确用法
核心问题根源
你的URL配置定义了带<str:title>参数的路径,反向解析时必须传入对应的参数,否则会触发"Reverse for ... with no arguments not found"错误。
针对最初的editpage场景
错误写法:
{% url 'editpage' %}:未传必填的title参数{% url 'editpage' title='{{ title }}' %}:模板变量不需要嵌套{{}},直接引用变量名即可
正确写法:
<a href="{% url 'editpage' title=title %}">{{ title }}</a>
或者更简洁的位置参数写法(仅适用于URL参数唯一且顺序匹配的场景):
<a href="{% url 'editpage' title %}">{{ title }}</a>
针对补充的article场景
从你提供的代码看,写法本身合规,若仍报错,排查以下几点:
- 检查
util.list_entries()返回值类型:确保返回的是字符串列表,若返回的是对象,需提取对应属性,比如entry.title - 检查URL命名空间:如果app的URL是通过项目根URL的
include引入且指定了namespace,反向解析时需加上命名空间:{% url 'your_app_namespace:article' title=entry %} - 验证参数名一致性:URL配置中的参数名、视图函数的参数名必须完全一致(大小写敏感)
手动验证方法
可以在视图中测试反向解析,确认是否能生成正确URL:
from django.urls import reverse def index(request): # 测试生成指定title的URL test_url = reverse('article', kwargs={'title': 'TestEntry'}) print(test_url) # 正常应输出 /wiki/TestEntry return render(request, "encyclopedia/index.html", { "entries": util.list_entries() })
内容的提问来源于stack exchange,提问作者katle
相关产品推荐
相关产品推荐

