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代表設置永不過期,不推薦