1. 程式人生 > >Django之views檢視函式

Django之views檢視函式

views檢視函式屬於MTV中邏輯處理的部分
檢視函式包含著兩個物件,HttpRequest物件和HttpResponse物件

一.HttpRequest物件

HttpRequest物件在Django中會預設傳到views函式中作為第一個引數

HttpRequest的屬性:

屬性 說明
path 請求頁面的全路徑,不包括域名
method 請求中使用的HTTP方法
GET 包含所有HTTP GET引數的類字典物件
POST 包含所有HTTP POST引數的類字典物件
REQUEST 該屬性是POST和GET屬性的集合體,先查詢POST屬性,然後再查詢GET屬性
COOKIES 包含所有cookies的標準Python字典物件
FILES 包含所有上傳檔案的類字典物件。FILES中的每個Key都是<input type=”file” name=”” />標籤中name屬性的值. FILES中的每個value 同時也是一個標準Python字典物件,包含下面三個Keys: filename: 上傳檔名,用Python字串表示 content-type: 上傳檔案的Content type content: 上傳檔案的原始內容
META 包含所有可用HTTP頭部資訊的字典
user 是一個django.contrib.auth.models.User 物件,代表當前登入的使用者。如果訪問使用者當前沒有登入,user將被初始化為django.contrib.auth.models.AnonymousUser的例項
session 唯一可讀寫的屬性,代表當前會話的字典物件。只有啟用Django中的session支援時該屬性才可用
raw_post_data 原始HTTP POST資料,未解析過

HttpRequest的方法:

方法 說明
getitem(key) 返回GET/POST的鍵值,先取POST,後取GET
has_key() 檢查request.GET or request.POST中是否包含引數指定的Key
get_full_path() 返回包含查詢字串的請求路徑,包含get方式傳送的資料
is_secure() 如果請求是安全的,返回True

二.HttpResponse物件

HttpResponse物件是我們手動建立的,為了給使用者傳送一個相應,一般返回的就是讓瀏覽器去渲染的前端頁面。
例如:


from django.shortcuts import HttpResponse

def login(req):
    return HttpResponse("welcome")

在HttpResponse的基礎上拓展了兩個常用方法render方法和redirect方法

render方法

render方法用於將有關資訊利用模板新增到要給使用者傳送的html文件中
render方法的引數:

  • request:即檢視函式中的HttpRequest物件,也就是第一個引數
  • template_name:templates 中定義的檔案,也就是html文件
  • context: 要傳入html文件中用於渲染呈現的資料, 預設是字典格式。也可以使用locals(),表示將函式中所有的變數傳給模板
  • content_type: 生成的文件要使用的MIME 型別。預設為DEFAULT_CONTENT_TYPE 設定的值
  • status: http的響應程式碼,預設是200
  • using: 用於載入模板使用的模板引擎的名稱

例如:


def login(req):
    return render(req,"test.html",{"name":"sfencs"})

redirect方法

redirect方法表示重定向,引數可以一個完整的url路徑如”https://www.cnblogs.com/"也可以是一個本網站的分支路徑如"/login/
這裡有一點要注意,如果redirect的路徑中寫的是”login/“,即沒有前面那一個“/”,那麼會重定向到你當前頁面的路徑後再加上”login/“的那個路徑。
redirect方法與render方法的區別在於redirect方法會重新走一遍重定向路徑的檢視函式的邏輯,render方法只是直接返回一個頁面,上方的位址列中的路徑還是原來的路徑。