Django出现NoReverseMatch错误无法查看客户订单详情如何解决
问题排查与解决
错误根因
报错是customer.html模板内的循环变量引用错误导致的:
你在遍历订单时定义的循环变量为order:
{% for order in orders_key %}
但在拼接更新、删除订单路由时,错误使用了不存在的变量orders来取ID,导致orders.id为空值,路由反转时缺少必要的pk参数,触发NoReverseMatch异常。
修复方法
修改customer.html中订单表格里的更新、删除按钮链接部分:
将原来的代码:
<td><a class="btn btn-sm btn-info" href="{% url 'update_order' orders.id %}">Update</a></td> <td><a class="btn btn-sm btn-danger" href="{% url 'delete_order' orders.id %}">Delete</a></td>
替换为:
<td><a class="btn btn-sm btn-info" href="{% url 'update_order' order.id %}">Update</a></td> <td><a class="btn btn-sm btn-danger" href="{% url 'delete_order' order.id %}">Delete</a></td>
修改后即可正常访问客户订单页面。
其他可选优化点(不影响当前报错解决)
- 视图中表单校验的
is_valid是方法,需要加括号调用,否则校验逻辑不会生效:
把if form_value.is_valid:修改为if form_value.is_valid(): - Product模型中的字段名
prince为拼写错误,建议修正为price
内容的提问来源于stack exchange,提问作者Lewcamps
相关产品推荐
相关产品推荐

