首页 > 解决方案 > Django - 删除按钮未重定向到正确的路径

问题描述

我正在按照教程制作待办事项列表网站。在尝试实现删除按钮时,我遇到了这个错误。

找不到页面 (404) 请求方法:GET 请求 URL: http://localhost:8000/%7B%25%20url%20 'delete'%20things.id%20%25 使用在 todo.urls 中定义的 URLconf,Django尝试了这些 URL 模式,按以下顺序: admin/ [name='home'] delete/"" [name='delete'] 当前路径 {% url 'delete' things.id %,不匹配任何这些。

相关代码: views.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')

主页.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> 

网址.py

from django.urls import path
from . import views
urlpatterns = [
    path('', views.home, name="home"),
    path('delete/<list_id>', views.delete, name="delete"),
]

标签: pythondjangoformsredirectbutton

解决方案


网址.py:

from django.urls import path
from . import views
urlpatterns = [
    path('', views.home, name="home"),
    path('delete/<int:list_id>/', views.delete, name="delete"),
]

您需要int在 url 中指定类型。

还有尾随/


推荐阅读