删除.html中的
我是 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>
方法当前为"t",更改为"post",看看是否有效。
您的表单操作指向/
的根 URL。此路由由RestaurantListViews
确定,并通过GET
方法访问。在您的示例中,您尝试使用 POST
访问它,因此您会收到错误。
若要使用RestaurantDeleteView
请将窗体中的 action
属性更改为指向现有餐厅,例如:
<form method="post" action="{your_existing_restaurant_slug}/delete" >
{% csrf_token %}
...
...