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ù),返回給
DjangoDjango把客戶端想要的數(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)文章
深度學(xué)習(xí)TextRNN的tensorflow1.14實(shí)現(xiàn)示例
這篇文章主要介紹了深度學(xué)習(xí)TextRNN的tensorflow1.14實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
Python區(qū)塊鏈創(chuàng)建Genesis Block教程
這篇文章主要為大家介紹了Python區(qū)塊鏈創(chuàng)建Genesis Block教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
使用python讀寫txt和json(jsonl)大文件的方法步驟
在Python中讀取txt和json(jsonl)大文件并保存到字典是一項(xiàng)非常常見的操作,這篇文章主要給大家介紹了關(guān)于使用python讀寫txt和json(jsonl)大文件的方法步驟,需要的朋友可以參考下2023-12-12
Java中MultipartFile與File互轉(zhuǎn)的實(shí)現(xiàn)
本文主要介紹了Java中MultipartFile與File互轉(zhuǎn)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
Python Opencv使用ann神經(jīng)網(wǎng)絡(luò)識(shí)別手寫數(shù)字功能
這篇文章主要介紹了opencv(python)使用ann神經(jīng)網(wǎng)絡(luò)識(shí)別手寫數(shù)字,由于這里主要研究knn算法,為了圖簡(jiǎn)單,直接使用Keras的mnist手寫數(shù)字解析模塊,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
Python入門教程(十九)python的函數(shù)詳解
這篇文章主要介紹了Python入門教程(十九)python的函數(shù),函數(shù)是組織好的,可重復(fù)使用的,用來(lái)實(shí)現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段,需要的朋友可以參考下2023-04-04

