【问题标题】:Django - Previously page with data entered when form is invalidDjango - 表单无效时输入数据的先前页面
【发布时间】: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)

【问题讨论】:

    标签: django view django-forms django-views


    【解决方案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 干杯!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-10
      • 1970-01-01
      • 1970-01-01
      • 2013-04-09
      • 1970-01-01
      • 2019-11-22
      • 1970-01-01
      • 2011-06-18
      相关资源
      最近更新 更多