1、cookies / cookie
1、什么是cookies
cookies是一种数据存储手段
将一段文本保存在客户端(浏览器)的一种手段,并可以长时 间保存
2、cookies的使用场合
- 记住密码
- 记住搜索关键词
3、在Flask中使用cookies
1、使用相应对象,将数据存进cookies(客户端)
resp = make_response("字符串" | render_template)
resp = redirect('地址')
Cookies的语法
相应对象.set_cookie(key,value,max_age) # max_age 可选
key :保存的cookie的名称
value :保存的cookie的值
max_age :保存的时间,取值为数字,默认以s为单位
60 * 60 * 24 * 365 : 一年
2、获取cookie的值
每次向服务器发送请求时,都会把cookie的数据封装到 request中并带到服务器上
在Flask中通过request.cookies 获取所有的cookies值
{
'sessionid': '3xfmwl6j6jcqbv6dfual55otwyrre6ne',
'uname': 'jack'
}
3、删除cookie的值
响应对象.delete_cookie(‘key’)
2、session - 会话
1、什么是session
session是保存在服务器上的,为每个浏览器开辟的一段空间
2、session在Flask中的实现
1、配置SECRET_KEY
app.config['SECRET_KEY'] = "想写啥写啥"
2、使用session
from Flask import session
1、向session中保存数据
session['key'] = value
2、从session取值
value = session[‘key’] 或
value = session.get(‘key’,’ ’)
3、从session中删除数据
del session[‘key’]
详细代码:
from flask import Flask, make_response, request, session, render_template, redirect
app = Flask(__name__)
app.config['SECRET_KEY'] = 'wqydoisaodnasodald' # 随便写就行
@app.route('/')
def hello_world():
return 'Hello World!'
# 存储cookie
@app.route('/01-setCookie')
def setCookie():
resp = make_response('添加cookie成功')
# 通过resp保存cookie的值到客户端浏览器中
resp.set_cookie('uname', 'jack', 60 * 60 * 24 * 365)
return resp
@app.route('/02-getCookie')
def getCookie():
# print(request.cookies)
print(request.cookies.get('uname'))
return "获取cookies成功"
# 设置session
@app.route('/03-setSession')
def setSession():
session['uname'] = 'MrWang'
return "set session success"
# 获取session
@app.route('/04-getSession')
def getSession():
uname = session.get('uname', '')
if uname:
return '用户名为:' + uname
else:
return "没有找到相关数据"
@app.route('/', methods=['GET', 'POST'])
def index():
return "欢迎来到首页"
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == "GET":
# 判断是否已经在登录状态:判断session中是否有uname的值
if 'uname' in session:
# 已经在登录状态,直接去往首页
return redirect('/')
else:
# 没有登录,继续向下判断cookie
if 'uname' in request.cookies:
# 曾经记住过密码,取出值存进session
uname = request.cookies.get('uname')
session['uname'] = uname
return redirect('/')
else:
# 之前没有登录过,去往登录页
return render_template('login.html')
else:
# 先处理登录,登录成功继续保存进session否则返回login
uname = request.form.get('uname')
upwd = request.form.get('upwd')
if uname == 'admin' and upwd == 'admin':
# 声明重定向到首页的对象
resp = redirect('/')
# 登录成功:将数据保存进session
session['uname'] = uname
# 判断是否记住密码
if 'isSaved' in request.form:
# 需要记住密码,将信息保存进cookie
resp.set_cookie('uname', uname, 60 * 60 * 24 * 365)
return resp
else:
# 登录失败
return redirect('/login')
if __name__ == '__main__':
app.run(debug=True)
登录流程图: