【问题标题】:viewflow.io: How can I present a custom form for gathering input for a specific task?viewflow.io:如何呈现自定义表单以收集特定任务的输入?
【发布时间】:2015-02-23 07:49:48
【问题描述】:

我想在用户注册过程中使用 ViewFlow(请参阅 http://viewflow.io/),在此过程中我要求输入用户的密码(以及用于确认的密码 2)。我不想存储普通密码,但我想立即创建用户并分配密码,而不是将该数据存储在进程中。

【问题讨论】:

    标签: python django workflow django-viewflow


    【解决方案1】:

    您不必将所有原始数据都存储在流程模型中。流程模型是所有流程相关数据的根条目。只需将 ForeignKey 添加到您自定义 Process 模型中的用户

    from django.contrib.auth.models import User
    from viewflow.models import Process
    
    class NewUserProcess(Process):
        user = models.ForeignKey(User, blank=True, null=True)
    

    对于表单处理,viewflow 不会向标准 django 添加任何新内容。像往常一样,您可以使用基于 django 标准类的视图或基于普通功能的视图,以及您需要的任何表单处理代码。以下是基于功能的视图的示例:

    from viewflow import flow
    from viewflow.base import Flow
    from viewflow.flow import flow_start_view
    
    
    class NewUserFlow(Flow):
         registration = flow.StartView(registraton_view).Next(...)
    
    
    @flow_start_view
    def registraton_view(request, activation):
         activation.prepare(request.POST or None, user=request.user)
         form = RegistrationForm(request.POST or None)
    
         if form.is_valid():
             activation.process.user = form.save()
             activation.done()
             return redirect(...)
    
         return render(request, 'registration.html', {
            'form': form,
            'activation': activation,
         })
    

    对于基于类的视图,您可以像往常一样指定自定义表单类:

    from viewflow.flow.views import StartFlowMixin
    
    class RegistrationView(StartFlowMixin, generic.CreateView):
        form_class = RegistrationForm
    
        def activation_done(self, form):
            self.activation.process.user = self.object
            self.activation.done()
    

    另外可以查看viewflow自定义视图demo源码-https://github.com/viewflow/cookbook/blob/master/custom_views/demo/bloodtest/views.py

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-07
      • 2015-08-13
      • 1970-01-01
      • 2013-05-04
      • 2019-09-08
      • 1970-01-01
      相关资源
      最近更新 更多