1. 程式人生 > 實用技巧 >Django的Form表單驗證

Django的Form表單驗證

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>