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

posted @ 2017-05-12 22:07  所有的梦想都画在墙上  阅读(178)  评论(0)    收藏  举报