Django Form应用
Form数据验证强大
一个简单的小列子
-class LoginFrom(Form): email = filed.EmailField() #EmailField内置正则表达式验证
- is_vaild ----- 每一个字段进行正则(字段内置正则) + clean_字段 --> clean(__all__) --》_post_clean - clean_data - errors
对于所有的错误信息:__all__
from django import forms from django.forms import widgets from django.forms import fields class FM(forms.Form): # 字段本身只做验证, #is_valid它会循环每一个字段进行验证, #clean_data是一个字典 #widget这是一个插件,用于定制你的html.下面中{'class': 'c1'} 就是会加个class=c1 的样式 定制页面的时候,想写什么就写什么。可以 {'class': 'c1','root'} 也是可以 #在django forms中 有个fileds, fileds就是代指的字段 #widgets 是插件的意思,所以只要加上这个,就是变成插件了 例如:widget=widgets.PasswordInput #设置字段的时候。可以设置错误信息error_messages 更具你的 值来配置 #混合验证(可以用于多个条件验证): ComboField(Field) #fields.ComboField(fields=[fields.CharField(max_length=20), fields.EmailField(),]) user = fields.CharField( error_messages={'required': '用户名不能为空.'}, widget=widgets.Textarea(attrs={'class': 'c1'}), label="用户名", ) pwd = fields.CharField( max_length=12, min_length=6, ##如果设置了error_messages 那么这个数据类型就是dict_error。那么在前端获取的时,就是去获取这个字典 error_messages={'required': '密码不能为空.', 'min_length': '密码长度不能小于6', "max_length": '密码长度不能大于12'}, widget=widgets.PasswordInput(attrs={'class': 'c2'}) ) email = fields.EmailField(error_messages={'required': '邮箱不能为空.','invalid':"邮箱格式错误"}) f = fields.FileField() # p = fields.FilePathField(path='app01') #ChoiceField 帮你在前端页面显示单选下拉框 city1 = fields.ChoiceField( choices=[(0,'上海'),(1,'广州'),(2,'东莞')] ) #MultipleChoiceField 前端页面显示多选下拉框 city2 = fields.MultipleChoiceField( choices=[(0,'上海'),(1,'广州'),(2,'东莞')] )
序列化操作
序列化操作 错误信息的时候,特殊对象的序列化 ErrorDict - 自定义encoder QuerySet 第一种: from django.core import serializers v = models.tb.objects.all() data = serializers.serialize("json", v) 第二种: import json from datetime import date from datetime import datetime class JsonCustomEncoder(json.JSONEncoder): def default(self, field): if isinstance(field, datetime): return field.strftime('%Y-%m-%d %H:%M:%S') elif isinstance(field, date): return field.strftime('%Y-%m-%d') else: return json.JSONEncoder.default(self, field) v = models.tb.objects.values('id','name','ctime') v = list(v) v = json.dumps(v,cls=JsonCustomEncoder)
更多移步: http://www.cnblogs.com/wupeiqi/articles/6144178.html

浙公网安备 33010602011771号