Python Django DeleteView不带确认模板

Python Django DeleteView不带确认模板,python,django,Python,Django,我在模板中使用Django DeleteView,并创建了一个url和视图。 是否可以跳过加载_确认_删除模板的过程并立即发布删除操作。是的,只需更改下一个参数。在返回响应中,确保传入的字典具有以下内容:{'next':'/}/'},确保在添加next参数之前提交更改。您可能需要更改视图的get和post功能。DeleteView响应post和get请求,get请求显示确认模板,而post删除实例 您可以发送POST请求,无需确认,格式如下: <form method="POST" act

我在模板中使用Django DeleteView,并创建了一个url和视图。
是否可以跳过加载_确认_删除模板的过程并立即发布删除操作。

是的,只需更改下一个参数。在返回响应中,确保传入的字典具有以下内容:
{'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,删除对象,然后重定向到您提供的成功URL
pk\u url\u kwarg='pk'
是我在url中显示
部分的原因。

我没有任何get或post视图,所有内容都是使用DeleteViewOK生成的。好吧,我认为如果不更改
post
函数,您就无法更改它,而且从1.5开始(据我所知)没有办法做到这一点查看文档:。如果您不知道如何在CBV中使用
get()
post()
函数,那么我建议您了解它们。此答案没有回答问题