Flask写web时cookie的处理

本文来自网易云社区

作者:孙圣翔

flask是一个微型web开发框架,别看他微型,在github上排名还是挺高的。

A microframework based on Werkzeug, Jinja2 and good intentions
http://flask.pocoo.org/

因为他微型,容易掌握,所以对于一些控制欲很强的人,比如我,就会放弃强大的dinjgo,而转向flask。

flask的入门教程,看网页的就好。 中文 英文,既然有文档了,我就不从来一遍了。

这篇文章只说cookie的使用,以及我使用时的一些经验

cookie的使用

虽说cookie是存储在客户端的,但存储的方式和内容还是server去定。官网的介绍

存储cookie

Chrome有个插件EditThisCookie还不错,方便开发的时候调试。

设置cookie的代码如下

resp = flask.make_response(render_template(...))
resp.set_cookie(‘username‘, ‘the username‘)

cookie是有过期时间的,默认多少,我实在记不得了。如果需要设定cookie的时间,可以通过

outdate = datetime.datetime.today() + datetime.timedelta(days=30)
resp.set_cookie(‘username‘, ‘the username‘, expires=outdate)

如果想清空cookie,只有一个办法resp.set_cookie(‘username‘, ‘‘, expires=0)

cookie还可以指定具体的路径什么的,不过一般直接默认的就可以。 详细的参考这里

读取cookie

读取比较简单

request.cookies.get(‘username‘)

因为request在jinja模板中是可以直接使用的,所以可以简单的写到html中

<!DOCTYPE html><html><body>username: {{request.cookies.get(‘username‘)}}</body></html>

jinja能直接用的变量还有很多。

进阶篇 由flask官网提供。

网易云免费体验馆,0成本体验20+款云产品!

更多网易研发、产品、运营经验分享请访问网易云社区

相关文章:
【推荐】 NOS直传加速服务
【推荐】 教你制作高逼格的技术分享Keynote(PPT)
【推荐】 知物由学 | 如何应对日益强大的零日攻击

原文地址:https://www.cnblogs.com/163yun/p/9684912.html

时间: 2024-08-30 16:41:22

Flask写web时cookie的处理的相关文章

Flask 解析 Web 端 请求 数组

Web前台由 JavaScript 通过Ajax发送POST请求,当请求数据为数组时,Python Flask 做服务器时的解析如下: js: 1 var ids = []; 2 for (var i = 0; i < row.length; i++) { 3 ids.push(row[i].id); 4 } 5 console.log('del:' + ids); 6 $.ajax({ 7 method: 'POST', 8 url: '/dance_del_data', 9 dataType

Flask教程 —— Web表单(上)

第二章中介绍的request对象公开了所有客户端发送的请求信息.特别是request.form可以访问POST请求提交的表单数据. 尽管Flask的request对象提供的支持足以处理web表单,但依然有许多任务会变得单调且重复.表单的HTML代码生成和验证提交的表单数据就是两个很好的例子. Flask-WTF扩展使得处理web表单能获得更愉快的体验.该扩展是一个封装了与框架无关的WTForms包的Flask集成. Flask-WTF和它的依赖集可以通过pip来安装: (venv) $ pip

使用 Java 程序写文件时,记得要 flush()

使用 Java 程序往磁盘写文件时碰到了这样的问题:文件写不全. 假如内容(StringBuffer/StringBuilder)有 100W 个字符,但是通过 Java 程序写到文件里的却不到 100W ,部分字符不见了. 代码大致是这样的: 1 private void writeToDisk() throws Exception { 2 File file = new File("FILE_PATH"); 3 OutputStreamWriter osw = null; 4 os

写脚本时整数比较与字符串的比较

写脚本时整数比较与字符串的比较: 整数比较-eq 等于,如:if [ "$a" -eq "$b" ]-ne 不等于,如:if [ "$a" -ne "$b" ]-gt 大于,如:if [ "$a" -gt "$b" ]-ge 大于等于,如:if [ "$a" -ge "$b" ]-lt 小于,如:if [ "$a" -lt &q

今天和组内一起写代码时碰到了一个关于命名冲突的问题,最后用js命名空间的方法解决的。

//第一步,首先创建一个全局变量,可以放在自己的js方法库中方便以后用,这个就是用来注册命名空间的方法. ns = function(namespace){ var arr = namespace.split('.');  //将传入的字符串如"com.test.lzn"以'.'隔开做成一个数组 var strNamespace = ""; //这个是为了保存每一步循环进去的包名 for(var i=0;i<arr.length;i++) { if(i!=0)

使用系统的某些block api(如UIView的block版本写动画时),是否也考虑循环引用问题?

系统的某些block api中,UIView的block版本写动画时不需要考虑,但也有一些api 需要考虑 以下这些使用方式不会引起循环引用的问题 [UIView animateWithDuration:duration animations:^ { [self.superview layoutIfNeeded]; }]; [[NSOperationQueue mainQueue] addOperationWithBlock:^ { self.someProperty = xyz; }]; [[

【JavaScript基础】在写冒泡排序时遇到的JavaScript基础问题:JavaScript的数据类型和变量赋值时的原理

写冒泡排序时,遇到一个问题: function bubbleSort(arr){ var temp = 0; console.log("传入的数组:"); console.log(arr); for(var i = 0;i<arr.length;i++){ //循环arr.length-1次 console.log("外层第"+i+"次循环===============start"); for(var j = 0;j<arr.leng

java写文件时,输出不完整的原因以及解决方法close()或flush()

在java的IO体系中,写文件通常会用到下面语句 BufferedWriter bw=new BufferedWriter(new FileWriter("sql语句.txt")); 用到这个的时候一定不能忘了他的伴侣代码.. bw.close(); 或者 bw.flush(); 实际上,FileWriter在写文件时,会把内容存储到一块缓冲区中,当缓冲区满后,才会把缓冲区中的内容写入文件,内容再继续存到缓冲区,如此反复,而flush()会将内存中的内容强制写到文件中,即使内存没满.这

html基础,写代码时的总结等---ShinePans

index.html: <html> <meta http-equiv="content-type" content="text/html;charset=UTF-8"/> <head> <body> <center> <!--空格  --> <!--img src="与html文件位置相同或者本地url或者网络url" width="xxpx为边框宽度&qu