Django调用val-details视图触发NoReverseMatch反向解析错误求助
问题原因
你报错的核心原因是模板读取的变量不存在,导致传给路由的id参数为空:
- 你那个带
{% url 'val-details' val.id %}的按钮是写在profile.html里的,而profile视图传给模板的上下文里只有valid(当前用户的Validator对象查询集),根本没有名为val的变量。Django模板读取不存在的变量时会默认返回空字符串,所以反向匹配时传的参数是空值,匹配不上路由要求的数字类型id,就抛出了这个错误。 - 另外还有两个不影响本次报错但需要修正的问题:
button标签本身不支持href属性,写了也无法实现跳转,要么把按钮套进a标签,要么直接用a标签加btn样式- 你的
Validator模型里定义的__int__魔术方法没有实际作用,Django默认调用的是__str__,可以改成对应返回逻辑方便调试
修复步骤
- 修正
profile.html里的模板代码,先遍历查询集再取单个对象的id:
{% for val in valid %} <!-- 用a标签套按钮实现跳转 --> <a href="{% url 'val-details' val.id %}"> <button class="btn btn-warning">details</button> </a> {% endfor %}
- (可选)修正模型的魔术方法:
class Validator(models.Model): # 原有字段不变 def __str__(self): return self.name or str(self.id)
内容的提问来源于stack exchange,提问作者mar24n
相关产品推荐
相关产品推荐

