21、本地缓存
Cookie 的基本使用
from flask import Flask, request, Response
app = Flask(__name__)
# 设置 Cookie
@app.route('/')
def set_cookie():
# 先创建响应对象
resp = Response("设置Cookie!")
# 设置cookie名为username,值为zhangsan,并且一直有效
resp.set_cookie("username", "zhangsan")
return resp
# 获取Cookie
@app.route('/get_cookie')
def get_cookie():
if request.cookies.get('username'):
username = request.cookies.get('username')
else:
username = "Cookie不存在!"
return username
# 删除Cookie
@app.route("/del_cookie")
def delete_cookie():
resp = Response("删除Cookie!")
resp.delete_cookie("username")
return resp
if __name__ == '__main__':
app.run(debug=True)
- 同时还可以查看cookie:
在谷歌浏览器的 URL 左边有一个感叹号的标志,点击它再点击 Cookie 即可查看
设置 Cookie 的作用域
以下代码的作用:在子域名http://admin.baidu.com
下也能使用主域名http://baidu.com
的Cookie
-
创建子域名的蓝图
blue_admin.py
# -*- coding:utf-8 -*- from flask import Blueprint, request # 注册蓝图时设置了 子域名,那么在子域名可以调用主域名的 Cookie了 bp = Blueprint("admin_bp", __name__, subdomain="admin") @bp.route("/") def get_cookie(): username = request.cookies.get("username") # 如果有username这个key,则返回username对应的值,否则返回 "没有获取到username值" 字符串 return username or "没有获取到name值"
-
创建主域名文件
from flask import Flask, Response from blue_admin import bp app = Flask(__name__) app.register_blueprint(bp) # 注册蓝图 app.config['SERVER_NAME'] = 'baidu.com:5000' # 注册服务器的域名 @app.route('/') def set_cookie(): # 先创建响应对象 resp = Response("设置Cookie!") # 设置cookie名为username;值为zhangsan;cookie作用域名为 .baidu.com resp.set_cookie("username", "zhangsan", domain=".baidu.com") return resp if __name__ == '__main__': app.run(debug=True)
- 之后要设置域名和子域名:
打开本地文件夹 C:\Windows\System32\drivers\etc
,打开 hosts
文件添加如下内容:
127.0.0.1 admin.baidu.com
127.0.0.1 baidu.com
这两条记录的意思是将 127.0.0.1
注册成了 admin.baidu.com
和baidu.com
两个域名
如果遇到 hosts
文件无法修改的情况,可以按如下步骤设置权限:
- 右键点击文件,选择 “属性”——>上方菜单栏的 “安全”——> 点击 “高级” 按钮——>“更改”——>"高级"——>“立即查找”——>在搜索结果中选择“Everyone”,然后点击“确定”,最后选择“完全控制”