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 //不返回也可以