You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django路由Reverse for 'receipt'报错 产品ID详情页跳转失败

报错原因

  • inventory.html模板中变量引用错误:inventory视图仅向该模板传递了items变量,模板遍历items时的单个实例变量为i,但跳转链接中错误使用了不存在的products变量取id,导致生成url时参数为空,触发arguments '('',)'的报错。
  • receipt.html模板逻辑错误:products视图传递给该模板的products是单个模型实例,不属于可遍历的查询集,代码中多余的for循环会导致页面渲染报错。
  • 可优化点:url配置中pk参数类型为字符串,和模型id的数字类型不匹配,可能出现非数字参数查询数据库的异常。

修复方案

1. 替换inventory.html的链接参数

将链接中的products.id替换为循环变量i.id:

{% for i in items %}
<tr>
    <td>{{i.Name_of_the_Material_per_specification}}</td>
    <td>{{i.Site_Material_Code }}</td>
    <td><a class="btn btn-sm btn-info" href="{% url 'receipt' i.id %}">View</a></td>
</tr>
{% endfor %}

2. 清理receipt.html的多余逻辑

删除不必要的csrf_token和for循环,直接输出实例属性:

<div class="col-md">
    <div class="card card-body">
        <p>Name: {{products.Name_of_the_Material_per_specification}}</p>
    </div>
</div>

3. (可选)优化urls.py的参数类型

将pk的参数类型修改为int,过滤非法请求:

from django.contrib import admin
from django.urls import path, include
from inventory import views

urlpatterns = [
    path('main', views.inventory, name='inventory'),
    path('receipt/<int:pk>/', views.products, name="receipt")
]

内容的提问来源于stack exchange,提问作者Nick Rizzolo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 12:36:04