繁体   English   中英

django表单向导重定向

[英]django form wizard redirect

我有一个django表单向导。 在用户进入向导之前以及在向导的4个步骤中的每个步骤中,我要评估一个if条件来检查数据。

当if条件失败时,我想退出向导并将用户重定向到开始页面,在该页面上显示一个信息块,告诉用户无数据的问题。

我曾尝试在向导中放置if条件来重定向用户,但是我被告知我不能在get_context_data()中返回重定向,因为SessionWizardView不会将该值作为响应返回

有没有解决这个问题的方法?

这是我的表单向导代码:

class CreateDocumentWizard(SessionWizardView):
    template_name = 'documents/document_create.html'

    form_list = [
        core_forms.CreateDocumentWizardForm01,
        core_forms.CreateDocumentWizardForm02,
        core_forms.CreateDocumentWizardForm03,
        core_forms.CreateDocumentWizardForm04,
    ]

    def get_form_kwargs(self, step=None):
        kwargs = super(CreateDocumentWizard, self).get_form_kwargs(step)
        kwargs.setdefault('user', self.request.user)
        return kwargs

    def get_context_data(self, form, **kwargs):

        name_details_count = NameDetails.objects.filter(user=self.request.user).count()

        # redirect user if no name details held.
        if name_details_count < 1:
            return HttpResponseRedirect('document_start')

您可以挂接到render()甚至get()/post()/dispatch()方法中:

class CreateDocumentWizard(SessionWizardView):

    ...

    def render(self, form=None, **kwargs):
        name_details_count = NameDetails.objects.filter(user=self.request.user).count()

        # redirect user if no name details held.
        if name_details_count < 1:
            return HttpResponseRedirect('document_start')

        return super(CreateDocumentWizard, self).render(form, **kwargs)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM