django - Django - 表单无效时输入数据的先前页面
问题描述
当表单无效时,我可以让我的页面返回之前输入的信息吗?
视图.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)
解决方案
该行form = MyForm(request.POST or None)
创建了一个MyForm
名为的对象form
,并为其分配了请求数据——它有点像填写好的表格。该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 新手,我建议您从一开始就进入基于类的视图 - 它们为您完成了繁重的工作,并且重构 + 调试变得更加容易。这是链接欢呼!
推荐阅读
- python - 多数据库和非托管模型 - 测试用例失败
- php - 不在 PHP 的对象上下文中使用 $this 时出错
- laravel - CentOS 7 上的 Nginx 服务器块
- python - screen.nodelay(True) 用-1的对角线填充终端并阻止输入
- ios - 即使没有互联网连接也能获得数据响应
- json - 如何重命名 pyspark 生成的 JSON?
- mysql - 来自同一个表的内连接
- java - 元组是否将值和参数作为索引隐藏起来?
- android - 新的 Facebook SDK 应用程序不可用:您尝试使用的应用程序不再可用或访问受到限制
- c# - Linq to sql - 使用新实体保存多级嵌套子级