知识点: 一、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
咱们经过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设置过时时间,有以下几种设置方法:网站
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) # 运行程序
复制代码
咱们访问浏览器试一下:
咱们能够经过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
复制代码
欢迎关注个人公众号: