Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django表单向导重定向_Python_Django_Redirect_Django Formwizard - Fatal编程技术网

Python django表单向导重定向

Python django表单向导重定向,python,django,redirect,django-formwizard,Python,Django,Redirect,Django Formwizard,我有一个django表单向导。在用户进入向导之前以及在向导的4个步骤中的每一个步骤中,我想评估一个if条件以检查数据 当if条件失败时,我想退出向导并将用户重定向到起始页,其中显示一个信息块,告诉用户没有数据的问题 我已尝试在向导中放置if条件以重定向用户,但有人建议我无法在get\u context\u data()中返回重定向,因为SessionWizardView不会将该值作为响应返回 有办法解决这个问题吗 以下是我的表单向导代码: class CreateDocumentWizard(S

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

当if条件失败时,我想退出向导并将用户重定向到起始页,其中显示一个信息块,告诉用户没有数据的问题

我已尝试在向导中放置if条件以重定向用户,但有人建议我无法在get\u context\u 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')
class CreateDocumentWizard(会话向导视图):
模板名称='documents/document\u create.html'
表格列表=[
core_forms.CreateDocumentWizardForm01,
core_forms.CreateDocumentWizardForm02,
core_forms.CreateDocumentWizardForm03,
core_forms.CreateDocumentWizardForm04,
]
def get_form_kwargs(自我,步骤=无):
kwargs=super(CreateDocumentWizard,self)。获取表单(步骤)
kwargs.setdefault('user',self.request.user)
返回kwargs
def获取上下文数据(自身、表单、**kwargs):
name\u details\u count=nametails.objects.filter(user=self.request.user.count)()
#如果没有保存姓名详细信息,则重定向用户。
如果名称\u详细信息\u计数<1:
返回HttpResponseRedirect('document_start')
您可以钩住或甚至钩住
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)
class CreateDocumentWizard(会话向导视图):
...
def呈现(自,形式=无,**kwargs):
name\u details\u count=nametails.objects.filter(user=self.request.user.count)()
#如果没有保存姓名详细信息,则重定向用户。
如果名称\u详细信息\u计数<1:
返回HttpResponseRedirect('document_start')
返回super(CreateDocumentWizard,self).render(表单,**kwargs)

twil-非常感谢!那密码真管用!令人惊叹的!