Django系列教程(6)-- HttpRequest物件和HttpResponse物件
阿新 • • 發佈:2019-01-10
HttpRequest物件
伺服器接收到http協議的請求後,會根據報文建立HttpRequest物件,然後將其傳遞給檢視函式
屬性
- 下列屬性中,除特殊說明都是隻讀的
- path:一個字串,表示請求頁面的完整路徑,不包含域名
- method:一個字串,表示請求使用的http方法,常用值包括:‘GET’,‘POST’
- encoding:一個字串,表示提交資料的編碼方式,這個屬性是可寫的
- GET:一個類似於字典的物件,包含get請求方式的所有引數
- POST:一個類似於字典的物件,包含post請求方式的所有引數
方法
- is_ajax():如果請求是通過XMLHttpRequest發起的,則返回True
QueryDict物件
- 定義在django.http.QueryDict
- request物件的屬性GET,POST都是QueryDict型別的物件
- 與python字典不同,QueryDict型別的物件用來處理同一個鍵帶有多個值的情況
方法get():根據鍵獲取值
- 只能獲取鍵的一個值
- 如果一個鍵同時擁有多個值,獲取最後一個值
dict.get(‘鍵’,default)
或簡寫為
dict{‘鍵’}
方法getlist():根據鍵獲取值
- 將鍵的值以列表返回,可以獲取一個鍵的多個值
dict.getlist(‘鍵’,default)
GET屬性
- QueryDict型別的物件
- 包含get請求方式的所有引數
- 與url請求地址中的引數對應,位於?後面
- 引數的格式是鍵值對,多個引數用&連線
POST屬性
- QueryDict型別的物件
- 包含post請求方式的所有引數
- 與form表單中的控制元件對應
HttpResponse物件
- 在django.http模組中定義了HttpResponse物件的API
- HttpRequest物件由Django自動建立,HttpResponse由程式設計師建立
- 不呼叫模板,直接返回資料
# coding=utf-8
from django.http import HttpResponse
def index(request):
return HttpResponse('你好')
- 呼叫模板
目前大多推薦使用render的方式
render
- render是HttpResponse的簡寫函式
- 語法為:render(request,template_name[,context])
- 結合一個給定的模板和一個給定的上下文字典,並返回一個HttpResponse物件
- request:該request用於生成reponse
- template_name:要使用完整的模板名稱
- context:新增到模板上下文的一個字典,檢視將在渲染模板之前呼叫它
from django.shortcuts import render
def index(request):
return render(request,'booktest/html',{'h1':'hello'})
重定向
- redirect(to)
- 為傳遞進來的引數返回HttpResponseRedirect
- to推薦使用反向解析
from django.shortcuts import redirect
from django,core.urlresolvers import reverse
def index(request):
return redirect(reverse('booktest:index2'))