Django的Form表單驗證
阿新 • • 發佈:2020-07-23
Form
簡短理解:後端提供了一個類:from django import forms,繼承此類定義子類。子類中定義和form表單中提交到name名稱一樣的欄位。django就可以幫做驗證。驗證後返回三個資訊:是否通過;所有正確資訊;所有錯誤資訊。
例如:
自己寫前端html後端Form類進行驗證
views.py
from django.shortcuts import render, HttpResponse from django.views import View # Create your views here. from django import forms # 用來驗證前端post提交過來資料的類class MyFm(forms.Form): username = forms.CharField() pwd = forms.CharField() email = forms.EmailField() # 請求處理 class FormTest(View): def get(self, request): return render(request, 'fm.html') def post(self, request): # 獲取所有資料 # 每條資料請求的驗證 # 成功顯示正確資訊# 失敗,給出錯誤提示 # 驗證時將request.POST 傳遞給驗證類,例項化驗證物件 verify_obj = MyFm(request.POST) # 開始驗證,返回True/False verify_result = verify_obj.is_valid() return HttpResponse(verify_result)
對應html
<form action="/formtest/" method="post"> {% csrf_token %} <input type=" text" placeholder="使用者名稱" name="username"> <input type="password" placeholder="密碼" name="pwd"> <input type="text" placeholder="郵箱" name="email"> <input type="submit" value="提交"> </form>
Form物件驗證POST請求返回值詳解:
verify_obj =MyFm(request.POST)
django中的Form一般有兩種功能:
- 生成html標籤
- 驗證使用者輸入內容
Form 物件生成html標籤寫法
views.py
from django.shortcuts import render, HttpResponse from django.views import View # Create your views here. from django import forms # 用來驗證前端post提交過來資料的類 class MyFm(forms.Form): username = forms.CharField() pwd = forms.CharField() email = forms.EmailField() # 請求處理 class FormTest(View): def get(self, request): verify_obj = MyFm() return render(request, 'fm.html', {'verify_obj':verify_obj})
fm.html
<form action="/formtest/" method="post"> {% csrf_token %} <p>{{ verify_obj.username }} {{ verify_obj.errors.username.0 }}</p> <p>{{ verify_obj.pwd }} {{ verify_obj.errors.pwd.0 }}</p> <p>{{ verify_obj.email }} {{ verify_obj.errors.email.0 }}</p> <input type="submit" value="提交"> </form>
django渲染後html
<form action="/formtest/" method="post"> <input type="hidden" name="csrfmiddlewaretoken" value="WhvU9JWIRIuk8Mjq0JJ1xCnId1ek6Rbee8kVgzyA0oHhUSIK3qZPu76opft70DPa"> <p><input type="text" name="username" required id="id_username"> </p> <p><input type="text" name="pwd" required id="id_pwd"> </p> <p><input type="email" name="email" required id="id_email"> </p> <input type="submit" value="提交"> </form>