Django之views檢視函式
阿新 • • 發佈:2020-09-06
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方法只是直接返回一個頁面,上方的位址列中的路徑還是原來的路徑。