【问题标题】:Django Confirm a form before submitting itDjango 在提交之前确认表单
【发布时间】:2014-09-22 08:47:15
【问题描述】:

我有一个表单,我在 form.cleaned_data 中检索数据。 我希望将此数据呈现到另一个页面以供提交者在将其输入数据库之前进行审查。 现在,我可以使用 render(request,"xyz.html","datax":form.cleaned_data} 将它呈现给用户,但我被困在如何从这个页面重新提交这个数据作为 POST。 我应该如何将这些数据存储在下一页中,以便可以使用我的“确认”按钮将其重新发送给我。

请不要在 django 中建议表单预览。我不想使用它,但我自己写。

【问题讨论】:

  • 只需在 xyz.html 中创建另一个表单并隐藏 {{datax}}
  • 嗨,是的,我可以做到。它与 uhsac 重新渲染表单本身的方法非常相似。至于隐藏表单,我可以通过扩展我的表单类对象并遍历字段并将小部件设置为“隐藏”来实现。有没有更好的方法来做到这一点,比如 form.hide() 之类的。?谢谢。
  • 为什么不使用其他方法 表单向导docs.djangoproject.com/en/dev/ref/contrib/formtools/form-wizard
  • Form Wizard 在 1.8 中以 django-formtools 的名称单独使用。 github.com/django/django-formtools

标签: django forms post


【解决方案1】:

在第一步中直接将其提交到数据库可能会更好,但添加一个“已审核”布尔字段,该字段仅在第二步后设置为 true。

【讨论】:

  • 请详细说明为什么这是个好主意?我的意思是,如果我保存它并有一个布尔字段,那么检查然后删除数据会不会很麻烦?确认后保存一次不是更好吗?谢谢。
【解决方案2】:

不要发送 form.cleaned_data 而只是发送表单

举例:

# In view1
form = Form(request.POST)
if form.is_valid():
    return render(request, 'view2.html', form)

# In view2
form = Form(request.POST)
if form.is_valid():
    form.save()

【讨论】:

  • 这将使表单再次可编辑,但它仍然解决了我的问题。我也可以隐藏表单本身,slim_ch 也提到了这一点,你的方法是相似的。谢谢。
猜你喜欢
  • 2012-07-28
  • 2015-03-11
  • 2020-09-06
  • 2011-09-23
  • 1970-01-01
  • 2015-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多