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

  • 相关阅读:
    django migration
    Jenkins Jobs status dashboard by Build Monitor Plugin
    PyWebIO Write interactive web app in script way.
    Infrastructure as Code
    sqlalchemy
    reactsketch
    CI/CD System and gerrittrigger keypoints.
    mysql backup
    Alembic A database migrations tool for SQLAlchemy.
    docker support for inner loop
  • 原文地址:https://www.cnblogs.com/Mengchangxin/p/10019741.html
Copyright © 2011-2022 走看看