這篇文章將為大家詳細講解有關django中怎么使用form表單實現數據驗證,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

1、先導入forms模塊
from django import forms
2、創建模板的類
# 1、創建模板
class loginform(forms.Form):
# 2、模板中的元素
name = forms.CharField(min_length=6,error_messages={"requird":"用戶名不能為空","min_length":"最小長度為6"})
# requird這個是錯誤碼
email = forms.EmailField()這里這個error_messages寫出錯的信息,每個不同的錯誤碼對應不同的報錯信息
3、在視圖函數中使用這個類
def login(request):
if request.method.lower() == "post":
# 3、創建一個模板的對象,然后把數據傳遞個這個對象
obj = loginform(request.POST)
# 4、啟動校驗
status= obj.is_valid()
print(status)
# 5、正確的信息
success_dict = obj.clean()
print(success_dict)
# 6、錯誤的信息
failed_dict = obj.errors.as_json()
print(failed_dict)
return redirect("/app1/login")
else:
return render(request,"login.html")這里就會校驗前臺發來的數據中,k為name和email的值的合法性
因為是form表單,所以提交后頁面會刷新,上次輸入的數據就沒有了,我們可以通過下面的方式實現保留上次輸入的值
前端代碼
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h2>form提交測試</h2>
<form method="post" action="/app1/login/">
<p>
{# <input type="text" name="name" placeholder="用戶名">#}
{# 這段html要django幫我們生成#}
{{ xx.name }}
<span>{{ xx.error.name.0 }}</span>
</p>
<p>
{# <input type="text" name="email" placeholder="郵箱">#}
{# 這段html要django幫我們生成#}
{{ xx.email }}
<span>{{ xx.error.email.0 }}</span>
</p>
<p>
<input type="text" name="pwd" placeholder="密碼">
</p>
<input type="submit" value="submit提交">
<input type="button" value="ajax提交" id="ajax_test1">
</form>
<script src="/static/jq/jquery-3.3.1.js"></script>
<script>
$(function () {
})
$("#ajax_test1").bind("click",function () {
$.ajax({
url:"/app1/login/",
type:"POST",
data:{
name:"cui",
email:"cui@126.com",
pwd:"admin123."
}
}
)
})
</script>
</body>
</html>后端代碼
from django.shortcuts import render
from django.shortcuts import HttpResponse
from django.shortcuts import redirect
# Create your views here.
from django import forms
"""
def login(request):
if request.method.lower() == "post":
print(request.POST.get("name"))
return redirect("/app1/login")
else:
return render(request,"login.html")
# return redirect("/app1/login")
# return HttpResponse("hahh")
"""
# 1、創建模板
class loginform(forms.Form):
# 2、模板中的元素
name = forms.CharField(min_length=6,error_messages={"required":"用戶名不能為空","min_length":"最小長度為6666666666"})
# requird這個是錯誤碼
email = forms.EmailField(error_messages={"required":"郵箱不能為空","invalid":"郵箱格式錯誤"})
def login(request):
if request.method.lower() == "post":
# 3、創建一個模板的對象,然后把數據傳遞個這個對象
obj = loginform(request.POST)
# 4、啟動校驗
status= obj.is_valid()
print(status)
# 5、正確的信息
success_dict = obj.clean()
print("正確的信息----------->",success_dict)
# 6_1、錯誤的信息1
# failed_dict = obj.errors.as_json()
# 6_2、錯誤的信息1
failed_dict = obj.errors
if not obj.is_valid():
# print(failed_dict["name"])
# print(failed_dict["name"][0])
print("錯誤的信息----------->",failed_dict)
print("名稱的錯誤信息-------->",failed_dict["name"][0])
print("郵箱的錯誤信息-------->", failed_dict["email"][0])
return render(request, "login.html", {'xx': obj})
# return redirect("/app1/login")
else:
obj = loginform()
# return render(request,"login.html")
# return redirect("/app1/login")
return render(request,"login.html",{"xx":obj})
# return HttpResponse("hahh")主要是要看這里


#Auther Bob
#--*--conding:utf-8 --*--
from django import forms
from django.forms import widgets
class DeatilForm(forms.Form):
# pwd = forms.CharField(widget=widgets.PasswordInput())
# user = forms.CharField(widget=widgets.TextInput())
pwd = forms.CharField(widget=widgets.PasswordInput(attrs={"class":"c1","placeholder":"密碼"}))
user = forms.CharField(widget=widgets.TextInput(attrs={"class":"c2","placeholder":"用戶名"}))
age = forms.IntegerField()
# 這里的效果是輸入框只能輸入數字,其他的都無法輸入
choice1 = forms.ChoiceField(choices=[(1,"內蒙古"),(2,"廣東"),(3,"黑龍江")])
choice2 = forms.CharField(
widget=widgets.Select(choices=[(1,"內蒙古"),(2,"廣東"),(3,"黑龍江")])
)
choice3 = forms.IntegerField(
widget=widgets.Select(choices=[(1,"內蒙古"),(2,"廣東"),(3,"黑龍江")])
)
choice4 = forms.IntegerField(
widget=widgets.RadioSelect(choices=[(1,"內蒙古"),(2,"廣東"),(3,"黑龍江")])
)
# 進行一下字段學習
class FiledForm(forms.Form):
arg1 = forms.CharField(
# 這個屬性是charfiled特有的
# max_length=233,大的字符長度
# min_length=234,最小的字符長度
# 下面這些屬性是filed都有的,下面參數都可以用下面的參數
# required=True 是否必填
# label=None 就是顯示一個字符串,在前臺渲染的時候用obj.arg1.label就會顯示label的值,只是一個錦上添花的作用
# initial=None 這里就是一個默認值,也就是初始值
# help_text=''這里就是一個幫助信息
# error_messages=None 出錯的時候顯示的信息
# show_hidden_initial=False 是否生成帶有默認值的一個隱藏的標簽,可以用來判斷現在的輸入值和默認值是否相同
# validators=() 自定義一個正則表達式
# localize=False 是否支持本地化,暫時不需要掌握
# disabled=False 標簽是否能否能編輯
# label_suffix=None 默認這個值就是冒號,也就是前面label的值和input框之間的冒號,如果設置了這個值,就會替代lable和input框中之間的冒號
# error_messages=None
# error_messages={"required":"不能為空","invalid":"格式錯誤",}
)
arg2 = forms.IntegerField(
# max_value=23, 大值
# min_value=21. 最小值
)
arg3 = forms.FloatField(
)
arg4 = forms.DateField(
# 頁面必須要滿足這個格式,格式是:2015-09-03
)
arg5 = forms.TimeField(
# 頁面必須要滿足這個格式,格式是:11:34
)
arg6 = forms.DateTimeField(
# 頁面必須要滿足這個格式,格式是:2015-09-03 11:34
)
arg7 = forms.EmailField(
)
arg8 = forms.PasswordInput(
)
arg9 = forms.RegexField(
# 通過正則表達式自定義字段
)
arg10 = forms.FileField(
)
arg11 = forms.ImageField(
)
# 單選框
arg12 = forms.ChoiceField(
initial=2,
choices=((1,"內蒙古"),(2,"黑龍江"),(3,"廣東"))
)
# 多選框
arg13 = forms.MultipleChoiceField(
initial=[1,2],
choices=((1,"內蒙古"),(2,"黑龍江"),(3,"廣東"))
)
arg14 = forms.FilePathField(
# recursive=False 是否遞歸顯示,是否顯示文件下的文件
# 指定一個路徑,會把這個路徑下所有的文件和路徑用select框顯示出來
)
arg15 = forms.GenericIPAddressField(
# 解析ip地址
)
arg16 = forms.SlugField(
# 只允許輸入,字母數字和下劃線減號
)
arg17 = forms.UUIDField(
# 只支持uuid格式的輸入
)
# 這里的arg*就是k值f8 = fields.ChoiceField( choices=[(1, "上海3"), (2, "北京3"), (3, "深圳3")], initial=3, required=True, label="城市", label_suffix="------>" ) f9 = fields.TypedChoiceField( choices=[(1, "上海4"), (2, "北京4"), (3, "深圳4")], initial=3, required=True, coerce=lambda x:int(x) ) f10 = fields.MultipleChoiceField( choices=[(1, "上海5"), (2, "北京5"), (3, "深圳5")], initial=[1,3,] ) f11 = fields.TypedMultipleChoiceField( choices=[(1, "上海5"), (2, "北京5"), (3, "深圳5")], initial=[1, 3, ], coerce=lambda x:int(x), ) f12 = fields.FilePathField(path="app1",allow_folders=True,recursive=False,allow_files=) # recursive:遞歸顯示,true不顯示,false顯示 # allow_folders:是否顯示文件夾 # allow_files:是否顯示文件 f13 = fields.GenericIPAddressField( protocol="both" ) f13 = fields.SlugField() # 只允許數字,字母,下劃線,減號
widget可以指定插件的類型

關于django中怎么使用form表單實現數據驗證就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
當前名稱:django中怎么使用form表單實現數據驗證-創新互聯
當前URL:http://www.yijiale78.com/article30/idipo.html
成都網站建設公司_創新互聯,為您提供網站營銷、網站收錄、ChatGPT、外貿建站、響應式網站、虛擬主機
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