Django 表单向导独特的 URL 设计
Posted
技术标签:
【中文标题】Django 表单向导独特的 URL 设计【英文标题】:Django form wizard unique URL design 【发布时间】:2013-07-29 23:23:16 【问题描述】:我有一个 5 步注册表单,其中第一步嵌入到主页中。所以第 1 步是主页的一部分,其余步骤将继续执行。我喜欢为第 2 步到第 5 步设置唯一的 URL。基于此,我尝试设计 URL,但我被困在如何将第一步保留为主页 URL(mysite.com),其余部分类似于 mysite.com/signup/step2 等。
这曾经是我以前的唯一工作网址
from apps.profile.views.login import SignupWizard, SIGNUP_FORMS
from apps.profile.forms import MultiPartSignupFormStep1, MultiPartSignupFormStep2, MultiPartSignupFormStep3, MultiPartSignupFormStep4,MultiPartSignupFormStep5
urlpatterns = patterns('apps.profile.views.login',
url(r'^$', SignupWizard.as_view(SIGNUP_FORMS), name="signup"),
)
这是我现在的代码
from apps.profile.views.login import SignupWizard, SIGNUP_FORMS
from apps.profile.forms import MultiPartSignupFormStep1, MultiPartSignupFormStep2, MultiPartSignupFormStep3, MultiPartSignupFormStep4,MultiPartSignupFormStep5
named_forms = (
('step1', MultiPartSignupFormStep1),
('step2', MultiPartSignupFormStep2),
('step3', MultiPartSignupFormStep3),
('step4', MultiPartSignupFormStep4),
('step5', MultiPartSignupFormStep5),
)
wizard = SignupWizard.as_view(named_forms)
#url_name='step1', done_step_name='finished')
urlpatterns = patterns('apps.profile.views.login',
url(r'^account/signup/(?P<step>.+)/$', wizard),
#url(r'^account/signup/$', wizard),
)
如何将第 1 步设置为主页 URL,并为其余步骤设置唯一 URL?
【问题讨论】:
【参考方案1】:也许这会起作用:
from apps.profile.views.login import SignupWizard, SIGNUP_FORMS
from apps.profile.forms import MultiPartSignupFormStep1, MultiPartSignupFormStep2, MultiPartSignupFormStep3, MultiPartSignupFormStep4,MultiPartSignupFormStep5
step1 = (('step1', MultiPartSignupFormStep1),)
other_steps = (
('step2', MultiPartSignupFormStep2),
('step3', MultiPartSignupFormStep3),
('step4', MultiPartSignupFormStep4),
('step5', MultiPartSignupFormStep5),
)
wizard_step1 = SignupWizard.as_view(step1, url_name='wizard_step1')
wizard_other_steps = SignupWizard.as_view(other_steps, url_name='wizard_other_steps')
urlpatterns = patterns('apps.profile.views.login',
url(r'^$', wizard_step1, name='wizard_step1'),
url(r'^account/signup/(?P<step>.+)/$', wizard_other_steps, name='wizard_other_steps'),
)
【讨论】:
我尝试这样做,但我收到此错误URL name is needed to resolve correct wizard URLs
。我尝试提供唯一的名称,但仍然无法解决。
我试过了,我得到了同样的错误。我想这与NamedUrlWizardView
有关系,我在登录视图中使用它来定义 Singupwizard。以上是关于Django 表单向导独特的 URL 设计的主要内容,如果未能解决你的问题,请参考以下文章
django:如何在表单向导中使用 inlineformset?