知識點: 一、HttpResponse 二、Cookiehtml
視圖在接收HttpRequest並處理後,必須返回HttpResponse對象。目前視圖函數只是返回字符串,以後 Flask 將字符串轉換爲響應對象。若是你要顯式地轉換,你可使用make_response()
函數而後再進行修改。python
咱們新建一個名爲cookie.html
的模板,簡單寫上下面代碼:flask
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>設置cookie</h1>
</body>
</html>
複製代碼
咱們在後臺用make_response()
返回HttpResponse:瀏覽器
from flask import Flask, render_template, make_response
app = Flask(__name__)
@app.route('/setcookie', methods=['GET', 'POST']) # 支持get、post請求
def setcookie(): # 視圖函數
resp = make_response(render_template('cookie.html')) # 顯式轉換成HttpResponse對象
return resp
app.config['DEBUG'] = True
if __name__ == '__main__':
# 0.0.0.0表明任何能表明這臺機器的地址均可以訪問
app.run(host='0.0.0.0', port=5000) # 運行程序
複製代碼
咱們訪問瀏覽器試一下: 安全
咱們都知道HTTP
協議是無狀態的請求協議,用戶此次訪問和下一次訪問都是新的請求,它們之間是沒任何關係的。可是咱們須要知道上一次訪問用戶作了什麼操做,就須要用到cookie。cookie是網站以鍵值對格式存儲在瀏覽器中的一段純文本信息,用於實現用戶跟蹤。cookie是基於域安全的 咱們經過set_cookie
方法設置cookiecookie
from flask import Flask, render_template, make_response
app = Flask(__name__)
@app.route('/setcookie', methods=['GET', 'POST']) # 支持get、post請求
def setcookie(): # 視圖函數
resp = make_response(render_template('cookie.html')) # 顯式轉換成HttpResponse對象
resp.set_cookie('nickname', 'laowang') # 設置cookie
resp.set_cookie('age', "12") # 設置cookie
return resp
app.config['DEBUG'] = True
if __name__ == '__main__':
# 0.0.0.0表明任何能表明這臺機器的地址均可以訪問
app.run(host='0.0.0.0', port=5000) # 運行程序
複製代碼
咱們訪問瀏覽器試一下: app
咱們已經瀏覽器寫入了以下信息,當咱們下一次請求的時候,會自動把本地的cookie傳給後臺。咱們經過HttpReqeust對象把咱們瀏覽器的cookies取到,咱們新寫一個視圖把cookie取到:函數
@app.route('/getcookie', methods=['GET', 'POST']) # 支持get、post請求
def getcookie(): # 視圖函數
nickname = request.cookies.get('nickname')
age = request.cookies.get('age')
return 'nickname=%s age=%s' % (nickname, age)
複製代碼
咱們訪問瀏覽器試一下: post
咱們已經在後臺把瀏覽器本地的cookie取到了。cookie是有過時時間的,當咱們設置cookie的時候能夠直接給cookie設置過時時間,有以下幾種設置方法:網站
from flask import Flask, request, render_template, make_response
from datetime import datetime
app = Flask(__name__)
@app.route('/setcookie', methods=['GET', 'POST']) # 支持get、post請求
def setcookie(): # 視圖函數
resp = make_response(render_template('cookie.html')) # 顯式轉換成HttpResponse對象
resp.set_cookie('nickname', 'laowang', max_age=3600) # 設置cookie 3600秒過時
resp.set_cookie('age', "12", expires=datetime(2019, 3, 18)) # 設置cookie,2019年3月18後過時
return resp
@app.route('/getcookie', methods=['GET', 'POST']) # 支持get、post請求
def getcookie(): # 視圖函數
nickname = request.cookies.get('nickname')
age = request.cookies.get('age')
return 'nickname=%s age=%s' % (nickname, age)
app.config['DEBUG'] = True
if __name__ == '__main__':
# 0.0.0.0表明任何能表明這臺機器的地址均可以訪問
app.run(host='0.0.0.0', port=5000) # 運行程序
複製代碼
咱們訪問瀏覽器試一下:
咱們能夠清楚地看到,一個cookie是一小時後過時,一個則是2019年3月18後過時。咱們能夠經過delete_cookie
方法刪除cookie
@app.route('/delcookie', methods=['GET', 'POST']) # 支持get、post請求
def delcookie(): # 視圖函數
res = make_response('刪除cookie')
res.delete_cookie('nickname') # 刪除的cookie的本質就是改變cookie的過時時間
return res
複製代碼
歡迎關注個人公衆號: