接下来我会演示一下设置Cookie 读取Cookie 删除Cookie,以及添加Cookie的原理

接下来我们分别定义3个视图为 set_cookie、get_cookie、del_cookie

# coding:utf-8from flask import Flask, make_response, requestapp = Flask(__name__)@app.route("/set_cookie")
def set_cookie():# 创建一个响应的对象resp = make_response('设置成功')# 设置cookieresp.set_cookie('username1', 'hannibal')# 设置多个cookieresp.set_cookie('username2', 'circle')# 默认的有效期是关闭浏览器之前 max_age 是手动添加有效期 单位是妙resp.set_cookie('username3', 'benjamin', max_age=3600)return resp@app.route("/get_cookie")
def get_cookie():c = request.cookies.get('username1')return c@app.route('/del_cookie')
def del_cookie():  # 删除Cookie的时候也需要先创建响应对象resp = make_response('del cookie')resp.delete_cookie('username3')return respif __name__ == '__main__':app.run(host='0.0.0.0', debug=True)

通过返回结果我们可以看出:设置了3个Cookie

如果不指定过期时间默认是会话结束时候

同样我们这里还有设置了一个过期时间为1小时(3600)

当我们访问get_cookie时

当我们删除Cookie时,通过结果可以看出,并没有在浏览器真正的删除了username3这个Cookie,而是帮我们把过期时间更改为了创建时间。显然这么做也是足够的

通过上面的返回信息,我们可以看出,其实就是通过设置Cookie就是在响应头里给我们添加了一条数据而已

其实我们就可以在响应头里自己添加一个Set-Cookie 这个键 并且按照他的格式给它赋值,原理就是这么个原理

resp.headers["Set-Cookie"] = "username3=benjamin; Expires=Tue, 23-Jul-2019 09:49:51 GMT; Max-Age=3600; Path=/"

Session

session对象。它允许你在不同请求间存储特定用户的信息。它是在 Cookies 的基础上实现的,并且对 Cookies 进行密钥签名。这意味着用户可以查看你 Cookie 的内容,但却不能修改它,除非用户知道签名的密钥。

如果你想用有一个看都看不懂的密钥,还不想自己一顿乱敲,你可以通过Python的编译器做一个密钥生成器比如下面的那个方法:

>>> import os
>>> os.urandom(24)
'u\x8a\r\x9b\x89\xad7//\xd6\x9a\x19\t\xdb3A\x92\xbaCN\xee\xc8x-'

把这个值复制粘贴进你的代码中,你就有了强壮而且看似专业的密钥

下面将用一个简单的例子来了解session的基本应用方法:

# coding:utf-8
from flask import Flask, session, redirect, url_for, escape, request
import sysreload(sys)
sys.setdefaultencoding('utf8')app = Flask(__name__)
# 设置密钥 这个是必须要有的否则会抛出一个RuntimeError
app.config['SECRET_KEY'] = 'u\x8a\r\x9b\x89\xad7//\xd6\x9a\x19\t\xdb3A\x92\xbaCN\xee\xc8x-'@app.route('/')
def index():if 'username' in session:print(session['username'])return '欢迎 %s 登陆' % escape(session['username'])return '抱歉你还没有登陆'@app.route('/login', methods=['GET', 'POST'])
def login():if request.method == 'POST':session['username'] = request.form['username']# 重定向到index页面return redirect(url_for('index'))return '''<form action="" method="post"><p><input type=text name=username><p><input type=submit value=Login></form>'''@app.route('/logout')
def logout():# 如果有就将它删除session.pop('username', None)return redirect(url_for('index'))if __name__ == '__main__':app.run(host='0.0.0.0', debug=True)

当你访问127.0.0.1:5000/logout就会帮你删除那个session

转载于:https://www.cnblogs.com/Hannibal-2018/p/11232824.html

