django 表单向导重定向
django form wizard redirect
我有一个 Django 表单向导。在用户进入向导之前以及向导的 4 个步骤中的每一个步骤中,我都想评估 if 条件以检查数据。
当 if 条件失败时,我想退出向导并将用户重定向到起始页,其中显示一个信息块,告诉用户没有数据的问题。
我已经尝试在向导中放置 if 条件来重定向用户,但我被告知我不能return get_context_data() 中的重定向,因为 SessionWizardView 不会 return 该值作为响应 。
有办法解决这个问题吗?
这是我的表单向导代码:
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)
我有一个 Django 表单向导。在用户进入向导之前以及向导的 4 个步骤中的每一个步骤中,我都想评估 if 条件以检查数据。
当 if 条件失败时,我想退出向导并将用户重定向到起始页,其中显示一个信息块,告诉用户没有数据的问题。
我已经尝试在向导中放置 if 条件来重定向用户,但我被告知我不能return get_context_data() 中的重定向,因为 SessionWizardView 不会 return 该值作为响应 。
有办法解决这个问题吗?
这是我的表单向导代码:
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)