【问题标题】: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) 行创建了一个名为form 的MyForm 对象,并为其分配了请求数据——它有点像填写好的表格。 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 干杯!