Python Django-删除按钮未重定向到正确路径

Python Django-删除按钮未重定向到正确路径,python,django,forms,redirect,button,Python,Django,Forms,Redirect,Button,我遵循一个教程,使网站的待办事项清单。在尝试实现删除按钮时,我遇到了这个错误 找不到页面(404)请求方法:获取请求 URL:'删除'%20个内容。id%20%25 Django使用todo.URL中定义的URLconf尝试了以下URL 模式,按此顺序: admin/[name='home']delete/“[name='delete']当前 路径{%url'delete'things.id%,与其中任何一个都不匹配 相关代码: 视图.py from django.shortcuts impor

我遵循一个教程,使网站的待办事项清单。在尝试实现删除按钮时,我遇到了这个错误

找不到页面(404)请求方法:获取请求 URL:'删除'%20个内容。id%20%25 Django使用todo.URL中定义的URLconf尝试了以下URL 模式,按此顺序: admin/[name='home']delete/“[name='delete']当前 路径{%url'delete'things.id%,与其中任何一个都不匹配

相关代码: 视图.py

from django.shortcuts import render, redirect
from .models import List
from .forms import ListForm
from django.contrib import messages
# Create your views here.
def home(request):
    if request.method == 'POST':
        form = ListForm(request.POST or None)

        if form.is_valid():
            form.save()
            all_items = List.objects.all
            messages.success(request, ('Item Has Been Added To List!'))
            return render(request, 'home.html', {'all_items': all_items})

    else:
        all_items = List.objects.all
        return render(request, 'home.html', {'all_items': all_items})

def delete(request, list_id):
    item = List.objects.get(pk=list_id)
    item.delete()
    messages.success(request, ('Item Has Been Deleted!'))
    return redirect('home')
from django.urls import path
from . import views
urlpatterns = [
    path('', views.home, name="home"),
    path('delete/<list_id>', views.delete, name="delete"),
]
home.html

<tr>
            <td>{{ things.item }}</td>
            <td><center>{{ things.completed }}</center></td>
            <td><center><a href = "{% url 'delete' things.id %}"> Delete</a></center></td>
</tr> 

{{things.item}
{{things.completed}}
url.py

from django.shortcuts import render, redirect
from .models import List
from .forms import ListForm
from django.contrib import messages
# Create your views here.
def home(request):
    if request.method == 'POST':
        form = ListForm(request.POST or None)

        if form.is_valid():
            form.save()
            all_items = List.objects.all
            messages.success(request, ('Item Has Been Added To List!'))
            return render(request, 'home.html', {'all_items': all_items})

    else:
        all_items = List.objects.all
        return render(request, 'home.html', {'all_items': all_items})

def delete(request, list_id):
    item = List.objects.get(pk=list_id)
    item.delete()
    messages.success(request, ('Item Has Been Deleted!'))
    return redirect('home')
from django.urls import path
from . import views
urlpatterns = [
    path('', views.home, name="home"),
    path('delete/<list_id>', views.delete, name="delete"),
]
从django.url导入路径
从。导入视图
URL模式=[
路径(“”,views.home,name=“home”),
路径('delete/',views.delete,name=“delete”),
]

url.py:

from django.urls import path
from . import views
urlpatterns = [
    path('', views.home, name="home"),
    path('delete/<int:list_id>/', views.delete, name="delete"),
]
从django.url导入路径
从。导入视图
URL模式=[
路径(“”,views.home,name=“home”),
路径('delete/',views.delete,name=“delete”),
]
您需要在url中指定
int
类型


还有尾随的
/

您需要一个正则表达式来表示一个数字即将到来

path('delete/(?P<list_id>)[\d]+)/$', views.delete, name="delete"),
path('delete/(?P)[\d]+)/$”,views.delete,name=“delete”),

请显示
views.home
的代码。我已经将其添加到了主帖子中。您不需要
路径('delete/(?P)/$',views.delete,name=“delete”),
相反?@MattCremeens错误保持不变,并说:使用todo.URL中定义的URLconf,Django尝试了这些URL模式,顺序是:admin/[name='home']delete/(?P)/$[name='delete']当前路径,{%url'delete'things.id%与任何一个都不匹配。请查看我的答案。我相信这应该可以。我编辑了答案,你还需要有尾随的“/”,django才能找到它。错误现在仍然存在,显示我所做的更改更新:这起作用了。显然,愚蠢的我,尽管只是在错误处刷新,应该重新启动程序服务器并修复错误,但我从localhost:8000重新启动,它仍然有效。错误仍然存在,现在提到的是新的URL模式。这可能与html中的href标记有关吗?在我运行服务器的cmd提示符中显示的警告