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