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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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
Django-如何制作多页表单?_Django_Forms - Fatal编程技术网

Django-如何制作多页表单?

Django-如何制作多页表单?,django,forms,Django,Forms,我正在做一个注册过程,包括3个步骤 1 - (Getting Started), Basic Info 2 - (Checkout), Payment 3 - (Profile Details), choose user and password 我一直在盯着看,但我不确定做这件事的最佳方法是什么 我应该通过在URL上生成UUID来跟踪数据吗 http://some.com/signup/123kslk434435 http://some.com/signup/checkout/123kslk

我正在做一个注册过程,包括3个步骤

1 - (Getting Started), Basic Info
2 - (Checkout), Payment
3 - (Profile Details), choose user and password
我一直在盯着看,但我不确定做这件事的最佳方法是什么

我应该通过在URL上生成UUID来跟踪数据吗

http://some.com/signup/123kslk434435
http://some.com/signup/checkout/123kslk434435
http://some.com/signup/create-account/123kslk434435
或者我应该使用会话来执行此操作

最好的方法是什么

致以最良好的祝愿, 安德烈

这可能就是你想要的。这将为您创建一个会话(使用
SessionWizardView
),然后在工作流结束时向您展示每个已完成的表单,然后您可以根据需要处理、保存到对象等

为每个步骤创建每个表单,如下所示:

from django import forms

class BasicInfoForm(forms.Form):
    info_field_1 = forms.CharField(max_length=100)
    ...

class CheckoutForm(forms.Form):
    checkout_field_1 = forms.CharField(max_length=100)

...
然后创建视图,一旦表单全部完成,视图将处理表单。最后一定要重定向

from django.http import HttpResponseRedirect
from django.contrib.formtools.wizard.views import SessionWizardView

class SignupWizard(SessionWizardView):
    def done(self, form_list, **kwargs):
        (process each of your forms, which are contained in form list)
        return HttpResponseRedirect('/page-to-redirect-to-when-done/')
然后将表单与urlconfig中的视图连接起来

urlpatterns = [
    url(r'^contact/$', ContactWizard.as_view([BasicInfoForm, CheckoutForm, ...]))
]

请参阅有关创建模板、如何处理表单列表等的文档。

如果您先执行步骤3(创建配置文件),然后可以创建一个Django用户,然后让他登录,这意味着您可以跨多个表单跟踪该用户。是否有兴趣更改订单,或者是否有要求按此顺序进行操作?嗨,鲍勃!工作流应按此顺序进行。我已经阅读了更多关于这个主题的文章,我认为最好的方法是使用cookie或者将cookie与URL技巧结合起来。我错了吗?