小白学Flask第七天| 讲讲cookie和session的操作

本文内容:

1. cookie的使用

2. session的使用

cookie的使用

cookie和session都是web开发当中老生常谈的话题,我们首先来看看Flask当中cookie是如何使用的。

设置cookie:

@app.route("/set_cookie")
def set_cookie():
    resp = make_response("success")
    # 设置cookie
    resp.set_cookie("Itcast", "python")
    resp.set_cookie("Itcast1", "python1")
    return resp

通过make_response方法创建response对象,然后调用这个对象的set_cookie方法,最后返回这个对象,就可以达到我们设置cookie的目的。

看一下返回的结果:

可以从响应头中看到我们所设置的cookie

cookie的默认有效期是临时cookie,浏览器关闭就会失效,那如何把cookie的有效期设成我们想要的期限呢?

@app.route("/set_cookie")
def set_cookie():
    resp = make_response("success")
    # 设置cookie
    resp.set_cookie("Itcast", "python", max_age=3600)
    resp.set_cookie("Itcast1", "python1", max_age=3600)
    return resp

在set_cookie方法中有一个max_age的参数,这个参数可以设置我们想要的cookie的有效期,单位为秒。

说完了cookie的设置,那我们怎么去拿取cookie呢?这里就需要用到Flask当中的request库

@app.route("/get_cookie")
def get_cookie():
    c = request.cookies.get("Itcast")
    return c

我们来看下返回的结果:

可以看到我们拿到了之前设置的cookie值

知道了创建和获取cookie,那我们怎么去删除cookie?

@app.route("/delete_cookie")
def delete_cookie():
    resp = make_response("del success")
    resp.delete_cookie()
    return resp

同样也是非常简单的!其实在删除cookie当中,并不是真正的删除,只是把当前需要删除的cookie的有效期设置为了创建时候的时间,所以相当于是删除了cookie。

看到这里我们想一下,不管是创建还是删除cookie,浏览器是怎么知道我们去操作cookie的呢?

其实并没有用到很高级的东西,大家看下图:

大家可以看到我框住的地方,这里是响应头,我们所设置的cookie就是在响应头Set-Cookie的值中,所以之前的那些方法其实实质上都是在响应头中做功夫,所以也没什么很特别的地方,只不过它有属于自己的函数。

Session的使用

如果你之前就知道了cookie,那么你八九不离十也知道session是个啥

session是一种会话机制,可以存放一些状态信息,下面我们来看看session在Flask当中如何使用。

# -*- coding: utf-8 -*-
from flask import Flask, session


app = Flask(__name__)

# Flask的session需要使用到的秘钥字符串
app.config["SECRET_KEY"] = "123FIISUODFNOSAIFNHASIJDdasd"

@app.route("/login")
def login():
    # 设置session数据
    session["name"] = "python"
    session["moblie"] = "1811111111111"
    return "login success"


@app.route("/index")
def index():
    # 获取session数据
    name = session.get("name")
    moblie = session.get("moblie")
    return "hello %s  %s" % (name, moblie)


if __name__ == '__main__':
    app.run(debug=True)

session的创建和获取都在上面的代码当中,大家可能会疑惑

# Flask的session需要使用到的秘钥字符串
app.config["SECRET_KEY"] = "123FIISUODFNOSAIFNHASIJDdasd"

这一段代码到底干啥的,在Flask当中如果我们需要使用session,那么我们必须配置app当中的SECRET_KEY参数,否则程序会报错。参数的值我们可以任意编写。

有关于session的知识点非常多,我会在之后单独写一篇文章来讲讲session,在这里我们只需要了解到session是如何去创建和获取的即可。

本文分享自微信公众号 - JAVAandPython君(JAVAandPythonJun)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python爬虫与数据挖掘

Flask vs Django,Python Web 开发用哪个框架更好?

您是否正在考虑使用 Python 开发网站?然后你可能听说过 Django 和 Flask。这两个是 Python 最流行的 Web 框架(当然还有更多)。现在...

34140
来自专栏sktj

flask gunicorn 部署

workers = multiprocessing.cpu_count() * 2 + 1

14220
来自专栏sktj

flask 扩展开发(flask 113)

Flask,一个微框架,通常需要一些重复的步骤来让第三方库工作。因为在很多时候, 这些步骤可以被分离出,来支持多个项目,就有了 Flask Extension ...

8820
来自专栏sktj

flask 程序性能分析debugtoolbar/慢查询(flask 109)

from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_deb...

9330
来自专栏sktj

flask webargs传参解析(flask 103)

from flask import Flask from webargs import fields from webargs.flaskparser im...

16230
来自专栏sktj

flask wsgi部署

flask自带的开发Web服务器表现很差,响应慢,而且直接通过nginx进行反向代理,经常无法响应请求。有两个可以在生产环境中使用、性能良好且支持Flask程序...

28430
来自专栏萝卜大杂烩

PKW: Flask-JSGlue 库简介(第 6 期)

今天介绍一个有用的胶水库,Flask-JSGlue,看它的名字,也基本可以看出是连接 Flask 和 JavaScript 的桥梁。 我们先来看看它主要解决的问...

12830
来自专栏sktj

flask cors跨域请求(flask 102)

当调用服务端的域名与服务端不一致(前后端分离)的时候会出现跨域问题,可使用Flask-Cors解决以上问题 安装Flask-Cors pip3 instal...

8530
来自专栏sktj

flask tornado nginx 部署

from flask import Flask app = Flask(name)

14910
来自专栏sktj

flask dropzone带移除和上传 常用(flask 75)

from flask import Flask, render_template, request from flask_dropzone import Dr...

10030

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励