如何将 FormWizard 包装在视图中?
Posted
技术标签:
【中文标题】如何将 FormWizard 包装在视图中?【英文标题】:How wrap a FormWizard in a View? 【发布时间】:2011-03-31 01:23:44 【问题描述】:如何在视图中包装 Django Form Wizard?我需要这样做才能访问request
。
有人有这方面的示例代码吗?
【问题讨论】:
【参考方案1】:我可能应该只是评论 Manoj 的回答,但听起来你需要代码
urls.py
from django.conf.urls.defaults import *
from MyApp import views
urlpatterns = patterns(
'',
(r'^wizard/$', views.MyWizardView ),
)
views.py
@login_required
def MyWizardView (request):
cw = MyWizard([WizardName, WizardQuestions, WizardProvider, WizardGoomber])
return cw(request)
【讨论】:
我必须更改以上内容才能使其正常工作。我将 cw=... 更改为 cw=MyWizard.as_view([...])。否则效果很好【参考方案2】:as_view
函数将基于类的视图转换为可调用视图:
from django import forms
from django.contrib.formtools.wizard.views import SessionWizardView
class Form1(forms.Form):
a = forms.CharField()
class Form2(forms.Form):
b = forms.CharField()
class MyWizard(SessionWizardView):
pass
wizard_view = MyWizard.as_view([Form1, Form2])
def view(request):
# do something fancy with the request object here
return wizard_view(request)
这与How to wrap a Django Form Wizard in a View?中的答案基本相同
【讨论】:
这个问题已经很老了。我只是点击了一个链接,发现这几乎是同一个问题,没有答案。我不打算进行尸体解剖。 把答案留在这里,因为它可能会帮助一个或另一个找到更新 Django 版本的正确答案。【参考方案3】:这个Django snippet 可能很有用。
来自标题:“FormWizard inside view 具有适当的上下文处理和站点模板支持,无需使用 urls.py”
【讨论】:
好吧,我迷失了“无需使用 urls.py” 这个剪断很老了。从那时起,向导代码发生了很大变化。请不要推荐旧代码示例,除非问题特别要求提供过时的 Django 版本。以上是关于如何将 FormWizard 包装在视图中?的主要内容,如果未能解决你的问题,请参考以下文章
使用当前 FormWizard 中的数据返回新的 FormWizard
django manytomany 字段使用 through 和 formwizard
Django:如何使用 ModelFormSet 和 FormWizard 过滤 ForeignKey 选择(例如使用 request.user)?
Yii2 Kartik-v fileiput:以$ _FILES而不是$ _POST数组包装时获取上传的图像