1, 在視圖views.py中引入forms模塊 from django import forms,特別注意是forms,加s
2, 然后創建一個類繼承django的Form class biaodan(forms.Form):
3, 編寫自定義的表單驗證規則, forms模塊中提供了許多內置的驗證字段如, 針對字符串使用CharFiled,針對郵箱使用 EmailFiled,針對url地址使用URlFiled,數字字段,ip類的字段等等, 每一個字段內我們還可以設置驗證條件,比如,是否要求字段可以為空,添加驗證條件required=True,表示不能為空,max_length=5,最大字符數,min_length最小字符數,error_messages={},自定的錯誤信息,字典形式,鍵為驗證條件的字段,錯誤信息自己可以隨便寫,針對郵箱有一個錯誤信息字段為invalid,用來專門寫郵箱驗證錯誤后的提示信息,其實錯誤信息可以自己不編寫,模塊中有默認的驗證錯誤返回信息,不過是英文的,為了更好的用戶體驗,建議自己定義
比如我們定義一個用戶的驗證
django框架沒有手機號的驗證規則可以自定義添加
# 編寫自定義驗證規則
def mobile_check(value):
res = re.match('^1[356789]\d{9}$', value)
if not res:
# 自定義規則不拋異常表示通過
raise ValidationError('手機號碼格式錯誤')
class bd(forms.Form):
mobile = forms.CharField(
required=True,
# 使用自定義驗證規則
validators=[mobile_check],
error_messages={
'required': '手機號為必填項',
},
)
user = forms.CharField(
required=True,
max_length=4,
min_length=2,
error_messages={
'required': '不能為空',
'max_length': '最長不能超過4個字符',
'min_length': '最小長度為2'
}
)
4, 驗證類編寫好以后我們就可以,編寫邏輯邏輯處理模塊了
def test(request):
if request.method == 'POST':
f = bd(request.POST) # 使用bd類驗證請求過來大的信息
if f.is_valid(): # is_valid()返回驗證是否通過的布爾值
# print(f.cleaned_data) # cleaned_data 返回驗證通過后的所有數據,字典形式
# 可以執行數據庫存儲操作
return JsonResponse(f.cleaned_data)
else:
return render(request, 'kanyun/test.html', {'info': f.errors}) # errors 獲取驗證錯誤信息
elif request.method == 'GET':
return render(request, 'kanyun/test.html')
通過驗證后的返回的cleaned_data數據,可以進行對數據庫的存儲操作
如果是登陸則可以查詢數據庫對比,成功后可以執行跳轉操作
前端代碼,前端的input的輸入框下要有接收錯誤信息的標簽模塊用來接收錯誤提示信息
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>From模塊驗證表單模塊使用方法訪問頁面</h1>
<form action="{% url 'kanyun:test' %}" method="post">
{% csrf_token %}
<div>
用戶名:<input type="text" name="mobile"/>
<span>{{ info.user }}</span>
</div>
<div>
密碼:<input type="text" name="user"/>
<span>{{ info.pwd }}</span>
</div>
<button type="submit">提交</button>
</form>
<h1>自動創建表單</h1>
</body>
</html>