Flask中cookies和session的使用

1、cookies / cookie

1、什么是cookies

cookies是一种数据存储手段
将一段文本保存在客户端(浏览器)的一种手段,并可以长时 间保存

2、cookies的使用场合

  1. 记住密码
  2. 记住搜索关键词

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)

登录流程图:
登录流程图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值