Form表單及django的form表單的補(bǔ)充
form 表單中的button按鈕
<button>提交</button> :放在form表單中,會(huì)有一個(gè)提交事件,會(huì)提交form數(shù)據(jù),
<input type="button" value="提交“> :是一個(gè)單純的按鈕,沒有任何默認(rèn)事件,
先匹配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")
在前端頁(yè)面的顯示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/login/" method="post">
{# csrf_token 在前端會(huì)渲染出一個(gè)input標(biāo)簽,是一組鍵值對(duì),鍵是csrfmiddlewaretoken,值是隨機(jī)字符串,會(huì)隨著下面的input標(biāo)簽一起提交,只有這種形式發(fā)送post的請(qǐng)求才能被接收,#}
{% 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里要?jiǎng)?chuàng)建一個(gè)類,繼承django的forms類,
然后在視圖函數(shù)中實(shí)例化出一個(gè)form對(duì)象,利用類的字段在前端頁(yè)面進(jìn)行顯示,
as_p 是把后端所有的字段都顯示,定制性不好,可以自定義,利用對(duì)象,跟上字段
在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() -------------------實(shí)例化對(duì)象,
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 在前端會(huì)渲染出一個(gè)input標(biāo)簽,是一組鍵值對(duì),鍵是csrfmiddlewaretoken,值是隨機(jī)字符串,會(huì)隨著下面的input標(biāo)簽一起提交,只有這種形式發(fā)送post的請(qǐng)求才能被接收,#}
{% csrf_token %}
<p>用戶名:{{ form_obj.user }}</p> ------------
<p>密 碼:{{ form_obj.pwd }}</p> -------------------
<input type="submit">
</form>
</body>
</html>
查看前端的元素,

---前端現(xiàn)在可以輸入數(shù)據(jù),但后端要對(duì)提交的數(shù)據(jù)要驗(yàn)證,
用到is_valid()的方法,取到提交的所有數(shù)據(jù),cleaned_data , 如果有錯(cuò)誤信息 用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的請(qǐng)求驗(yàn)證
formobj = LoginForm(request.POST)#拿到所有的提交數(shù)據(jù)
if formobj.is_valid():#都符合字段要求,
#取出所有符合字段要求的數(shù)據(jù),用cleaned_data
print(formobj.cleaned_data)#拿到字典格式的數(shù)據(jù)
else:
print(formobj.errors)#如果是提交錯(cuò)誤的數(shù)據(jù),用errors
return HttpResponse("OK!")
form_obj = LoginForm()
return render(request,"login.html",{"form_obj":form_obj})
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
YOLOv5車牌識(shí)別實(shí)戰(zhàn)教程(六)性能優(yōu)化與部署
這篇文章主要介紹了YOLOv5車牌識(shí)別實(shí)戰(zhàn)教程(六)性能優(yōu)化與部署,在這個(gè)教程中,我們將一步步教你如何使用YOLOv5進(jìn)行車牌識(shí)別,幫助你快速掌握YOLOv5車牌識(shí)別技能,需要的朋友可以參考下2023-04-04
python利用插值法對(duì)折線進(jìn)行平滑曲線處理
這篇文章主要為大家詳細(xì)介紹了python利用插值法對(duì)折線進(jìn)行平滑曲線處理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12
Python實(shí)現(xiàn)批量繪制遙感影像數(shù)據(jù)的直方圖
這篇文章主要為大家詳細(xì)介紹了如何基于Python中g(shù)dal模塊,實(shí)現(xiàn)對(duì)大量柵格圖像批量繪制直方圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-02-02
Python3中zip()函數(shù)知識(shí)點(diǎn)小結(jié)
本文主要介紹了Python3中zip()函數(shù)知識(shí)點(diǎn)小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
PIP安裝python包出現(xiàn)超時(shí)問題的解決
這篇文章主要介紹了PIP安裝python包出現(xiàn)超時(shí)問題的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
Python數(shù)據(jù)分析?Numpy?的使用方法
這篇文章主要介紹了Python數(shù)據(jù)分析?Numpy?的使用方法,Numpy?是一個(gè)Python擴(kuò)展庫(kù),專門做科學(xué)計(jì)算,也是大部分Python科學(xué)計(jì)算庫(kù)的基礎(chǔ),關(guān)于其的使用方法,需要的小伙伴可以參考下面文章內(nèi)容2022-05-05
python?Helium自動(dòng)化庫(kù)的功能特性探索
這篇文章主要為大家介紹了python?Helium自動(dòng)化庫(kù)的功能特性探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-02-02

