天天看點

Django 視圖

一個視圖函數,簡稱視圖,是一個簡單的 Python 函數,它接受 Web 請求并且傳回 Web 響應。

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

無論視圖本身包含什麼邏輯,都要傳回響應。代碼寫在哪裡都可以,隻要在 Python 目錄下面,一般放在項目的 views.py 檔案中。

每個視圖函數都負責傳回一個 HttpResponse 對象,對象中包含生成的響應。

視圖層中有兩個重要的對象:請求對象(request)與響應對象(HttpResponse)。

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

資料類型是 QueryDict,一個類似于字典的對象,包含 HTTP GET 的所有參數。

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

取值格式:對象.方法。

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

def runoob(request):

    name = request.GET.get("name")

    return HttpResponse('姓名:{}'.format(name))

Django 視圖

資料類型是 QueryDict,一個類似于字典的對象,包含 HTTP POST 的所有參數。

常用于 form 表單,form 表單裡的标簽 name 屬性對應參數的鍵,value 屬性對應參數的值。

取值格式: 對象.方法。

    name = request.POST.get("name")

Django 視圖

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

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

    name = request.body

    print(name)

    return HttpResponse("菜鳥教程")

Django 視圖

擷取 URL 中的路徑部分,資料類型是字元串。

    name = request.path

Django 視圖

擷取目前請求的方式,資料類型是字元串,且結果為大寫。

    name = request.method

Django 視圖

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

HttpResponse(): 傳回文本,參數為字元串,字元串中寫文本内容。如果參數為字元串裡含有 html 标簽,也可以渲染。

    # return HttpResponse("菜鳥教程")

    return HttpResponse("<a href='https://www.runoob.com/'>菜鳥教程</a>")

Django 視圖

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

    name ="菜鳥教程"

    return render(request,"runoob.html",{"name":name})

Django 視圖

redirect():重定向,跳轉新頁面。參數為字元串,字元串中填寫頁面路徑。一般用于 form 表單送出後,跳轉到新頁面。

    return redirect("/index/")

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

render:底層傳回的也是 HttpResponse 對象

redirect:底層繼承的是 HttpResponse 對象