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)
行创建了一个名为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 干杯!
【讨论】:
以上是关于Django - 表单无效时输入数据的先前页面的主要内容,如果未能解决你的问题,请参考以下文章