Django
中請求的生命週期
HTTP請求及服務端響應中傳輸的所有數據都是字符串
步驟
用戶在瀏覽器中輸入url
時,瀏覽器會生成請求頭和請求體發給服務器
url
經過wsgi
和中間件,到達路由映射表,在路由中一條一條進行匹配
視圖函數根據客戶端的請求查詢響應的數據,返回給
Django
Django
把客戶端想要的數據做為一個字符串返回給客戶端
客戶端瀏覽器接收到返回的數據,經過渲染後顯示給用戶
FBV
一個url
對應一個視圖函數
在url
匹配成功之後,會直接執行對應的視圖函數。
CBV
一個url
對應一個類
url
匹配成功找到視圖函數中對應的類,然後這個類回到請求頭中找到對應的Request.Method
如果客戶端以post的方式提交請求,就執行類中的post方法如果客戶端以get的方式提交請求,就執行類中的get方法
步驟:
服務端發送包含url
和method的請求,這兩個信息都是字符串類型
服務端通過路由映射表匹配成功後會自動去找dispatch方法
Django
會通過dispatch反射的方式找到類中對應的方法並執行
勒種的方法執行完畢後,會把客戶端想要的數據返回給dispatch方法
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次圍觀