程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Django視圖(二)

編輯:Python

目錄

一、HttpRequest對象

1.屬性

2.URL路徑參數

3.Django中的QueryDict對象

二、HttpResponse對象

1. HttpResponse

2. HttpResponse子類

3. JsonResponse

4. redirect重定向


一、HttpRequest對象

1.屬性

path:一個字符串,表示請求的頁面的完整路徑,不包含域名和參數部分。

method:一個字符串,表示請求使用的HTTP方法,常用值包括:'GET'、'POST'。

encoding:一個字符串,表示提交的數據的編碼方式。

如果為None則表示使用浏覽器的默認設置,一般為utf-8。

這個屬性是可寫的,可以通過修改它來修改訪問表單數據使用的編碼,接下來對屬性的任何訪問將使用新的encoding值。

get:QueryDict類型對象,類似於字典,包含get請求方式的所有參數。

post:QueryDict類型對象,類似於字典,包含post請求方式的所有參數。

files:一個類似於字典的對象,包含所有的上傳文件。

cookie:一個標准的Python字典,包含所有的cookie,鍵和值都為字符串。

session:一個既可讀又可寫的類似於字典的對象,表示當前的會話,只有當Django 啟用會話的支持時才可用,詳細內容見"狀態保持"。

2.URL路徑參數

  • 如果想從URL中獲取值,需要在正則表達式中使用分組
  • 獲取值分為兩種方式
    • 位置參數
      • 參數的位置不能錯
    • 關鍵字參數
      • 參數的位置可以變,跟關鍵字保持一致即可
  • 注意:兩種參數的方式不要混合使用,在一個正則表達式中只能使用一種參數方式
  • 分別使用以上兩種獲取URL值的方式提取出18 188
    • http://127.0.0.1:8000/18/188/

位置參數

  • 應用中urls.py

     url(r'^(\d+)/(\d+)/$', views.index),
    
  • 視圖中函數: 參數的位置不能錯

    def index(request, value1, value2):
    # 構造上下文
    context = {'v1':value1, 'v2':value2}
    return render(request, 'Book/index.html', context)
    

關鍵字參數

  • 應用中urls.py

    • 其中?P<value1>部分表示為這個參數定義的名稱為value1
    • 可以是其它名稱,起名要做到見名知意

      url(r'^(?P<value1>\d+)/(?P<value2>\d+)/$', views.index),
      
  • 視圖中函數: 參數的位置可以變,跟關鍵字保持一致即可

    def index(request, value2, value1):
    # 構造上下文
    context = {'v1':value1, 'v2':value2}
    return render(request, 'Book/index.html', context)

3.Django中的QueryDict對象

HttpRequest對象的屬性GET、POST都是QueryDict類型的對象

與python字典不同,QueryDict類型的對象用來處理同一個鍵帶有多個值的情況

  • 方法get():根據鍵獲取值

    如果一個鍵同時擁有多個值將獲取最後一個值

    如果鍵不存在則返回None值,可以設置默認值進行後續處理

    get('鍵',默認值)
    
  • 方法getlist():根據鍵獲取值,值以列表返回,可以獲取指定鍵的所有值

    如果鍵不存在則返回空列表[],可以設置默認值進行後續處理

    getlist('鍵',默認值)

二、HttpResponse對象

視圖在接收請求並處理後,必須返回HttpResponse對象或子對象。HttpRequest對象由Django創建,HttpResponse對象由開發人員創建。

1. HttpResponse

可以使用django.http.HttpResponse來構造響應對象。

HttpResponse(content=響應體, content_type=響應體數據類型, status=狀態碼)

也可通過HttpResponse對象屬性來設置響應體、響應體數據類型、狀態碼:

  • content:表示返回的內容。
  • status_code:返回的HTTP響應狀態碼。

響應頭可以直接將HttpResponse對象當做字典進行響應頭鍵值對的設置:

response = HttpResponse()
response['itcast'] = 'Python' # 自定義響應頭Itcast, 值為Python

示例:

from django.http import HttpResponse
def response(request):
return HttpResponse('itcast python', status=400)
或者
response = HttpResponse('itcast python')
response.status_code = 400
response['itcast'] = 'Python'
return response

2. HttpResponse子類

Django提供了一系列HttpResponse的子類,可以快速設置狀態碼

  • HttpResponseRedirect 301
  • HttpResponsePermanentRedirect 302
  • HttpResponseNotModified 304
  • HttpResponseBadRequest 400
  • HttpResponseNotFound 404
  • HttpResponseForbidden 403
  • HttpResponseNotAllowed 405
  • HttpResponseGone 410
  • HttpResponseServerError 500

3. JsonResponse

若要返回json數據,可以使用JsonResponse來構造響應對象,作用:

  • 幫助我們將數據轉換為json字符串
  • 設置響應頭Content-Typeapplication/json
from django.http import JsonResponse
def response(request):
return JsonResponse({'city': 'beijing', 'subject': 'python'})

4. redirect重定向

from django.shortcuts import redirect
def response(request):
return redirect('/get_header')

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved