欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Django form表單與請(qǐng)求的生命周期步驟詳解

 更新時(shí)間:2020年06月07日 10:08:23   作者:平仄平仄平平仄  
這篇文章主要介紹了Django-form表單與請(qǐng)求的生命周期,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

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方法

步驟:

  1. 服務(wù)端發(fā)送包含url和method的請(qǐng)求,這兩個(gè)信息都是字符串類型
  2. 服務(wù)端通過路由映射表匹配成功后會(huì)自動(dòng)去找dispatch方法
  3. Django會(huì)通過dispatch反射的方式找到類中對(duì)應(yīng)的方法并執(zhí)行
  4. 勒種的方法執(zhí)行完畢后,會(huì)把客戶端想要的數(shù)據(jù)返回給dispatch方法
  5. 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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論