上一篇讲到最简单的表单处理,就将输入的字符串输出了。
这么简单的表单处理可不行,接下来我们以一个用户注册的例子说明怎么验证数据。
验证数据要用到django.forms模块。
首先我们在templates目录下新建一个forms.py文件,添加代码:
#-*- coding: utf-8 -*- from django import forms class AccountForm(forms.Form): Email = forms.EmailField() #规定文本为email格式 Name = forms.CharField() #无限制条件 Password = forms.CharField(min_length=8) #密码最短8位
#这就是指定的数据格式
然后我们新建另一个html文件register.html,添加代码:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>表单数据验证</title> <style type="text/css"> body, div { padding: 0; margin: 0; } #container { width: 1070px; margin: 0 auto; } .wrap { width: 360px; height: 48px; margin: 0 auto; } .wrap form input { width: 240px; height: 24px; margin-top: 12px; } </style> </head> <body> <div id="container"> <div class="wrap"> <form action="." class="crawl" method="POST"> <h3>用户注册</h3> {% csrf_token %} <table> {{ form.as_table }}{#as_table 是form 的一个方法,它把 form 渲染成一系列的表格行#} </table> <button type="submit"> 提交 </button> </form> {% if results %} <h2>{{ results }}</h2> {% endif %} </div> </div> </body> </html>
这一次我们把表单的提交方式改为POST,所以要注意下面三点:
1. 在views里面,强制使用RequestContext代替Context,看到函数中的RequestContext(request)了吗?
2. 在模板的form体里面,加入{% csrf_token %}
3. 确认settings.py文件里面MIDDLEWARE_CLASSES = ( ‘django.middleware.csrf.CsrfViewMiddleware‘,)没有被注释。
如果没有解决这三个问题,在提交表单的时候会遇到CSRF verification failed. Request aborted.
最后在urls.py中添加:(r‘^reg/‘, ‘register‘),
在浏览器中打开127.0.0.1:8000/reg/
运行结果无法上图了,废话一下吧。假如你在email框输入的字符串不是email格式,系统会弹出消息提醒你。不过它只做一般的检查,至于该邮箱存不存在还得另想办法。
django表单处理(二)--数据验证,布布扣,bubuko.com
原文:http://blog.csdn.net/whoami021/article/details/20876965