Django - 表单无效时输入数据的先前页面

Posted

技术标签:

【中文标题】Django - 表单无效时输入数据的先前页面【英文标题】:Django - Previously page with data entered when form is invalid 【发布时间】:2020-10-19 17:46:28 【问题描述】:

当表单无效时,我可以让我的页面返回之前输入的信息吗?

Views.py

def MyView(request):
   [...code...]
   if request.method == 'POST':
      form = MyForm(request.POST or None)
      if form.is_valid()
         //do something and redirect to success page
      else:
         //back to the page with the information filled in by the user (HERE IS MY PROBLEM)

【问题讨论】:

【参考方案1】:

form = MyForm(request.POST or None) 行创建了一个名为formMyForm 对象,并为其分配了请求数据——它有点像填写好的表格。 is_valid() 方法检查表单中的错误并将特定错误添加到您的 form 中,因此现在这是一个已分配错误的填写表单。如果您想将此表单返回给用户,您应该将其添加到上下文中,因此考虑到它是基于标准 django 函数的视图,它应该如下所示:

def MyView(request):
   [...code...]
   if request.method == 'POST':
      form = MyForm(request.POST or None)
      if form.is_valid()
         form.save()
         return render(request, 'succes_page_template.html')
      else:
         return render(request, 'current_template.html', context = 'form': form) 

如果form 无效,用户接下来看到的是他填写表单的同一页面('current_template.html'),但所有字段都填充了他/她已经输入的数据,表单也会有分配给特定字段的错误,以便您可以打印它们。如果您是 Django 新手,我建议您从一开始就进入基于类的视图 - 它们为您完成了繁重的工作,并且重构 + 调试变得更加容易。这是link 干杯!

【讨论】:

以上是关于Django - 表单无效时输入数据的先前页面的主要内容,如果未能解决你的问题,请参考以下文章

如何使用无效的 Django 表单跳转到锚点?

Django form表单

Django form表单

Django form表单

Django模型表单集显示数据库数据而不是空表单集

Django之SQL注入