方法不允许 (POST) 使用删除视图



我是 Django 的新手,我使用基于类的视图向我的餐厅列表添加删除选项,但是当我单击删除按钮时,我看到一个空白屏幕并在控制台中收到以下错误"方法不允许(开机自检):"

下面是我的代码

views.py

from __future__ import unicode_literals
from django.db.models import Q
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render, get_object_or_404
from django.views import View
from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic import TemplateView, ListView, DetailView, 
CreateView,DeleteView
from django.urls import reverse_lazy
class RestaurantDeleteView(DeleteView):
model = RestaurantLocation
success_url = reverse_lazy('restaurants:list')

urls.py

from django.conf.urls import url, include
from .views import (
     RestaurantListView,
     RestaurantDetailView,
     RestaurantCreateView,
     RestaurantDeleteView,
   )
urlpatterns = [
    url(r'^create/$', RestaurantCreateView.as_view(), name= 'create'),
    url(r'^$',RestaurantListView.as_view(), name= 'list'),
    url(r'^(?P<slug>[w-]+)/$',RestaurantDetailView.as_view(),        
          name="detail"),
    url(r'^(?P<slug>[w-]+)/delete/$', RestaurantDeleteView.as_view(), 
     name="restaurant-delete"),
   ]

删除.html

<form method="post" action="" >{% csrf_token %}
<p>Are you sure you want to delete <strong> {{ obj }}</strong>?</p>
<input type="submit" value="DELETE" />
</form>
删除.html中的

方法当前为"t",更改为"post",看看是否有效。

您的表单操作指向/的根 URL。此路由由RestaurantListViews确定,并通过GET方法访问。在您的示例中,您尝试使用 POST 访问它,因此您会收到错误。

若要使用RestaurantDeleteView请将窗体中的 action 属性更改为指向现有餐厅,例如:

<form method="post" action="{your_existing_restaurant_slug}/delete" >
    {% csrf_token %}
    ...
...

最新更新