求助:Django项目使用非硬编码URL匹配时出现NoReverseMatch错误
解决Django中NoReverseMatch异常的问题
嘿,我来帮你搞定这个困扰你的NoReverseMatch异常!问题出在你模板里的URL标签写法上,咱们一步步理清楚:
错误原因分析
你在模板里写的 <a href="{% url 'experiments:1' %}">list</a> 有两个关键问题:
experiments:后面应该跟你在experiments/urls.py中定义的URL名称(也就是name='showExperiments'里的showExperiments),而不是直接写参数值1;- 这个URL规则需要接收一个
experimentId参数,你得把参数正确传递给url标签,而不是嵌在命名空间后面。
正确的写法
根据你的需求,要跳转到experiments/1,模板里的URL标签应该这么写:
<a href="{% url 'experiments:showExperiments' 1 %}">list</a>
如果你的参数是来自上下文的变量(比如某个experiment对象的id),可以改成这样:
<a href="{% url 'experiments:showExperiments' experiment.id %}">list</a>
再确认你的URL配置
你的experiments/urls.py配置是没问题的:
app_name = 'experiments'正确设置了应用命名空间;path('<int:experimentId>', views.showExperiments, name='showExperiments')正确捕获了整数类型的experimentId参数,并给这个URL规则命名为showExperiments。
这样修改后,应该就能正常跳转到目标URL啦!
内容的提问来源于stack exchange,提问作者White Dog
相关产品推荐
相关产品推荐

