視圖函數,簡稱視圖,本質上是一個簡單的Python函數,它接受Web請求而且返回Web響應。響應的內容能夠是HTML網頁,重定向,404錯誤,圖片等任何東西,但本質是返回響應對象HttpResponse。php
視圖函數的代碼寫哪裏均可以,但通常約定俗成設置在項目或應用程序目錄中的views.py文件中html
視圖案例:前端
from django.shortcuts import render, HttpResponse, HttpResponseRedirect, redirect import datetime def current_datetime(request): now = datetime.datetime.now() html = "<html><body>It is now %s.</body></html>" % now return HttpResponse(html)
解析:python
django.shortcuts
模塊導入了HttpResponse
類,以及Python的datetime
庫。current_datetime
函數。它就是視圖函數。每一個視圖函數都使用HttpRequest
對象做爲第一個參數,而且一般稱之爲request
。 視圖函數的名字能反映除它的功能便可HttpResponse
對象,其中包含生成的響應。每一個視圖函數都負責返回一個HttpResponse
對象。django將請求報文中的請求行、首部信息、內容主題封裝成HttpRequest類中的屬性。除特殊說明外,其餘均爲只讀
1. request.POST # 前臺Post傳過來的數據,包裝到POST字典中 2. request.GET # 前臺瀏覽器窗口裏攜帶的數據,包裝到GET字典中 3. request.method # 前臺請求的方式 4. request.body # post提交的數據,body體的內容,前臺會封裝成:name=lqz&age=18&sex=1 5. request.path # 取出請求的路徑,取不到數據部分 6. request.encoding #一個字符串,表示提交的數據的編碼方式,默認'utf-8' 7. request.META #一個標準的Python 字典,包含全部的HTTP 首部 CONTENT_LENGTH —— 請求的正文的長度(是一個字符串)。 CONTENT_TYPE —— 請求的正文的MIME 類型。 HTTP_ACCEPT —— 響應可接收的Content-Type。 HTTP_ACCEPT_ENCODING —— 響應可接收的編碼。 HTTP_ACCEPT_LANGUAGE —— 響應可接收的語言。 HTTP_HOST —— 客服端發送的HTTP Host 頭部。 HTTP_REFERER —— Referring 頁面。 HTTP_USER_AGENT —— 客戶端的user-agent 字符串。 QUERY_STRING —— 單個字符串形式的查詢字符串(未解析過的形式)。 REMOTE_ADDR —— 客戶端的IP 地址。 REMOTE_HOST —— 客戶端的主機名。 REMOTE_USER —— 服務器認證後的用戶。 REQUEST_METHOD —— 一個字符串,例如"GET" 或"POST"。 SERVER_NAME —— 服務器的主機名。 SERVER_PORT —— 服務器的端口(是一個字符串)。 -------------------------------- 除CONTENT_LENGTH 和 CONTENT_TYPE 以外,請求中的任何 HTTP 首部轉換爲 META 的鍵時, 都會將全部字母大寫並將鏈接符替換爲下劃線最後加上 HTTP_ 前綴。 --------------------------------- 8. request.FILES #包含全部的上傳文件信息。 9. request.COOKIES #字典格式,鍵和只都是字符串,包含全部的cookie 10. request.session #當前會話,只有當django啓用會話時纔可用 11. request.user(用戶認證組件) 一個 AUTH_USER_MODEL 類型的對象,表示當前登陸的用戶。 若是用戶當前沒有登陸,user 將設置爲 django.contrib.auth.models.AnonymousUser 的一個實例。 你能夠經過 is_authenticated() 區分它們。 例如: if request.user.is_authenticated(): # Do something for logged-in users. else: # Do something for anonymous users. user 只有當Django 啓用 AuthenticationMiddleware 中間件時纔可用。 ----------------------------------------------------------------------------- 匿名用戶 class models.AnonymousUser django.contrib.auth.models.AnonymousUser 類實現了django.contrib.auth.models.User 接 口,但具備下面幾個不一樣點: id 永遠爲None。 username 永遠爲空字符串。 get_username() 永遠返回空字符串。 is_staff 和 is_superuser 永遠爲False。 is_active 永遠爲 False。 groups 和 user_permissions 永遠爲空。 is_anonymous() 返回True 而不是False。 is_authenticated() 返回False 而不是True。 set_password()、check_password()、save() 和delete() 引起 NotImplementedError。 New in Django 1.8: 新增 AnonymousUser.get_username() 以更好地模擬 django.contrib.auth.models.User。
注:FILES 只有在請求的方法爲POST 且提交的ajax