【问题标题】:Saving Formset in a Session - Django在会话中保存表单集 - Django
【发布时间】:2012-09-11 17:47:19
【问题描述】:

这里有什么方法可以将表单集存储到会话中吗?


我的场景是这样的。我有一个表格来填写用户数据和上传用户证书,在下一页(点击下一步的表格)有一个表格可以输入专业详细信息。

是否可以限制使用表单集生成的表单的最大数量?

【问题讨论】:

  • 看来你是两个不同的问题。请尝试澄清问题。

标签: django django-models django-forms django-sessions


【解决方案1】:

如果我正确理解您的问题 - 如何在会话中保存 from 的状态,然后从 Django 1.4 开始,它实际上提供了一种开箱即用的方法。

https://docs.djangoproject.com/en/dev/ref/contrib/formtools/form-wizard/

它允许您将表单拆分为多个部分,然后用户可以单独填写。一旦用户填写了任何一个部分,他/她就会转到下一页,此时表单的状态将保存在会话中。填满所有页面后,所有内容都可以保存到数据库中。

此外,在从一页转到另一页时,您添加了下一页应该是什么的逻辑。

您有一个向导的图像,它会在第一页询问用户想要上传什么类型的内容。然后转到第二页,然后根据第一页的答案,可以显示适当的上传字段 - 视频、音乐或图形字段。

【讨论】:

  • 谢谢。但是formwizard对我来说不是正确的选择,因为我有一个链接可以查看以前的表格......实际上formwizard毁了我的一整天:(
  • 很抱歉听到这个消息。那么请澄清问题。你的问题很抽象,不清楚。如果您有特定问题,请询问。如果您遇到异常,请询问。有关如何提出好问题的更多信息,请参阅 StackOverflow 常见问题解答stackoverflow.com/faq
  • 问题是这样的,我有一个包含三个表单的注册模块,用户可以转到下一个和上一个表单,所以我认为最好将表单数据保存到会话中。并且每个表单中有两个表单集(添加证书、url、图像、电子邮件)等。
【解决方案2】:

我会回答 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)
   ...

【讨论】:

  • 是否可以将表单集保存到会话中?
  • 谢谢,我可以简单地将 POST 数据保存到会话以保存表单集吗?
猜你喜欢
  • 2021-12-21
  • 2018-01-11
  • 2017-01-14
  • 2017-08-17
  • 2021-09-22
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多