【发布时间】:2012-09-11 17:47:19
【问题描述】:
这里有什么方法可以将表单集存储到会话中吗?
我的场景是这样的。我有一个表格来填写用户数据和上传用户证书,在下一页(点击下一步的表格)有一个表格可以输入专业详细信息。
是否可以限制使用表单集生成的表单的最大数量?
【问题讨论】:
-
看来你是两个不同的问题。请尝试澄清问题。
标签: django django-models django-forms django-sessions
这里有什么方法可以将表单集存储到会话中吗?
我的场景是这样的。我有一个表格来填写用户数据和上传用户证书,在下一页(点击下一步的表格)有一个表格可以输入专业详细信息。
是否可以限制使用表单集生成的表单的最大数量?
【问题讨论】:
标签: django django-models django-forms django-sessions
如果我正确理解您的问题 - 如何在会话中保存 from 的状态,然后从 Django 1.4 开始,它实际上提供了一种开箱即用的方法。
https://docs.djangoproject.com/en/dev/ref/contrib/formtools/form-wizard/
它允许您将表单拆分为多个部分,然后用户可以单独填写。一旦用户填写了任何一个部分,他/她就会转到下一页,此时表单的状态将保存在会话中。填满所有页面后,所有内容都可以保存到数据库中。
此外,在从一页转到另一页时,您添加了下一页应该是什么的逻辑。
您有一个向导的图像,它会在第一页询问用户想要上传什么类型的内容。然后转到第二页,然后根据第一页的答案,可以显示适当的上传字段 - 视频、音乐或图形字段。
【讨论】:
我会回答 FormWizard 但如果您不想使用它,您可以简单地创建两个表单。当用户提交第一个表单时,您将其放入会话中,然后生成第二个表单。当他点击返回链接时,您取消腌制保存的数据并预先填写表格。
def submitFirstForm(request):
data = request.POST['data']
import cPickle
request.session['data'] = cPickle.dumps(data)
...
def backBtn(request):
import cPickle
data = cPickle.loads(request.session['page'])
form = DataForm(data)
...
【讨论】: