首页 > 解决方案 > 不允许的方法 (POST):/cbvdelete/5/ 不允许的方法:/cbvdelete/5/

问题描述

这是我运行此代码时遇到的错误,这是我遇到的错误

我无法运行此代码

viwes.py

from django.shortcuts import render, redirect
from django.urls import reverse_lazy, reverse

from . models import Task
from . forms import Taskform
from django.views.generic import ListView
from django.views.generic.detail import DetailView
from django.views.generic.edit import UpdateView,DeleteView



class Tasklistview(ListView):
    model = Task
    template_name = 'home.html'
    context_object_name = 'task'

class Detailview(DetailView):
    model=Task
    template_name = "details.html"
    context_object_name = 'task'

class Updateview(UpdateView):
    model = Task
    template_name = "update.html"
    context_object_name = "task"
    fields = ('name', 'priority', 'date')
    def get_success_url(self):
        return reverse_lazy('todoapp:cbvdetail',kwargs={'pk':self.object.id})

class Deleteview(DetailView):
    model = Task
    template_name = 'delete.html'
    success_url = reverse_lazy('todoapp:home')

网址.py

    from django.urls import path
    from . import views
    app_name='todoapp'
    urlpatterns = [
        path('',views.home,name='home'),
        path('delete/<int:id>/',views.delete,name='delete'),
        path('edit/<int:id>/',views.update,name='update'),
        path('cbvhome/',views.Tasklistview.as_view(),name='home'),
        path('cbvdetail/<int:pk>/',views.Detailview.as_view(),name='cbvdetail'),
        path('cbvupdate/<int:pk>/',views.Updateview.as_view(),name='edit'),


     ]

当我运行此代码时出现错误此页面现在无法运行我无法运行此代码 gngnitgbnugrujvnnvtvnviuvntnvtvitu

标签: django

解决方案


您是Deleteview从 a继承的DetailView,而不是 a DeleteView,因此出现错误:

from django.views.generic import DeleteView

class Deleteview(DeleteView):
    model = Task
    template_name = 'delete.html'
    success_url = reverse_lazy('todoapp:home')

然而,我强烈建议不要给你的视图命名Deleteview,因为它很容易与 Django 内置的基于类的视图混淆。通常模型是在名称中指定的,所以TaskDeleteView不是Deleteview

class TaskDeleteView(DeleteView):
    model = Task
    template_name = 'delete.html'
    success_url = reverse_lazy('todoapp:home')

推荐阅读