目錄
一、HttpRequest對象
1.屬性
2.URL路徑參數
3.Django中的QueryDict對象
二、HttpResponse對象
1. HttpResponse
2. HttpResponse子類
3. JsonResponse
4. redirect重定向
path:一個字符串,表示請求的頁面的完整路徑,不包含域名和參數部分.
method:一個字符串,表示請求使用的HTTP方法,常用值包括:'GET'、'POST'.
encoding:一個字符串,表示提交的數據的編碼方式.
如果為None則表示使用浏覽器的默認設置,一般為utf-8.
這個屬性是可寫的,可以通過修改它來修改訪問表單數據使用的編碼,接下來對屬性的任何訪問將使用新的encoding值.
get:QueryDict類型對象,類似於字典,包含get請求方式的所有參數.
post:QueryDict類型對象,類似於字典,包含post請求方式的所有參數.
files:一個類似於字典的對象,包含所有的上傳文件.
cookie:一個標准的Python字典,包含所有的cookie,鍵和值都為字符串.
session:一個既可讀又可寫的類似於字典的對象,表示當前的會話,只有當Django 啟用會話的支持時才可用,詳細內容見"狀態保持".
分組
,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
可以是其它名稱,The name to see a knowledge meaning
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)
HttpRequest對象的屬性GET、POST都是QueryDict類型的對象
與python字典不同,QueryDict類型的對象用來處理同一個鍵帶有多個值的情況
方法get():根據鍵獲取值
如果一個鍵同時擁有多個值將獲取最後一個值
如果鍵不存在則返回None值,可以設置默認值進行後續處理
get('鍵',默認值)
方法getlist():根據鍵獲取值,值以列表返回,可以獲取指定鍵的所有值
如果鍵不存在則返回空列表[],可以設置默認值進行後續處理
getlist('鍵',默認值)
視圖在接收請求並處理後,必須返回HttpResponse對象或子對象.HttpRequest對象由Django創建,HttpResponse對象由開發人員創建.
可以使用django.http.HttpResponse來構造響應對象.
HttpResponse(content=響應體, content_type=響應體數據類型, status=狀態碼)
也可通過HttpResponse對象屬性來設置響應體、響應體數據類型、狀態碼:
響應頭可以直接將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
Django提供了一系列HttpResponse的子類,可以快速設置狀態碼
若要返回json數據,可以使用JsonResponse來構造響應對象,作用:
from django.http import JsonResponse
def response(request):
return JsonResponse({'city': 'beijing', 'subject': 'python'})
from django.shortcuts import redirect
def response(request):
return redirect('/get_header')