python - Django 表单向导重定向

标签 python django redirect django-formwizard

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

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

我尝试在向导中放置 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)

关于python - Django 表单向导重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34278740/

相关文章:

python - 使用 VirtualEnv 集中安装 Django

html - 经典 View /移动 View 切换?

javascript - 我们可以用 javascript 做 302 重定向吗?

python - 调整图像大小时,面部和眼睛检测结果不明确

python - 使用分隔符连接数据框的列

javascript - 使用 Javascript 在单独的表单页面上使用图像文件名更新隐藏的表单字段

python - 为什么在 chrome 浏览器上无法使用 Seeking 属性??但它可以在 IE 上运行

php - 禁用 wp-admin 到 wp-login 规范重定向(wordpress)

python - 谷歌应用引擎 : traffic monitoring

python - 过滤元组列表以包含最大值和最小值