您好,登錄后才能下訂單哦!
django的表單系統,分2種
直接用原生的form表單,也可以直接用,較麻煩,
django的form表單,也可用可不要,
在views里創建一個類,繼承了forms.Form ,每個字段就是一個輸入框,
#----- #django 的form表單 from django import forms class MyForm(forms.Form): #forms對應的是前端的form表單,form 表單要驗證的字段 #都與校驗有關系,與數據庫沒有關系 #封裝性強,可以 在前端指定顯示那些字段,label 是顯示指定的數據, user = forms.CharField(label="用戶名")#輸入的用戶名, age = forms.IntegerField(label="年齡") email = forms.EmailField() #form注冊 def reg2(request): # 實列化出一個form對象,傳到前端 form_obj = MyForm() return render(request,"reg2.html",{"form_obj":form_obj})
在前端新建一個注冊頁面,前端渲染表單,是后端表單類實例出來的對象,用對象調用每個字段,
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h4>form表單使用</h4> <form action="/reg2/" method="post"> {# 渲染從后端傳來的變量,as_p 是段落#} {% csrf_token %} {# {{ form_obj.as_p }}#} <p>姓名{{ form_obj.user }}</p> <p>年齡{{ form_obj.age }}</p> <p>郵箱{{ form_obj.email }}</p> </form> </body> </html>
可以從瀏覽器的檢查元素中看到,瀏覽器自動添加了一些東西,
<body> <h4>form表單使用</h4> <form action="/reg2/" method="post"> <input name="csrfmiddlewaretoken" value="GyY3KE5uM7HeErOEZ8OQFwUJYQYaknrOmavdmfufBuVOHdDSWfeHDyt2pjXarGAV" type="hidden"> <p>姓名<input name="user" required="" id="id_user" type="text"></p> <p>年齡<input name="age" required="" id="id_age" type="number"></p> <p>郵箱<input name="email" required="" id="id_email" type="email"></p> </form> </body>
如果在前端頁面隨便輸入就提交,前端會做校驗,這都是瀏覽器做的校驗,
可以自己定制,字段的錯誤信息提示,和顯示信息,
#django 的form表單 from django import forms class MyForm(forms.Form): #forms對應的是前端的form表單,form 表單要驗證的字段 #都與校驗有關系,與數據庫沒有關系 #封裝性強,可以 在前端指定顯示那些字段,label 是顯示指定的數據,require 是必須填寫的, user = forms.CharField(label="用戶名",min_length=5,max_length=8)#輸入的用戶名, age = forms.IntegerField(label="年齡",error_messages={"required":"必填",}) email = forms.EmailField() #form注冊 def reg2(request): errors_obj = " " if request.method == "POST": form_post = MyForm(request.POST)#拿到請求的所有數據 if form_post.is_valid():#判斷數據是否合法,返回布爾值, print("data",form_post.cleaned_data)#獲取數據,得到一個字典格式, #添加數據庫 # User.objects.create_user() # 實列化出一個form對象,傳到前端 #如果是輸入不合格式的信息,錯誤信息, else: #獲取錯誤信息 errors_obj = form_post.errors # print("error",form_post.errors["user"][0]) # print("error",form_post.errors["age"]) # print("error",type(form_post.errors))#字典類型, form_obj = MyForm() return render(request,"reg2.html",{"form_obj":form_obj,"errors_obj":errors_obj})
在前端頁面
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h4>form表單使用</h4> <form action="/reg2/" method="post"> {# 渲染從后端傳來的變量,as_p 是段落#} {% csrf_token %} {# {{ form_obj.as_p }}#} <p>姓名{{ form_obj.user }} <span>{{ errors.obj.user.0 }}</span> </p> <p>年齡{{ form_obj.age }}<span>{{ errors.obj.age.0 }}</span></p> <p>郵箱{{ form_obj.email }}<span>{{ errors.obj.email.0 }}</span></p> <input type="submit"> </form> </body> </html>
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。