在django中表单向导的第2/3步中验证/注册用户

时间:2014-12-18 00:32:16

标签: django django-forms

我想通过以下方式收集用户信息:

  1. 首先询问显示表格的一般信息
  2. 请她注册/登录
  3. 询问一些免费信息
  4. 最后将user分配给所有这些信息并将其保存到db
  5. 我到目前为止发现只能在视图功能上使用LoginRequiredMixin / login_required来保护向导,例如:

    @login_required
    def wizard(request, **kwargs):
        forms = (
                 ('painter', PainterForm),
                 # it should show a login page here
                 ('outcome', PainterOutcomeForm),
                 )
        wizard = PainterWizard.as_view(forms, url_name='wizard_step')
        return wizard(request, **kwargs)
    

    其中,将转换为步骤2,步骤1,步骤3& 4向导。

    有解决方案吗?我很茫然地找到解决这个问题的方法,浪费了很多时间。谢谢!

1 个答案:

答案 0 :(得分:2)

您可以覆盖dispatch方法,并在检查当前步骤后返回PermissionDenied

请记住,您需要先运行父级,因为dispatch正在填充所有需要的向导数据。

伪代码:

def dispatch(self, request, *args, **kwargs):
    response = super(MyWizardView, self).dispatch(request, *args, **kwargs)

    if self.steps.current == '2'
        if not request.user.is_authenticated():
            raise PermissionDenied

    return response