<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC=1,5] >[success] # FORM 后臺做字段驗證 form 和ajax 序列話,他們所遵守的鍵值對關系都是,html標簽的name 屬性,作為K來進行匹配 >[success] # 只利用Form 做判斷 應用場景,當前端人員已經編寫完html代碼的時候,后臺人員在后臺做對應的字段驗證使用這種方法 >[danger] ##### 編寫Form 驗證類 * 在app 目錄中創建一個py文件,分別import `from django.forms import Form` `from django.forms import fields` ~~~ from django.forms import Form from django.forms import fields class loginFrom(Form): user = fields.CharField(max_length=12,required=True) pwd = fields.CharField(max_length=22) ~~~ >[danger] ##### views.py 引入form做驗證 * obj1= account.loginFrom(request.POST) 這是引入的自定義的form類,注意參數接收的request.POST,request.POST里面封裝的是,html 以name為鍵值對的字典,這樣就可以和form我們自定義的名字形成關聯驗證 * obj1.is_valid() 驗證是否符合form規則0. * obj1.cleaned_data 清洗后的數據也是字典格式 ~~~ from django.shortcuts import render,redirect from . import models from . import account # Create your views here. def login(request): if request.method == "GET": print("views") return render(request,'login.html',{"obj":""}) elif request.method == "POST": obj1 = account.loginFrom(request.POST) valid = obj1.is_valid() if valid: print(obj1.cleaned_data) obj = models.userinfo.objects.filter(**obj1.cleaned_data) if obj: request.session['is_login'] = True return redirect('/index.html') return render(request,'login.html',{"obj":obj1}) ~~~ >[danger] ##### html * 返回錯誤信息顯示下面案例兩個區別當有多個錯誤, * 第一個返回的是,這個字段得到所有的錯誤信息 * 第二個返回的是 ~~~ {{ obj.errors.user }} {{ obj.errors.user.0 }} ~~~ >[success] # Form html代碼生成和驗證 >[danger] ##### 編寫Form 驗證類 * 在app 目錄中創建一個py文件,分別import `from django.forms import Form` `from django.forms import fields` ~~~ from django.forms import Form from django.forms import fields class loginFrom(Form): user = fields.CharField(max_length=12,required=True) pwd = fields.CharField(max_length=22) ~~~ >[danger] ##### views 生成及驗證 * GET請求時生成 因為django_form表單都已經提前生成了標簽,所以要做的就是,創建生成的form對象下面的例子的中的user_form = UserForm() * POST請求時 在這里使用第二個特性可以驗證表單,因此把我們request.post傳入創建的驗證表單中,因為他本身返回的就是字典,form表單生成的標簽name屬性也是和創建的類屬性名一致。 然后利用is_valid()判斷字段是否符我們寫的判斷需求,符合需求返回True cleaned_data會吧符合需求的數據封裝成字典傳入給數據庫 如果is_valid()為假,那么會把用戶填的數據再返還,同時出現錯誤信息 ~~~ def add_user(reuqest): if reuqest.method == "GET": user_form = UserForm() return render(reuqest,'adduser.html',{'user_form':user_form}) elif reuqest.method == "POST": user_form = UserForm(reuqest.POST) if user_form.is_valid(): UserData = user_form.cleaned_data ''' models.UserInfo.objects.create( usernmae = UserData['username'], email = UserData['email'] ) ''' models.UserInfo.objects.create(**UserData) return redirect('/index/') else: return render(reuqest, 'adduser.html', {'user_form': user_form}) ~~~ >[danger] html ~~~ <form method="post" action="/add_user/" novalidate> {% csrf_token %} <p>{{ user_form.usernmae }}{{ user_form.errors.usernmae.0 }}</p> <p>{{ user_form.email }}{{ user_form.errors.email.0 }}</p> <input type="submit"> </form> ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看