Django框架中視圖的用法
視圖層
一個視圖函數(shù),簡稱視圖,是一個簡單的 Python 函數(shù),它接受 Web 請求并且返回 Web 響應(yīng)。
響應(yīng)可以是一個 HTML 頁面、一個 404 錯誤頁面、重定向頁面、XML 文檔、或者一張圖片...
無論視圖本身包含什么邏輯,都要返回響應(yīng)。代碼寫在哪里都可以,只要在 Python 目錄下面,一般放在項目的 views.py 文件中。
每個視圖函數(shù)都負(fù)責(zé)返回一個 HttpResponse 對象,對象中包含生成的響應(yīng)。
視圖層中有兩個重要的對象:請求對象(request)與響應(yīng)對象(HttpResponse)。
一、請求對象: HttpRequest 對象(簡稱 request 對象)
以下介紹幾個常用的 request 屬性。
1、GET
數(shù)據(jù)類型是 QueryDict,一個類似于字典的對象,包含 HTTP GET 的所有參數(shù)。
有相同的鍵,就把所有的值放到對應(yīng)的列表里。
取值格式:對象.方法。
get():返回字符串,如果該鍵對應(yīng)有多個值,取出該鍵的最后一個值。
def runoob(request): name = request.GET.get("name") return HttpResponse('姓名:{}'.format(name))
2、POST
數(shù)據(jù)類型是 QueryDict,一個類似于字典的對象,包含 HTTP POST 的所有參數(shù)。
常用于 form 表單,form 表單里的標(biāo)簽 name 屬性對應(yīng)參數(shù)的鍵,value 屬性對應(yīng)參數(shù)的值。
取值格式: 對象.方法。
get():返回字符串,如果該鍵對應(yīng)有多個值,取出該鍵的最后一個值。
def runoob(request): name = request.POST.get("name") return HttpResponse('姓名:{}'.format(name))
3、body
數(shù)據(jù)類型是二進(jìn)制字節(jié)流,是原生請求體里的參數(shù)內(nèi)容,在 HTTP 中用于 POST,因為 GET 沒有請求體。
在 HTTP 中不常用,而在處理非 HTTP 形式的報文時非常有用,例如:二進(jìn)制圖片、XML、Json 等。
def runoob(request): name = request.body print(name) return HttpResponse("菜鳥教程")
4、path
獲取 URL 中的路徑部分,數(shù)據(jù)類型是字符串。
def runoob(request): name = request.path print(name) return HttpResponse("菜鳥教程")
5、method
獲取當(dāng)前請求的方式,數(shù)據(jù)類型是字符串,且結(jié)果為大寫。
def runoob(request): name = request.method print(name) return HttpResponse("菜鳥教程")
二、響應(yīng)對象:HttpResponse 對象
響應(yīng)對象主要有三種形式:HttpResponse()、render()、redirect()。
HttpResponse(): 返回文本,參數(shù)為字符串,字符串中寫文本內(nèi)容。如果參數(shù)為字符串里含有 html 標(biāo)簽,也可以渲染。
def runoob(request): # return HttpResponse("菜鳥教程") return HttpResponse("<a href='http://https://www.runoob.com/>菜鳥教程</a>")
render(): 返回文本,第一個參數(shù)為 request,第二個參數(shù)為字符串(頁面名稱),第三個參數(shù)為字典(可選參數(shù),向頁面?zhèn)鬟f的參數(shù):鍵為頁面參數(shù)名,值為views參數(shù)名)。
def runoob(request): name ="菜鳥教程" return render(request,"runoob.html",{"name":name})
redirect():重定向,跳轉(zhuǎn)新頁面。參數(shù)為字符串,字符串中填寫頁面路徑。一般用于 form 表單提交后,跳轉(zhuǎn)到新頁面。
def runoob(request): return redirect("/index/")
render 和 redirect 是在 HttpResponse 的基礎(chǔ)上進(jìn)行了封裝:
- render:底層返回的也是 HttpResponse 對象
- redirect:底層繼承的是 HttpResponse 對象
到此這篇關(guān)于Django框架中視圖用法的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
PyTorch詳解經(jīng)典網(wǎng)絡(luò)ResNet實(shí)現(xiàn)流程
ResNet全稱residual neural network,主要是解決過深的網(wǎng)絡(luò)帶來的梯度彌散,梯度爆炸,網(wǎng)絡(luò)退化(即網(wǎng)絡(luò)層數(shù)越深時,在數(shù)據(jù)集上表現(xiàn)的性能卻越差)的問題2022-05-05Python中的數(shù)據(jù)可視化matplotlib與繪圖庫模塊
這篇文章介紹了Python中的數(shù)據(jù)可視化matplotlib與繪圖庫模塊,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05python使用xauth方式登錄飯否網(wǎng)然后發(fā)消息
這篇文章主要介紹了python使用xauth方式登錄飯否網(wǎng)然后發(fā)消息示例,需要的朋友可以參考下2014-04-04Python樹莓派學(xué)習(xí)筆記之UDP傳輸視頻幀操作詳解
這篇文章主要介紹了Python樹莓派學(xué)習(xí)筆記之UDP傳輸視頻幀操作,結(jié)合實(shí)例形式詳細(xì)分析了Python樹莓派編程中使用UDP協(xié)議進(jìn)行視頻幀傳輸?shù)南嚓P(guān)操作技巧與注意事項,需要的朋友可以參考下2019-11-11