Flask-1-05-CookieSession相关推荐

  1. 少儿Python编程_第十八讲 搭建网站

    上一讲学习了编写网页代码的方法,到目前为止,创建的网页文件只能用浏览器打开.如果需要用同一网络中的其它电脑或者手机访问该页面,则需要搭建HTTP服务. 普通电脑上也可以搭建HTTP服务,成为小型的HT ...

  2. Flask框架之模板继承与案例05

    Flask框架之模板继承与案例05 一,模版继承 二,静态文件的配置 1.这里列举一个小例子: 三,模版案例(制作豆瓣评分页面) 1.效果图: 2.数据准备: 3.代码链接 一,模版继承 Flask中 ...

  3. flask使用SQLAlchemy操作mysql

    2019独角兽企业重金招聘Python工程师标准>>> 注意:看这篇博客需要先看我之前写的一篇博客,在 https://my.oschina.net/zhuangweihong/bl ...

  4. python flask 教程_Flask 教程 第一章:Hello, World!

    一趟愉快的学习之旅即将开始,跟随它你将学会用Python和Flask来创建Web应用.上面的视频包含了整个教程的内容预览(译者注:视频见原文).通过学习本章内容,你将学会如何创建一个Flask项目,并 ...

  5. 用 Flask 来写个轻博客 (15) — M(V)C_实现博文页面评论表单

    Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 实现 post() 视图函数 在 post.html 中添加表单 效果 ...

  6. 使用python的Flask实现一个RESTful API服务器端

    使用python的Flask实现一个RESTful API服务器端[翻译] 最近这些年,REST已经成为web services和APIs的标准架构,很多APP的架构基本上是使用RESTful的形式了 ...

  7. 【Python】【Flask】

    [快速开始] from flask import Flask, url_for, render_template, redirectapp = Flask(__name__) "" ...

  8. django restframework 下载文件_【技术选型】Django还是Flask?这是个问题!

    Django和Flask,是Python语言在WEB开发领域中占据了半壁江山的两个框架.在我们实际开发过程中,如何从这两者之间二选一呢? 01 半壁江山的两个WEB框架 在2019年Python官方年 ...

  9. 如何理解Nginx, WSGI, Flask之间的关系

    转载自: http://blog.csdn.net/lihao21/article/details/52304119 概览 之前对 Nginx,WSGI(或者 uWSGI,uwsgi),Flask(或 ...

  10. python flask源码解析_浅谈flask源码之请求过程

    Flask Flask是什么? Flask是一个使用 Python 编写的轻量级 Web 应用框架, 让我们可以使用Python语言快速搭建Web服务, Flask也被称为 "microfr ...

最新文章

  1. 思维dp ---- Codeforces Round #722 (Div. 1) B. Kavi on Pairing Duty [思维dp + 数学]
  2. svn增量打包部署_利用svn的补丁文件打包生成增量文件
  3. OSI模型中的数据链路层和物理层的区分
  4. Linux系统下不同机器之间拷贝文件的方法
  5. 【答案放在最后,看题看不到答案】2017年下半年软件设计师 上午选择题
  6. Redis高可用:主从复制及哨兵模式
  7. E-Learning是学习系统而不是教育系统
  8. c语言编译如何去掉warning,16种C语言编译警告(Warning)类型的解决方法
  9. python的基本语法while true_Python正课15 —— 流程控制之while循环
  10. 自定义基于HTML5的video播放器—Customize your video player
  11. JavaWeb各大组件生命周期
  12. Arcgis拓扑检查
  13. 二舅治好我的精神内耗,也让我火出了B站
  14. EMCP  物联网云平台萤石云密钥功能使用手册
  15. SIFT四部曲之——极值检测和定位
  16. MYSQL中,CAST函数的使用规则
  17. 如何续费iOS开发者账号 - 详细步骤
  18. 中年黑客高考“回忆杀” :如果你想从事安全。。。
  19. anaconda清华源
  20. win2003+IIS服务器下运行ASP程序非常慢的解决办法

热门文章

  1. HQL写topN、Spark写topN
  2. CCIE-LAB-第七篇-IPV6 EIRGP+Passive
  3. 【机器学习】 - import cv2 opencv安装python
  4. python访问网页速度_python实现用于测试网站访问速率的方法
  5. C# 字符串逗号分隔存到List 数组(互相转换)
  6. Java异常处理throws/throw
  7. leetcode22. 括号生成
  8. C语言: const关键字与指针
  9. redis排行榜之日排行周排行设计
  10. android二级联动购物车,Android实现二级购物车的全选加反选、总价功能