Django form表單與請(qǐng)求的生命周期步驟詳解
Django
中請(qǐng)求的生命周期
HTTP請(qǐng)求及服務(wù)端響應(yīng)中傳輸?shù)乃袛?shù)據(jù)都是字符串
步驟
- 用戶在瀏覽器中輸入
url
時(shí),瀏覽器會(huì)生成請(qǐng)求頭和請(qǐng)求體發(fā)給服務(wù)器 url
經(jīng)過wsgi
和中間件,到達(dá)路由映射表,在路由中一條一條進(jìn)行匹配- 視圖函數(shù)根據(jù)客戶端的請(qǐng)求查詢響應(yīng)的數(shù)據(jù),返回給
Django
Django
把客戶端想要的數(shù)據(jù)做為一個(gè)字符串返回給客戶端- 客戶端瀏覽器接收到返回的數(shù)據(jù),經(jīng)過渲染后顯示給用戶
FBV
一個(gè)url
對(duì)應(yīng)一個(gè)視圖函數(shù)
在url
匹配成功之后,會(huì)直接執(zhí)行對(duì)應(yīng)的視圖函數(shù)。
CBV
一個(gè)url
對(duì)應(yīng)一個(gè)類
url
匹配成功找到視圖函數(shù)中對(duì)應(yīng)的類,然后這個(gè)類回到請(qǐng)求頭中找到對(duì)應(yīng)的Request.Method
如果客戶端以post的方式提交請(qǐng)求,就執(zhí)行類中的post方法如果客戶端以get的方式提交請(qǐng)求,就執(zhí)行類中的get方法
步驟:
- 服務(wù)端發(fā)送包含
url
和method的請(qǐng)求,這兩個(gè)信息都是字符串類型 - 服務(wù)端通過路由映射表匹配成功后會(huì)自動(dòng)去找dispatch方法
Django
會(huì)通過dispatch反射的方式找到類中對(duì)應(yīng)的方法并執(zhí)行- 勒種的方法執(zhí)行完畢后,會(huì)把客戶端想要的數(shù)據(jù)返回給dispatch方法
- dispatch方法把數(shù)據(jù)返回給客戶端
form表單
定義:
Django
的表單系統(tǒng)中,所有的表單都繼承自django.forms.Form
類
Django
的表單系統(tǒng)
form_obj.as_p #在html網(wǎng)頁(yè)渲染所有的字段 label #為一個(gè)標(biāo)簽添加id號(hào) form_obj.字段 #渲染指定的字段 min_length #綁定字段的最短長(zhǎng)度 max_length #綁定字段的最長(zhǎng)長(zhǎng)度 is_valid() #驗(yàn)證用戶輸入的信息是否有效,返回一個(gè)布爾值 cleaned_data() #清洗數(shù)據(jù) error_massage() #定義錯(cuò)誤的返回信息 #文件上傳: request.POST.get("file") #獲取上傳的文件的文件名 request.FILES #獲取上傳文件的對(duì)象 結(jié)果是一個(gè)字段 file_obj.name #獲取上傳文件在內(nèi)存中的名字 #上傳文件時(shí)要使用分片傳輸?shù)姆绞? #上傳 enctype="multipart/form-data" #form表單的屬性里添加 #接收 if request.method=="POST": file_obj = request.FILES.get("up_file") fl = open(file_obj.name,'vb') for i in file_obj.chunks(): fl.write(i) fl.close()
#可以在class Meta中設(shè)定的功能 model = model.UserInfo #顯示對(duì)于Model的字典,這里顯示用戶信息表 fields = "__all__" #顯示數(shù)據(jù)表中所有的字段 fields = ["username","age"] #顯示數(shù)據(jù)表的某些指定的字段 exclude = ["email"] #不顯示數(shù)據(jù)表的某些字段 #自定義頁(yè)面的標(biāo)簽 labels = {"username":"用戶名","age":"年齡","email":"郵箱"} #自定義在標(biāo)簽后面顯示的提示幫助信息 help_texts = {"username":"請(qǐng)輸入正確的用戶名","email":"請(qǐng)輸入正確的郵箱"} #自定義錯(cuò)誤信息,用戶輸入錯(cuò)誤時(shí)提示 error_messages = {"username":{"required":"用戶名不能為空"},"email":{"invalid":"郵箱不能為空"}} #自定義標(biāo)簽的類型,在這里把email這個(gè)輸入框的類型更改為email類型 from django import fields as field_widget field_classes = {}"email":field_widget.EmailField} #自定義插件(attrs為插件的屬性) from django.forms import widgets as formwidget widgets = {"username":formwidget.Textarea(attrs={"class":"c1"})}
總結(jié)
到此這篇關(guān)于Django-form表單與請(qǐng)求的生命周期的文章就介紹到這了,更多相關(guān)Django-form表單與請(qǐng)求的生命周期內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Django表單外鍵選項(xiàng)初始化的問題及解決方法
- django表單中的按鈕獲取數(shù)據(jù)的實(shí)例分析
- Django def clean()函數(shù)對(duì)表單中的數(shù)據(jù)進(jìn)行驗(yàn)證操作
- Django 構(gòu)建模板form表單的兩種方法
- Django model.py表單設(shè)置默認(rèn)值允許為空的操作
- Django表單提交后實(shí)現(xiàn)獲取相同name的不同value值
- Django框架獲取form表單數(shù)據(jù)方式總結(jié)
- django之從html頁(yè)面表單獲取輸入的數(shù)據(jù)實(shí)例
- 解決django中form表單設(shè)置action后無(wú)法回到原頁(yè)面的問題
- django-xadmin根據(jù)當(dāng)前登錄用戶動(dòng)態(tài)設(shè)置表單字段默認(rèn)值方式
- Django給表單添加honeypot驗(yàn)證增加安全性
相關(guān)文章
python如何實(shí)現(xiàn)斐波那契數(shù)列
這篇文章主要介紹了python如何實(shí)現(xiàn)斐波那契數(shù)列問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08tensorflow實(shí)現(xiàn)softma識(shí)別MNIST
這篇文章主要為大家詳細(xì)介紹了tensorflow實(shí)現(xiàn)softma識(shí)別MNIST,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03python 疊加等邊三角形的繪制的實(shí)現(xiàn)
這篇文章主要介紹了python 疊加等邊三角形的繪制的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08Python pypinyin注音庫(kù)輕松絲滑實(shí)現(xiàn)漢字轉(zhuǎn)換成拼音
pypinyin 庫(kù),能像功夫熊貓那樣,輕松、快捷地幫你把漢字轉(zhuǎn)換成拼音,有了 pypinyin,不僅可以節(jié)省寶貴的時(shí)間,還可以更準(zhǔn)確地展示中文字符的讀音,使文化交流更為順暢,本文帶大家一起探索 pypinyin 庫(kù)的魅力2024-01-01Python實(shí)現(xiàn)一鍵改變r(jià)aw格式照片風(fēng)格
這篇文章主要為大家詳細(xì)介紹了如何基于Python實(shí)現(xiàn)一鍵改變r(jià)aw格式照片風(fēng)格效果,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的可以一起學(xué)習(xí)一下2023-05-05Python全面解析json數(shù)據(jù)并保存為csv文件
這篇文章主要介紹了Python全面解析json數(shù)據(jù)并保存為csv文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07python+opencv實(shí)現(xiàn)移動(dòng)偵測(cè)(幀差法)
這篇文章主要為大家詳細(xì)介紹了python+opencv實(shí)現(xiàn)移動(dòng)偵測(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03