# 模版 class LoginForm(forms.Form): # 模版中的元素 user = forms.CharField(min_length=6,error_messages={"required": '用户名不能为空','min_length': '用户名长度不能小6'}) email = forms.EmailField(error_messages={"required": '邮箱不能为空','invalid': '邮箱格式错误'}) def login(request): if request.method == "GET": # 数据库中获取 obj = LoginForm() return render(request,'login.html',{'oo': obj}) elif request.method == "POST": """ obj = LoginForm(request.POST) # 验证 status = obj.is_valid() print(status) value_dict = obj.clean() print(value_dict) error_obj = obj.errors.as_json() print(error_obj) """ obj = LoginForm(request.POST) if obj.is_valid(): value_dict = obj.clean() print(value_dict) # create(**value_dict) else: # 封装了所有的错误信息 # print(obj.errors['email'][0]) # print(obj.errors["user"][0]) # print(type(error_obj)) from django.forms.utils import ErrorDict pass return render(request, 'login.html',{'oo': obj})
<form method="POST" action="/login.html"> <p> {{ oo.user }} <span>{{ oo.errors.user.0 }}</span> </p> <p> {{ oo.email }} <span>{{ oo.errors.email.0 }}</span> </p> <p> <input type="text" name="pwd" placeholder="密码" /> </p> <input type="submit" value="提交" /> {{ msg }} <input id="ajax_submit" type="button" value="Ajax提交" /> </form>
Django的Form验证
- 控诉:
a. 用户提交数据的验证
1、创建模版 class LoginForm(forms.Form):...
2、将请求交给模版,创建一个对象 obj = LoginForm(request.POST)
3、进行验证 obj.is_valid()
4、获取正确信息 obj.clean()
5、获取错误信息 obj.errors
b. 错误信息提示
Form提交,刷新页面的特性,模版对象内部值丰富,再显示时,值和错误信息都有
c. 保留上一次提交的数据
1、自动生成html标签
2、保留上一次提交的数据
注:
Form使用 a,b,c
ajax使用 a,错误信息处理: as_json() as_data()
问题:
1、有没有其他的限制,可不可以自定制
2、生成各种标签
3、显示默认值
http://www.cnblogs.com/wupeiqi/articles/6144178.html