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

Django实现删除功能时遭遇NoReverseMatch错误求助

解决Django删除功能的NoReverseMatch错误

核心问题诊断

你遇到的NoReverseMatch错误,是由三个关键问题导致的:

  • URL路由名称与模板引用不匹配
  • 模板传递的参数为空(web.id不存在,实际需传递关联对象的ID)
  • 视图函数的重定向写法错误

分步修复方案

1. 统一URL路由名称

urls.py中路由的name是delete_url,但模板里用的是delete-url,两者必须一致:

# urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('',views.home,name='home'),
    path('add_url',views.add_url,name='add-url'),
    path('search_url',views.search_url,name='search-url'),
    # 修正name为delete-url,和模板引用一致
    path('delete_url/<int:web>',views.delete_url,name="delete-url"),
]

2. 修正模板参数传递

从模板代码{{web.url.id}}可以看出,循环的web对象并非直接是Website实例,而是包含url属性的关联对象。因此删除按钮需要传递web.url.id而非web.id:

<!-- home.html -->
{% for web in webs_list %}
<tr>
    <th scope="row">{{web.url.id}}</th>
    <td>
        {{web.url.website}}
        <!-- 修正参数为web.url.id -->
        <a href="{% url 'delete-url' web.url.id %}" >
            <button type="button" style="float: right;" class="btn btn-outline-danger">Delete</button>
        </a>
        <!-- 其余代码不变 -->
    </td>
    <!-- 其余代码不变 -->
</tr>
{% endfor %}

3. 修复视图函数的重定向逻辑

redirect需要使用路由的name,而非直接写模板路径:

# views.py
from django.shortcuts import redirect, get_object_or_404
from .models import Website

def delete_url(request,web):
    # 用get_object_or_404避免对象不存在时的报错
    url = get_object_or_404(Website, pk=web)
    url.delete()
    # 用home路由的name重定向,而非模板路径
    return redirect('home')

(可选但推荐)改用POST请求处理删除

GET请求删除资源存在误触风险,建议改为POST方式:

  • 模板替换为表单:
<!-- home.html -->
<form action="{% url 'delete-url' web.url.id %}" method="POST" style="display: inline;">
    {% csrf_token %}
    <button type="submit" style="float: right;" class="btn btn-outline-danger">Delete</button>
</form>
  • 视图函数增加请求方法判断:
# views.py
def delete_url(request,web):
    if request.method == 'POST':
        url = get_object_or_404(Website, pk=web)
        url.delete()
    return redirect('home')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:45:25