Form表單及django的form表單的補充
form 表單中的button按鈕
<button>提交</button> :放在form表單中,會有一個提交事件,會提交form數(shù)據(jù),
<input type="button" value="提交“> :是一個單純的按鈕,沒有任何默認事件,
先匹配url和視圖函數(shù)
from django.conf.urls import url from django.contrib import admin from app01 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^login/', views.login), ]
視圖函數(shù)
def login(request): if request.method == "POST": return HttpResponse("OK!") return render(request,"login.html")
在前端頁面的顯示
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="/login/" method="post"> {# csrf_token 在前端會渲染出一個input標簽,是一組鍵值對,鍵是csrfmiddlewaretoken,值是隨機字符串,會隨著下面的input標簽一起提交,只有這種形式發(fā)送post的請求才能被接收,#} {% csrf_token %} <p>用戶名:<input type="text" name="user"></p> <p>密碼:<input type="password" name="pwd"></p> <input type="submit"> </form> </body> </html>
----上面是正常的使用HTML的原生form表單,
現(xiàn)在使用django提供的form表單,在views里要創(chuàng)建一個類,繼承django的forms類,
然后在視圖函數(shù)中實例化出一個form對象,利用類的字段在前端頁面進行顯示,
as_p 是把后端所有的字段都顯示,定制性不好,可以自定義,利用對象,跟上字段
在views 創(chuàng)鍵類,
from django.shortcuts import render,HttpResponse # Create your views here. #使用django的form類 from django import forms class LoginForm(forms.Form): user = forms.CharField() pwd = forms.CharField() def login(request): if request.method == "POST": return HttpResponse("OK!") form_obj = LoginForm() -------------------實例化對象, return render(request,"login.html",{"form_obj":form_obj}) ---傳到前端顯示
在前端接收,渲染
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="/login/" method="post"> {# csrf_token 在前端會渲染出一個input標簽,是一組鍵值對,鍵是csrfmiddlewaretoken,值是隨機字符串,會隨著下面的input標簽一起提交,只有這種形式發(fā)送post的請求才能被接收,#} {% csrf_token %} <p>用戶名:{{ form_obj.user }}</p> ------------ <p>密 碼:{{ form_obj.pwd }}</p> ------------------- <input type="submit"> </form> </body> </html>
查看前端的元素,
---前端現(xiàn)在可以輸入數(shù)據(jù),但后端要對提交的數(shù)據(jù)要驗證,
用到is_valid()的方法,取到提交的所有數(shù)據(jù),cleaned_data , 如果有錯誤信息 用errors,
#使用django的form類 from django import forms class LoginForm(forms.Form): user = forms.CharField(max_length=9,min_length=5,error_messages={"required":"必填"}) pwd = forms.CharField() def login(request): if request.method == "POST": #post的請求驗證 formobj = LoginForm(request.POST)#拿到所有的提交數(shù)據(jù) if formobj.is_valid():#都符合字段要求, #取出所有符合字段要求的數(shù)據(jù),用cleaned_data print(formobj.cleaned_data)#拿到字典格式的數(shù)據(jù) else: print(formobj.errors)#如果是提交錯誤的數(shù)據(jù),用errors return HttpResponse("OK!") form_obj = LoginForm() return render(request,"login.html",{"form_obj":form_obj})
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
YOLOv5車牌識別實戰(zhàn)教程(六)性能優(yōu)化與部署
這篇文章主要介紹了YOLOv5車牌識別實戰(zhàn)教程(六)性能優(yōu)化與部署,在這個教程中,我們將一步步教你如何使用YOLOv5進行車牌識別,幫助你快速掌握YOLOv5車牌識別技能,需要的朋友可以參考下2023-04-04Python實現(xiàn)批量繪制遙感影像數(shù)據(jù)的直方圖
這篇文章主要為大家詳細介紹了如何基于Python中gdal模塊,實現(xiàn)對大量柵格圖像批量繪制直方圖,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下2023-02-02Python3中zip()函數(shù)知識點小結(jié)
本文主要介紹了Python3中zip()函數(shù)知識點小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-02-02Python數(shù)據(jù)分析?Numpy?的使用方法
這篇文章主要介紹了Python數(shù)據(jù)分析?Numpy?的使用方法,Numpy?是一個Python擴展庫,專門做科學計算,也是大部分Python科學計算庫的基礎,關于其的使用方法,需要的小伙伴可以參考下面文章內(nèi)容2022-05-05