Django入門六之 (Form表單)

form表單獲取

from django import forms

Django 中的表單 不是 HTML中的表單,用於驗證用戶表單輸入的內容是否符合實際的標準,也可以在html中生成(不建議)

requests.POST.get(表單name名稱,None)
requests.POST.getlist(複選框name名稱,None)

1 需要在每一個app下創建forms.py(並不是強制的)
2 表單是通過類實現的,繼承自forms.Form 
3 創建字段跟模型是一模一樣的 但是沒有null=True或者blank=True 唯一有的參數是required=True/False //可以爲空爲False 

常用field:
    auth(requests.POST)  如果有文件需要加上requests.FILES
    max_length 最大長度
    min_length 最小長度
    required   True爲必添
    EmailField  郵箱驗證
    ImageField  圖片類型
    FileField()   上傳文件  //需要在model裏面定義upload_to=''
    DateField 驗證時間 默認格式 %Y-%m-%d
    FloatField  驗證是否時浮點數
    IntegerField 驗證是否滿足整形
    URLField 驗證是否滿足url類型的字符串
    
    圖片 或者 文件 需要
    settings裏面設置MEDIA_ROOT設置保存文件位置,
    html頁面增加enctype="multipart/form-data"
    

注意:
    表單中的字段 必須要和html form裏面的name名字一致!
    is_valid() 驗證用戶提交的數據是否合法 合法True/False
    cleaned_date.get 保存用戶提交的數據,獲取html中name標籤對應的數據

示例:
    class auth(forms.Form):
        username = forms.CharField(max_length=10) 
        password = forms.CharField(max_length=20)
        
    form = auth(requests.POST)
    if form.is_valid(): //驗證是否合法
        username = form.cleaned_date.get("username") //獲取數據
        password= form.cleaned_date.get("password")

#表單中的錯誤
forms.errors 打印表單驗證錯誤信息
forms.errors.as_json  打印表單驗證錯誤 json的格式

#自定義表單錯誤信息
error_messages={'min_length':'12'}

#添加自定義驗證機制
重寫方法
def clean_password(self): //識別clean_表名字段
        password = self.cleaned_data.get('password',None)
        if len(password) < 6:
            raise forms.ValidationError(u'password length < 6',code="error")//可選
        return password //可返回
            
涉及到多個field提供了一個方法

def clean(self):
    super(auth,self).clean() //寫不寫,測試是沒問題的
    cleaned_data = self.cleaned_data
    password = cleaned_data.get('password',None)
    if len(password) < 6:
        self.add_error('某一個field','password not equal')//自定義異常,無需拋
        #raise forms.ValidationError('password !!!',code=403)
    return cleaned_data //不返回也可以
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章