首页 > 解决方案 > 当数据库内容删除时,如何使用 url 参数传递方法重定向到同一页面?

问题描述

我想在删除后删除数据库 content.bt utl 转到http://127.0.0.1:8004/login/delete_detail/6/ ..我如何重定向到success.html,即在同一页面中

class DeleteView(generic.TemplateView):
    template_name = 'success.html'
    success_url='/login/success'
    def get_context_data(self, *args, **kwargs):
        context = super(DeleteView,self).get_context_data(**kwargs)
        did = self.kwargs['did']
        q_obj = Quest.objects.filter(id=did)
        q_obj.delete()

标签: django

解决方案


您可以使用get_success_url方法:

from django.urls import reverse_lazy

class DeleteView(generic.TemplateView):
    template_name = 'success.html'
    success_url='/login/success'
    def get_context_data(self, *args, **kwargs):
        context = super(DeleteView,self).get_context_data(**kwargs)
        did = self.kwargs['did']
        q_obj = Quest.objects.filter(id=did)
        q_obj.delete()

    def get_success_url(self, **kwargs):         
        return reverse_lazy('delete_detail', kwargs = {'pk': self.kwargs['did']})

您也TemplateView可以使用DeleteView类:

class QuestDelete(DeleteView):
    model = Quest
    pk_url_kwarg = 'did'

    def get_success_url(self, **kwargs):         
        return reverse_lazy('delete_detail', kwargs = {'pk': self.kwargs['did']})

要使用 url 的名称,您需要将 name 参数添加到urls.py文件中的 url 模式,如下所示:

urlpatterns = [
    path('delete_detail', views.delete_detail, name='delete_detail'),
]

推荐阅读