zoukankan      html  css  js  c++  java
  • Django之表单验证

    from django.shortcuts import render
    
    # Create your views here.
    from django import forms
    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":
            return render(request,"login.html")
        elif request.method=="POST":
            # n=request.POST.get('user')
            # e=request.POST.get('email')
            # p=request.POST.get('pwd')
            # return 0
            obj=LoginForm(request.POST)
            # status =obj.is_valid()#一个个取值在模板中进行校验
            # print(status)
            # value_dict=obj.clean()#只取到验证通过的信息
            # print(value_dict)
            # # error_obj=obj.errors
            # error_obj = obj.errors.as_json()
            # print(error_obj)
            if obj.is_valid():
                value_dict = obj.clean()
                print(value_dict)
            else:
                error_obj = obj.errors.as_json()
                print(error_obj)
            return render(request,"login.html")
    

      

    用户提交数据的验证

    1/创建模板

    2/讲请求交给模板,创建一个对象

    3/进行验证

    4/获取正确信息

    4/获取错误信息


    from django.shortcuts import render
    
    # Create your views here.
    from django import forms
    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":
            return render(request,"login.html")
        elif request.method=="POST":
            # n=request.POST.get('user')
            # e=request.POST.get('email')
            # p=request.POST.get('pwd')
            # return 0
            obj=LoginForm(request.POST)
            # status =obj.is_valid()#一个个取值在模板中进行校验
            # print(status)
            # value_dict=obj.clean()#只取到验证通过的信息
            # print(value_dict)
            # # error_obj=obj.errors
            # error_obj = obj.errors.as_json()
            # print(error_obj)
            if obj.is_valid():
                value_dict = obj.clean()
                print(value_dict)
            else:
                # error_obj = obj.errors
                # print(error_obj["user"][0])
                # print(error_obj["email"][0])
                print(obj.errors["user"][0])
                print(obj.errors["email"][0])
                # from django.forms.utils import ErrorDict
            return render(request,"login.html",{"oo":obj})
    View Code
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <h1>form提交数据</h1>
    <form action="/app01/login.html" method="post">
        <p><input type="text" name="user" placeholder="用户名">
        <span>{{ oo.errors.user.0 }}</span>
        </p>
        <p><input type="text" name="email" placeholder="邮箱">
         <span>{{ oo.errors.email.0 }}</span>
        </p>
        <p><input type="text" name="pwd" placeholder="密码"></p>
        <p><input type="submit" value="提交"></p>
        <p><input type="submit" value="ajax提交" id="ajax_submit"></p>
    </form>
    <script src="/static/js/jquery-3.3.1.min.js"></script>
    <script>
        $('#ajax_submit').click(function () {
            $.ajax({
                url:"/app01/login.html/",
                data:{user:"root",email:"root@126.com",pwd:"123123"},
                type:"post",
                success:function (arg) {
                    console.log(arg)
                }
            })
        })
    </script>
    </body>
    </html>
    View Code

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8 <h1>form提交数据</h1>
     9 <form action="/app01/login.html" method="post">
    10     <p>
    11     {{ oo.user }}
    12     <span>{{ oo.errors.user.0 }}</span>
    13     </p>
    14     <p>
    15         {{ oo.email }}
    16      <span>{{ oo.errors.email.0 }}</span>
    17     </p>
    18     <p><input type="text" name="pwd" placeholder="密码"></p>
    19     <p><input type="submit" value="提交"></p>
    20     <p><input type="submit" value="ajax提交" id="ajax_submit"></p>
    21 </form>
    22 <script src="/static/js/jquery-3.3.1.min.js"></script>
    23 <script>
    24     $('#ajax_submit').click(function () {
    25         $.ajax({
    26             url:"/app01/login.html/",
    27             data:{user:"root",email:"root@126.com",pwd:"123123"},
    28             type:"post",
    29             success:function (arg) {
    30                 console.log(arg)
    31             }
    32         })
    33     })
    34 </script>
    35 </body>
    36 </html>
    View Code



    ajax 提交表单验证

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8 <h1>form提交数据</h1>
     9 <form id="f1">
    10     <p>
    11         <input type="text" name="user" placeholder="username">
    12 
    13     </p>
    14     <p>
    15         <input type="text" name="email" placeholder="email-address">
    16 
    17     </p>
    18     <p><input type="text" name="pwd" placeholder="密码"></p>
    19     <p><input type="button" value="ajax提交" id="ajax_submit"></p>
    20 </form>
    21 <script src="/static/js/jquery-3.3.1.min.js"></script>
    22 <script>
    23     $('#ajax_submit').click(function () {
    24         $.ajax({
    25             url:"/app01/login_ajax.html",
    26             //data:{user:"root",email:"root@126.com",pwd:"123123"},
    27             data:$('#f1').serialize(),
    28             type:"post",
    29             success:function (arg) {
    30                 $('.error-msg').remove();
    31                 var v1=JSON.parse(arg);
    32                 if(!v1.status){
    33                     var error_obj=JSON.parse(v1.error);
    34                     //alert(error_obj['email'][0].message);
    35                     $.each(error_obj,function (k,v) {
    36                          var tag=document.createElement('span');
    37                         tag.className='error-msg';
    38                         tag.innerHTML=v[0].message;
    39                         $("input[name='"+k+"']").after(tag);
    40                     })
    41                 }
    42             }
    43         })
    44     })
    45 </script>
    46 </body>
    47 </html>
    View Code
     1 import json
     2 def login_ajax(request):
     3     if request.method=="GET":
     4         return render(request,"login_ajax.html")
     5     elif request.method=="POST":
     6         ret={'status':True,'error':None,'data':None}
     7         print(request.POST)
     8         obj=LoginForm(request.POST)
     9         if obj.is_valid():
    10             value_dict = obj.clean()
    11             print(value_dict)
    12         else:
    13             print(type(obj.errors))
    14             print(obj.errors.as_data())
    15             res_str=obj.errors.as_json()
    16             ret['status']=False
    17             ret['error']=res_str
    18             # ret['status']=False
    19             # ret['error']=obj.errors.as_data()
    20         return HttpResponse(json.dumps(ret))
    View Code

    obj.errors.as_data()
    from django.shortcuts import render,HttpResponse
    
    # Create your views here.
    from django import forms
    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":
            # n=request.POST.get('user')
            # e=request.POST.get('email')
            # p=request.POST.get('pwd')
            # return 0
            obj=LoginForm(request.POST)
            # status =obj.is_valid()#一个个取值在模板中进行校验
            # print(status)
            # value_dict=obj.clean()#只取到验证通过的信息
            # print(value_dict)
            # # error_obj=obj.errors
            # error_obj = obj.errors.as_json()
            # print(error_obj)
            if obj.is_valid():
                value_dict = obj.clean()
                print(value_dict)
            else:
                # error_obj = obj.errors
                # print(error_obj["user"][0])
                # print(error_obj["email"][0])
                # print(obj.errors["user"][0])
                # print(obj.errors["email"][0])
                # from django.forms.utils import ErrorDict
                pass
            return render(request,"login.html",{"oo":obj})
    import json
    def login_ajax(request):
        if request.method=="GET":
            return render(request,"login_ajax.html")
        elif request.method=="POST":
            ret={'status':True,'error':None,'data':None}
            print(request.POST)
            obj=LoginForm(request.POST)
            if obj.is_valid():
                value_dict = obj.clean()
                print(value_dict)
            else:
                # print(type(obj.errors))
                # print(obj.errors.as_data())#{'user': [ValidationError(['用户名不能为空'])], 'email': [ValidationError(['邮箱不能为空'])]}
                # res_str=obj.errors.as_json()
                # ret['status']=False
                # ret['error']=res_str
                ret['status']=False
                ret['error']=obj.errors.as_data()
                # v=obj.errors.as_data()['user'][0]
                # print(type(v))#django.core.exceptions.ValidationError
                # from django.core.exceptions import ValidationError
            return HttpResponse(json.dumps(ret,cls=JsonCustomEncoder))
    
    from django.core.exceptions import ValidationError
    class JsonCustomEncoder(json.JSONEncoder):
        def default(self, field):
            if isinstance(field, ValidationError):
                return {"code":field.code,"message":field.message}
            else:
                return json.JSONEncoder.default(self, field)
    View Code



    表单验证模块的限制,自定制。生成标签

    class IndexForm(forms.Form):
        user = forms.CharField(min_length=6, error_messages={"required": "用户名不能为空", "min_length": "用户名长度不能小于6"})
        email = forms.EmailField(error_messages={"required": "邮箱不能为空", "invalid": "邮箱格式错误"})
        # favor=forms.ChoiceField(
        #     choices=[(1,"道君"),(2,"天骄战纪"),(3,"圣墟")]
        # )
        favor = forms.MultipleChoiceField(
            choices=[(1, "道君"), (2, "天骄战纪"), (3, "圣墟")]
        )
    def index(request):
        obj=IndexForm()
        return render(request,"index.html",{"obj":obj})
    
    def edit_index(request):
        obj=IndexForm({'user':'root','email':'root@123.com','favor':[2,3]})
        return render(request,"edit_index.html",{"obj":obj})
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <p>{{ obj.user }}</p>
    <p>{{ obj.email }}</p>
    <p>{{ obj.favor }}</p>
    </body>
    </html>
    

    #!/usr/bin/env python3
    #-*- coding:utf-8 -*-
    '''
    Administrator 
    2018/11/27 
    '''
    from django import forms
    from django.forms import fields
    from django.forms import widgets
    class DetailForm(forms.Form):
        user=fields.CharField(widget=widgets.TextInput(attrs={'class':'c1','placeholder':'username'}))
        pwd = fields.CharField(widget=widgets.PasswordInput(attrs={'class': 'c1', 'placeholder': 'password'}))
        user3=fields.ChoiceField(choices=[(1, "上海"), (2, "广州"), (3, "北京")])
    def detail(request):
        from app01 import Rform
        obj=Rform.DetailForm()
        return render(request,"detail.html",{"obj":obj})
    

     


    #!/usr/bin/env python3
    #-*- coding:utf-8 -*-
    '''
    Administrator 
    2018/11/27 
    '''
    from django import forms
    from django.forms import fields
    from django.forms import widgets
    class DetailForm(forms.Form):
        user=fields.CharField(widget=widgets.TextInput(attrs={'class':'c1','placeholder':'username'}))
        pwd = fields.CharField(widget=widgets.PasswordInput(attrs={'class': 'c1', 'placeholder': 'password'}))
        user3=fields.ChoiceField(choices=[(1, "上海"), (2, "广州"), (3, "北京")])
        user4=fields.IntegerField()
        user5 = fields.CharField(
            widget=widgets.Select(choices=[(1, "上海"), (2, "广州"), (3, "北京")])
        )
        user6 = fields.IntegerField(
            widget=widgets.Select(choices=[(1, "上海"), (2, "广州"), (3, "北京")])
        )
        user7= fields.IntegerField(
            widget=widgets.RadioSelect(choices=[(1, "上海"), (2, "广州"), (3, "北京")])
        )
    

      

     


    #!/usr/bin/env python3
    #-*- coding:utf-8 -*-
    '''
    Administrator 
    2018/11/27 
    '''
    from django import forms
    from django.forms import fields
    from django.forms import widgets
    from django.core.validators import RegexValidator
    class DetailForm(forms.Form):
        user=fields.CharField(widget=widgets.TextInput(attrs={'class':'c1','placeholder':'username'}))
        pwd = fields.CharField(widget=widgets.PasswordInput(attrs={'class': 'c1', 'placeholder': 'password'}))
        user3=fields.ChoiceField(choices=[(1, "上海"), (2, "广州"), (3, "北京")])
        user4=fields.IntegerField()
        user5 = fields.CharField(
            widget=widgets.Select(choices=[(1, "上海"), (2, "广州"), (3, "北京")])
        )
        user6 = fields.IntegerField(
            widget=widgets.Select(choices=[(1, "上海"), (2, "广州"), (3, "北京")])
        )
        user7= fields.IntegerField(
            widget=widgets.RadioSelect(choices=[(1, "上海"), (2, "广州"), (3, "北京")])
        )
    
    class FieldsForm(forms.Form):
        f1 = fields.CharField(
            max_length=6,
            required=False,
            label="用户名",
            initial="root",
            help_text="用户名最少5个字符,最大15个字符",
            error_messages={'required':"不能为空",'f1':'cdafdafdasfasdfasdfag','f2':'4564d5a4f6d23afda','max_length':'taichangle'},
            show_hidden_initial=True,
            validators=[RegexValidator(r'^[0-9]+$', '1111111111',code='f1'), RegexValidator(r'^159[0-9]+$', '2222222222222',code='f2')],
            label_suffix='>>>',
        )
        #f2=fields.RegexField(r'^159[0-9]+$')
        f3=fields.FileField()
        f4=fields.ChoiceField(
            initial=2,
            choices=[(1,'牛油到'),(2,"谋利益"),(3,"刘新明")],
        )
        f5 = fields.TypedChoiceField(
            coerce=lambda x:int(x),
            initial=2,
            choices=[(1, '牛油到'), (2, "谋利益"), (3, "刘新明")],
        )
        f6= fields.MultipleChoiceField(
            initial=[1,2],
            choices=[(1, '牛油到'), (2, "谋利益"), (3, "刘新明")],
        )
        f6a = fields.TypedMultipleChoiceField(
            coerce=lambda x:int(x),
            initial=[1, 2],
            choices=[(1, '牛油到'), (2, "谋利益"), (3, "刘新明")],
        )
        # f7=fields.ComboField(fields=[fields.CharField(max_length=20), fields.EmailField(),])
        f7=fields.SplitDateTimeField()
        f8=fields.FilePathField(path='app01',allow_folders=True,recursive=True)

    #!/usr/bin/env python3
    #-*- coding:utf-8 -*-
    '''
    Administrator 
    2018/11/27 
    '''
    from django import forms
    from django.forms import fields
    from django.forms import widgets
    from django.core.validators import RegexValidator
    class DetailForm(forms.Form):
        user=fields.CharField(widget=widgets.TextInput(attrs={'class':'c1','placeholder':'username'}))
        pwd = fields.CharField(widget=widgets.PasswordInput(attrs={'class': 'c1', 'placeholder': 'password'}))
        user3=fields.ChoiceField(choices=[(1, "上海"), (2, "广州"), (3, "北京")])
        user4=fields.IntegerField()
        user5 = fields.CharField(
            widget=widgets.Select(choices=[(1, "上海"), (2, "广州"), (3, "北京")])
        )
        user6 = fields.IntegerField(
            widget=widgets.Select(choices=[(1, "上海"), (2, "广州"), (3, "北京")])
        )
        user7= fields.IntegerField(
            widget=widgets.RadioSelect(choices=[(1, "上海"), (2, "广州"), (3, "北京")])
        )
    
    class FieldsForm(forms.Form):
        f1 = fields.CharField(
            max_length=6,
            required=False,
            label="用户名",
            initial="root",
            help_text="用户名最少5个字符,最大15个字符",
            error_messages={'required':"不能为空",'f1':'cdafdafdasfasdfasdfag','f2':'4564d5a4f6d23afda','max_length':'taichangle'},
            show_hidden_initial=True,
            validators=[RegexValidator(r'^[0-9]+$', '1111111111',code='f1'), RegexValidator(r'^159[0-9]+$', '2222222222222',code='f2')],
            label_suffix='>>>',
        )
        #f2=fields.RegexField(r'^159[0-9]+$')
        f3=fields.FileField()
        f4=fields.ChoiceField(
            initial=2,
            choices=[(1,'牛油到'),(2,"谋利益"),(3,"刘新明")],
        )
        f5 = fields.TypedChoiceField(
            coerce=lambda x:int(x),
            initial=2,
            choices=[(1, '牛油到'), (2, "谋利益"), (3, "刘新明")],
        )
        f6= fields.MultipleChoiceField(
            initial=[1,2],
            choices=[(1, '牛油到'), (2, "谋利益"), (3, "刘新明")],
        )
        f6a = fields.TypedMultipleChoiceField(
            coerce=lambda x:int(x),
            initial=[1, 2],
            choices=[(1, '牛油到'), (2, "谋利益"), (3, "刘新明")],
        )
        # f7=fields.ComboField(fields=[fields.CharField(max_length=20), fields.EmailField(),])
        f7=fields.SplitDateTimeField()
        f8=fields.FilePathField(path='app01',allow_folders=True,recursive=True)
    
    
    class WidghtdForm(forms.Form):
        w1=fields.CharField(widget=widgets.ClearableFileInput)
    
    from app01 import models
    class DBForm(forms.Form):
        host=fields.CharField()
        host_type = fields.IntegerField(
            # widget=widgets.Select(choices=[(0,'SH'),(1,'BJ')])
            # widget=widgets.Select(choices=models.UserType.objects.all().values_list('id','caption'))
            widget=widgets.Select(choices=[])
        )
    
        def __init__(self,*args,**kwargs):
            super(DBForm,self).__init__(*args,**kwargs)
            self.fields['host_type'].widget.choices=models.UserType.objects.all().values_list('id','caption')
    实时更新的问题
    def db(request):
        from app01 import Rform
        from app01 import models
        if request.method=="GET":
            obj = Rform.DBForm()
            return render(request, "db.html", {"obj": obj})
    def initial(request):
        from app01 import Rform
        from app01 import models
        if request.method == "GET":
            nid=request.GET.get('nid')
            m=models.UserInfo.objects.filter(id=nid).first()
            print(m.name,type(m.name))
            dic={'username':m.name,'user_type':m.ut_id}
            obj = Rform.InitialForm(dic)
            return render(request, "initial.html", {"obj": obj})
    View Code
    # Create your models here.
    class UserInfo(models.Model):
        name=models.CharField(max_length=32)
        ut=models.ForeignKey("UserType",on_delete=models.CASCADE)
    
    
    class UserType(models.Model):
        caption=models.CharField(max_length=32)
    View Code
    from app01 import models
    class DBForm(forms.Form):
        host=fields.CharField()
        host_type = fields.IntegerField(
            # widget=widgets.Select(choices=[(0,'SH'),(1,'BJ')])
            # widget=widgets.Select(choices=models.UserType.objects.all().values_list('id','caption'))
            widget=widgets.Select(choices=[])
        )
    
        def __init__(self,*args,**kwargs):
            super(DBForm,self).__init__(*args,**kwargs)
            self.fields['host_type'].widget.choices=models.UserType.objects.all().values_list('id','caption')
    
    class InitialForm(forms.Form):
        username=fields.CharField()
        user_type=fields.IntegerField(
            widget=widgets.Select(choices=[])
        )
        def __init__(self,*args,**kwargs):
            super(InitialForm,self).__init__(*args,**kwargs)
            self.fields['user_type'].widget.choices=models.UserType.objects.all().values_list('id','caption')
    View Code

    F和Q
    
    
    filter(id__gt=1,name='root')
    filter(**{"id__gt":1,...})
    
    用and or 等操作
    filter(Q(id__gt=1)|Q(name="root"))
    (邮箱&密码)|(用户名&密码)
    

      

    https://www.cnblogs.com/wupeiqi/articles/6144178.html

    ]

    https://www.cnblogs.com/wupeiqi/articles/5938916.html

  • 相关阅读:
    Windows 8实例教程系列 开篇
    qt 开发发布于 windeploy.exe
    qt qoci 测试验证
    vmware vmx 版本不兼容
    qt oracle
    vc qt dll
    QOCIDriver unable to create environment
    qoci 编译完 放置位置 具体根据情况
    calling 'lastError' with incomplete return type 'QSqlError' qsqlquer
    Hbase 操作工具类
  • 原文地址:https://www.cnblogs.com/Mengchangxin/p/10019741.html
Copyright © 2011-2022 走看看