歡迎您光臨本站 註冊首頁

Django form表單與請求的生命週期步驟詳解

←手機掃碼閱讀     kyec555 @ 2020-06-11 , reply:0

Django中請求的生命週期

HTTP請求及服務端響應中傳輸的所有數據都是字符串

步驟

  • 用戶在瀏覽器中輸入url時,瀏覽器會生成請求頭和請求體發給服務器

  • url經過wsgi和中間件,到達路由映射表,在路由中一條一條進行匹配

  • 視圖函數根據客戶端的請求查詢響應的數據,返回給

  • DjangoDjango把客戶端想要的數據做為一個字符串返回給客戶端

  • 客戶端瀏覽器接收到返回的數據,經過渲染後顯示給用戶

FBV

一個url對應一個視圖函數

url匹配成功之後,會直接執行對應的視圖函數。

CBV

一個url對應一個類

url匹配成功找到視圖函數中對應的類,然後這個類回到請求頭中找到對應的Request.Method如果客戶端以post的方式提交請求,就執行類中的post方法如果客戶端以get的方式提交請求,就執行類中的get方法

步驟:

  1. 服務端發送包含url和method的請求,這兩個信息都是字符串類型

  2. 服務端通過路由映射表匹配成功後會自動去找dispatch方法

  3. Django會通過dispatch反射的方式找到類中對應的方法並執行

  4. 勒種的方法執行完畢後,會把客戶端想要的數據返回給dispatch方法

  5. dispatch方法把數據返回給客戶端

form表單

定義:

Django的表單系統中,所有的表單都繼承自django.forms.Form

Django的表單系統

  form_obj.as_p		 #在html網頁渲染所有的字段  label				#為一個標籤添加id號  form_obj.字段		 #渲染指定的字段  min_length			#綁定字段的最短長度  max_length			#綁定字段的最長長度  is_valid()			#驗證用戶輸入的信息是否有效,返回一個布爾值  cleaned_data()		 #清洗數據  error_massage()		 #定義錯誤的返回信息  #文件上傳:  request.POST.get("file")	#獲取上傳的文件的文件名  request.FILES			#獲取上傳文件的對象	結果是一個字段  file_obj.name			#獲取上傳文件在內存中的名字  #上傳文件時要使用分片傳輸的方式  #上傳  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__"		#顯示數據表中所有的字段  fields = ["username","age"]	#顯示數據表的某些指定的字段  exclude = ["email"]		#不顯示數據表的某些字段  #自定義頁面的標籤  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"})}

 


[kyec555 ] Django form表單與請求的生命週期步驟詳解已經有235次圍觀

http://coctec.com/docs/python/shhow-post-238063.html