首頁 > 軟體

Django框架中檢視的用法

2022-06-10 22:02:42

檢視層

一個檢視函數,簡稱檢視,是一個簡單的 Python 函數,它接受 Web 請求並且返回 Web 響應。

響應可以是一個 HTML 頁面、一個 404 錯誤頁面、重定向頁面、XML 檔案、或者一張圖片...

無論檢視本身包含什麼邏輯,都要返回響應。程式碼寫在哪裡都可以,只要在 Python 目錄下面,一般放在專案的 views.py 檔案中。

每個檢視函數都負責返回一個 HttpResponse 物件,物件中包含生成的響應。

檢視層中有兩個重要的物件:請求物件(request)與響應物件(HttpResponse)。

一、請求物件: HttpRequest 物件(簡稱 request 物件)

以下介紹幾個常用的 request 屬性。

1、GET

資料型別是 QueryDict,一個類似於字典的物件,包含 HTTP GET 的所有引數。

有相同的鍵,就把所有的值放到對應的列表裡。

取值格式:物件.方法。

get():返回字串,如果該鍵對應有多個值,取出該鍵的最後一個值。

def runoob(request):
    name = request.GET.get("name")
    return HttpResponse('姓名:{}'.format(name))

2、POST

資料型別是 QueryDict,一個類似於字典的物件,包含 HTTP POST 的所有引數。

常用於 form 表單,form 表單裡的標籤 name 屬性對應引數的鍵,value 屬性對應引數的值。

取值格式: 物件.方法。

get():返回字串,如果該鍵對應有多個值,取出該鍵的最後一個值。

def runoob(request):
    name = request.POST.get("name")
return HttpResponse('姓名:{}'.format(name))

3、body

資料型別是二進位制位元組流,是原生請求體裡的引數內容,在 HTTP 中用於 POST,因為 GET 沒有請求體。

在 HTTP 中不常用,而在處理非 HTTP 形式的報文時非常有用,例如:二進位制圖片、XML、Json 等。

def runoob(request):
    name = request.body
print(name)
return HttpResponse("菜鳥教學")

4、path

獲取 URL 中的路徑部分,資料型別是字串。

def runoob(request):
    name = request.path
    print(name)
    return HttpResponse("菜鳥教學")

5、method

獲取當前請求的方式,資料型別是字串,且結果為大寫。

def runoob(request):
    name = request.method
    print(name)
    return HttpResponse("菜鳥教學")

二、響應物件:HttpResponse 物件

響應物件主要有三種形式:HttpResponse()、render()、redirect()。

HttpResponse(): 返回文字,引數為字串,字串中寫文字內容。如果引數為字串裡含有 html 標籤,也可以渲染。

def runoob(request):
# return HttpResponse("菜鳥教學")
return HttpResponse("<a href='http://https://www.runoob.com/>菜鳥教學</a>")

render(): 返回文字,第一個引數為 request,第二個引數為字串(頁面名稱),第三個引數為字典(可選引數,向頁面傳遞的引數:鍵為頁面引數名,值為views引數名)。

def runoob(request):
    name ="菜鳥教學"
return render(request,"runoob.html",{"name":name})

redirect():重定向,跳轉新頁面。引數為字串,字串中填寫頁面路徑。一般用於 form 表單提交後,跳轉到新頁面。

def runoob(request):
return redirect("/index/")

render 和 redirect 是在 HttpResponse 的基礎上進行了封裝:

  • render:底層返回的也是 HttpResponse 物件
  • redirect:底層繼承的是 HttpResponse 物件

到此這篇關於Django框架中檢視用法的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com