我正在进行一个包含3个步骤的注册过程,
1 - (Getting Started), Basic Info
2 - (Checkout), Payment
3 - (Profile Details), choose user and password
我一直在瞪眼,但我不确定这样做的最佳方法是什么。
我应该通过在网址上生成UUID来跟踪数据吗?
http://some.com/signup/123kslk434435
http://some.com/signup/checkout/123kslk434435
http://some.com/signup/create-account/123kslk434435
或者我应该使用会话吗?
最好的方法是什么?
最诚挚的问候, 安德烈
答案 0 :(得分:1)
Django Form Wizard可能就是你所追求的。这将处理为您创建会话(使用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, ...]))
]
请参阅有关创建模板的文档,如何处理form_list等。