1. 程式人生 > >007---Django的檢視層

007---Django的檢視層

檢視函式

一個檢視函式,簡稱檢視,是一個簡單的python函式。它接收web請求並且返回web響應.
1、一張網頁的HTML內容
2、一個重定向
3、一個404錯誤
4、一個xml文件
5、一個字串
 1 def current_time(request):
 2     """
 3     1、首先,我們從django.shortcuts模組匯入了HttpResponse類。以及Python的datetime庫
 4     2、然後,定義了current_time函式,這個函式就是檢視函式,每個函式都會有第一個引數request,通常稱之為request。
5 檢視函式的名稱不重要,能反應其功能就ok 6 3、這個檢視函式會返回一個HttpResponse物件。 7 :param request: request 接收請求 8 :return: HttpResponse 返回響應 9 """ 10 now = datetime.datetime.now() 11 html = "<html><body>當前時間:%s</body></html>" % now 12 return HttpResponse(html)
無論檢視本身包含什麼邏輯,都要返回響應。
檢視層,熟練掌握;兩個物件即可:請求物件(request)和響應物件

HttpRequest物件

request屬性

def index(request):

    # 請求方式
    print(request.method)           # 最常見的有GET、POST兩種

    # 請求資料  django的內建資料型別,其實呃python的字典一樣,get取值
    # 判斷是否是POST方法,不能用if request.POST:pass 應該使用if request.method == 'POST':pass
# 還有一些鍵值對是多個值的時候,比如說checkbox,select標籤就要用request.POST.getlist('hobby')來取值 print(request.GET) # <QueryDict: {'name': ['1'], 'age': ['2']}> print(request.POST) # <QueryDict: {'name': ['111'], 'age': ['222']}> # 請求路徑 一個字串 不包含域名 ''' url:協議://ip:port//路徑/?引數 ''' print(request.path) # /index/ # 檔案 file_obj = request.FILES # request.FILES獲取上傳檔案資訊 只有在POST切form帶有enctype="multipart/form-data" 的情況下才會 # 包含資料。否則,FILES 將為一個空的類似於字典的物件。 print(file_obj) # 獲取檔名稱 file_obj.name # request.COOKIES 一個標準的python字典,包含所有的cookie。鍵值都是字串 # request.session 一個既可讀又可寫的類似於字典的物件,表示當前的會話。只有當Django 啟用會話的支援時才可用。和cookie一樣,都是會話相關 # request.user 使用者認證元件下使用,可用來判斷使用者是否登陸 # 方法 print(request.get_full_path()) # /index/?name=1&age=2 有路徑 還有攜帶的引數 print(request.is_ajax()) # 判斷請求方式是否為ajax發起的 bool python = 'Hello Python' # return HttpResponse("<h1 style='color:red'>1314</h1>") return render(request, 'index.html', {"python": python})

HttpResponse物件

響應物件主要有三種形式:

1、HttpResponse()

2、render()

3、redirect()

HttpResponse()括號內直接跟一個具體的字串作為響應體,比較直接很簡單。所以接收後兩種形式

render

render(request, template_name[, context])

引數:

  request:用於生成響應的請求物件

  template_name:要使用的模版的完整名稱,可選

  context:一個欄位,新增到模版上下文的字典,檢視將在渲染模版之前呼叫它。

作用:render()就是將一個模版頁面的模版語法進行渲染,最終渲染成一個html響應體。

redirect

傳遞一個重定向的硬編碼url 也可以是一個reverse反向解析的url

return redirect('/some/url')