1. 程式人生 > >04: Form 驗證用戶輸入 & 輸入html

04: Form 驗證用戶輸入 & 輸入html

tab 定義 ajax pla value splay turn messages pan

1.1 Form作用 與 基本使用

  1、form 的兩個功能,及適用場景

      1功能1 驗證

      2功能2 生成html標簽(默認功能:保留上次提交的值)

      3新url方式操作(一定要用form方式生成html,避免提交刷新頁面,丟失當前頁面中填的值)

      4發Ajax請求時可以不用form生成html標簽,僅用form做驗證,因為ajax請求本身不刷新頁面,不必擔心填

       的值會丟失,當然使用form生成html也是可以的

  2、使用form對 login.html提交密碼做簡單長度驗證

技術分享圖片
from django.shortcuts import
render,HttpResponse,redirect from app01.forms import UserForm def login(request): if request.method == GET: obj = UserForm() return render(request,login.html,{obj:obj}) elif request.method == POST: obj = UserForm(request.POST) r1 = obj.is_valid()
if r1: print(obj.cleaned_data) else: print(obj.errors) return render(request,login.html,{obj:obj})
views.py中定義處理函數 技術分享圖片
from django import forms
from django.forms import fields

class UserForm(forms.Form):
    #1: 這裏的name必須要和input框中name的值
    name = fields.CharField(
        error_messages
={required:用戶名不能為空}, ) #2: 這裏的password必須是input框中name的值 password = fields.CharField( min_length=6, max_length=10, error_messages={required:密碼不能為空, min_length:密碼長度不能小於6, max_length:密碼長度不能大於12, } )
app01/forms.py中定義字段驗證規則 技術分享圖片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>

    <form method="POST" action="/login/">
        <p>用戶名:<input name="name" type="text">{{ obj.errors.name.0 }}</p>
        <p>密 碼:<input name="password" type="text">{{ obj.errors.password.0 }}</p>
        <p><input type="submit" value="提交"></p>
    </form>

</body>
</html>
login.html

  3、生成HTML更簡單的三種方法,但是耦合性太強,不好定制(不建議使用)

      1. { obj.as_p }
      2. { obj.as_ul }
      3. { obj.as_table }

04: Form 驗證用戶輸入 & 輸入html