Django编辑/删除功能出现404错误,请求路径不匹配问题求助
问题分析与解决
从你提供的404错误信息和URL配置来看,问题很明确:
你的编辑、删除功能的URL规则要求必须传入整数类型的id参数,但你发起的请求是http://127.0.0.1:8000/edit/,没有携带任何id值,导致Django找不到匹配的URL规则,返回404。
具体原因
看你的urls.py配置:
path("edit/<int:id>/", views.edit), path("delete/<int:id>/", views.delete),
这里的<int:id>是Django的URL路径转换器,它要求URL必须是edit/[数字]/或delete/[数字]/的格式(比如edit/1/、delete/3/),才会匹配到对应的视图函数。而你当前请求的edit/缺少了必要的id部分,自然匹配失败。
解决方法
- 修正前端请求链接:
检查页面中触发编辑/删除功能的链接,确保每个链接都带上了对应数据的id。比如在Django模板中,正确的写法可以是:- 使用URL反向解析(推荐):先给URL规则命名
模板里写:# urls.py中修改规则,添加name参数 path("edit/<int:id>/", views.edit, name="edit"), path("delete/<int:id>/", views.delete, name="delete"),<a href="{% url 'edit' item.id %}">编辑</a> <a href="{% url 'delete' item.id %}">删除</a> - 或者直接拼接路径:
<a href="/edit/{{ item.id }}/">编辑</a> <a href="/delete/{{ item.id }}/">删除</a>
- 使用URL反向解析(推荐):先给URL规则命名
- 如果确实需要无id的编辑页面(不推荐,因为已有create功能):
可以额外添加一条不带参数的URL规则,但要注意放在带参数规则的后面,避免覆盖:path("edit/<int:id>/", views.edit), path("edit/", views.edit), # 新增无参数规则
内容的提问来源于stack exchange,提问作者user14556999
相关产品推荐
相关产品推荐

