HttpResponse對象
概述:
作用:給瀏覽器返回數據
HttpRequest對象是由Django創建的,HttpResponse對象是由程序員創建
用法:
不用模板,直接返回數據
語句示例:return HttpResponse("Sunck is a good man")
調用模板
使用render方法
原型:render(request, templateName[, context])
作用:結合數據和模板,返回一個完整的HTML頁面
參數:
request:請求體對象
templateName:模板路徑
context:傳遞給需要渲染在模板上的數據
屬性
content:表示返回內容
charset:編碼格式
status_code:響應狀態碼
200
304
404
400
content-type:指定輸出的MIME類型
方法
init:使用頁面內容實例化HttpResponse對象
write(content):以文件的形式寫入
flush():以文件的形式輸出緩沖區
set_cookie(key, value, maxAge=None, exprise=None)
delete_cookie(key):
刪除cookie
如果刪除一個不存在的cookie,就當什么都沒發生
子類HttpResponseRedirect
功能:重定向,服務器端的跳轉
簡寫
redirect(to)
to推薦使用反向解析
示例:
from django.http import HttpResponseRedirect
from django.shortcuts import redirect
def redirect1(request):
# return HttpResponseRedirect('/redirect2')
return redirect('/redirect2')
def redirect2(request):
return HttpResponse("我是重定向后的視圖")
子類JsonResponse
返回Json數據,一般用於異步請求
__init__(self.data)
data 字典
注意:Content-type類型為application/json
狀態保持
http協議是無狀態的,每次請求都是一次新的請求,它不記得之前的請求。
客戶端與服務器的一次通信就是一次會話
實現狀態的保持,在客戶端或服務端存儲有關會話的數據
存儲的方式
cookie:所有數據存儲在客戶端,不要存儲敏感的數據
session:所有的數據存儲在服務端,在客戶端用cookie存儲session_id
狀態保持的目的:
在一段時間內跟蹤請求者的狀態,可以實現跨頁面訪問當前的請求者的數據
注意:不同的請求者之間不會共享這個數據,與請求者一一對應
啟用session:project\project\settings.py
INSTALLED_APPS 'django.contrib.sessions',
MIDDLEWARE 'django.contrib.sessions.middleware.SessionMiddleware',
使用session
啟用session后,每個httpRequest對象都有一個session屬性
get[key, default=None] 根據鍵獲取session值
clear() 清空所有會話
flush() 刪除當前會話並刪除會話的cookie
示例:
# session
def main(request):
# 取session
username = request.session.get('name', '游客')
print(username)
return render(request, 'myApp/main.html', {'username': username})
def login(request):
return render(request, 'myApp/login.html')
def showmain(request):
print("*****************")
username = request.POST.get('username')
# 存儲session
request.session['name'] = username
return redirect('/main/')
from django.contrib.auth import logout
def quit(request):
# 清除session
logout(request) # 方法1,推薦
# request.session.clear() # 方法2
request.session.flush() # 方法3
return redirect('/main/')
設置session過期時間
set_expiry(value)
request.session.set_expiry(10) 設置為10秒后過期
如果不設置,2個星期后過期
value設置為0代表關閉瀏覽器時過期
value設置為None代表設置永不過期,不推薦