Python Django DeleteView不带确认模板
我在模板中使用Django DeleteView,并创建了一个url和视图。Python Django DeleteView不带确认模板,python,django,Python,Django,我在模板中使用Django DeleteView,并创建了一个url和视图。 是否可以跳过加载_确认_删除模板的过程并立即发布删除操作。是的,只需更改下一个参数。在返回响应中,确保传入的字典具有以下内容:{'next':'/}/'},确保在添加next参数之前提交更改。您可能需要更改视图的get和post功能。DeleteView响应post和get请求,get请求显示确认模板,而post删除实例 您可以发送POST请求,无需确认,格式如下: <form method="POST" act
是否可以跳过加载_确认_删除模板的过程并立即发布删除操作。是的,只需更改下一个参数。在返回响应中,确保传入的字典具有以下内容:
{'next':'/}/'}
,确保在添加next
参数之前提交更改。您可能需要更改视图的get
和post
功能。DeleteView
响应post
和get
请求,get
请求显示确认模板,而post
删除实例
您可以发送POST
请求,无需确认,格式如下:
<form method="POST" action="{% url "your_delete_url_name" %}">
{% csrf_token %}<input type="submit" value="DELETE">
</form>
path('posts/delete/<int:pk>/', PostDeleteView.as_view(), name='post_delete'),
或者您可以在
DeleteView
中重新定义get()
方法:
class YourDeleteView(DeleteView):
model = YourModel
success_url = '<success_url>'
def get(self, request, *args, **kwargs):
return self.post(request, *args, **kwargs)
class YourDeleteView(DeleteView):
模型=你的模型
成功\u url=“”
def get(自我、请求、*args、**kwargs):
返回self.post(请求,*args,**kwargs)
但是要小心,确保这不会影响其他功能。您所要做的就是覆盖删除视图的
get\u success\u url
方法。然后它将直接从数据库中删除该对象。例如:
class YourView(DeleteView):
model = YourModel
def get_success_url(self):
return reverse('your_redirect_view')
或者,您只能通过将请求直接路由到类的
delete
方法来允许HTTP请求方法delete
from django.views.generic import DeleteView
from django.http import HttpResponseForbidden
class PostDeleteView(DeleteView):
model = Post
http_method_names = ['delete']
def dispatch(self, request, *args, **kwargs):
# safety checks go here ex: is user allowed to delete?
if request.user.username != kwargs['username']:
return HttpResponseForbidden()
else:
handler = getattr(self, 'delete')
return handler(request, *args, **kwargs)
def get_success_url(self):
username = self.kwargs.get('username')
success_url = str(reverse_lazy('post:user_home', kwargs={'username': username}))
return success_url
假设您的URL如下所示:
<form method="POST" action="{% url "your_delete_url_name" %}">
{% csrf_token %}<input type="submit" value="DELETE">
</form>
path('posts/delete/<int:pk>/', PostDeleteView.as_view(), name='post_delete'),
post
只需调用delete
和delete
即可获取对象和成功URL,删除对象,然后重定向到您提供的成功URLpk\u url\u kwarg='pk'
是我在url中显示
部分的原因。我没有任何get或post视图,所有内容都是使用DeleteViewOK生成的。好吧,我认为如果不更改post
函数,您就无法更改它,而且从1.5开始(据我所知)没有办法做到这一点查看文档:。如果您不知道如何在CBV中使用get()
和post()
函数,那么我建议您了解它们。此答案没有回答问题