python web开发-flask中response,cookies,session对象使用详解
Response响应对象:
当一个web请求被服务器处理完后,会返回用户请求的响应,这时候就要用到响应对象,根据响应给用户的形式不同,响应对象有以下几种处理方式
- 如果返回的是一个合法的响应对象,它会从视图直接返回。
- 如果返回的是一个字符串,响应对象会用字符串数据和默认参数创建。
- 如果返回的是一个元组,且元组中的元素可以提供额外的信息。这样的元组必须是(response, status, headers) 的形式,且至少包含一个元素。 status 值会覆盖状态代码, headers 可以是一个列表或字典,作为额外的消息标头值。
- 如果上述条件均不满足, Flask 会假设返回值是一个合法的 WSGI 应用程序,并转换为一个请求对象。
以上从引用官网的一段话,其实简单来说就是所有的响应都会生成一个合法的响应对象,我们平常用的最多的就是直接返回字符串或是返回一个template。最终都会被flask处理成response对象。
Cookies对象:
Cookies用于在客户端存储一些信息, 当flask应用响应用户请求时可以设置cookies的值,当用户请求flask应用时可以获取cookies的值。
简单来说,设置cookies的方式为:
responseObj.set_cookies(“xxx”) ,此处的responseObj是一个response的实例,xxx是cookies的名称
获取cookies的方式为
request.cookies.get(“xxx”),此处的request是全局request对象,xxx是cookies的名称
下面通过一个例子来说明cookies的使用
- 创建一个设置cookies的方法:
@app.route("/setCookies")
def setCookies():
res = make_response("this page will set a cookies")
res.set_cookie("myCookies","my first cookies")
return res
注:需要import make_response方法
2. 创建一个获取cookies的方法
@app.route("/getCookies")
def getCookies():
myCookies = request.cookies.get("myCookies")
return myCookies
3. 测试应用
访问 /setCookies 方法
访问/getCookies方法
Session对象:
它允许你在不同请求间存储特定用户的信息。它是在 Cookies 的基础上实现的,并且对 Cookies 进行密钥签名。这意味着用户可以查看你 Cookie 的内容,但却不能修改它,除非用户知道签名的密钥。
Session可以通过session[‘xxx’]=’yyy’进行设置,其中xxx是key值,yyy是session的value。
通过session.pop(‘xxx’,none)把key是xxx的session移除
一般用session进行用户是否登录的验证
下面举例来说明:
- 设置session
使用下面的代码
@app.route("/setSession")
def setSession():
session["userName"] = "my session"
return session["userName"]
使用session时要先设置app_secret不然会报错:
RuntimeError: The session is unavailable because no secret key was set. Set the secret_key on the application to something unique and secret.
在调用此代码之前加上secret_key的设置
app.secret_key = "1234"
安全起见,secret_key要设置的复杂一些,这里演示用就简单设置了。
2. 验证session
代码如下:
@app.route("/checkSession")
def checkSession():
if "userName" in session:
return "userName exist"
else:
return "userName lost"
3. 移除session
代码如下:
@app.route("/removeSession")
def removeSession():
session.pop("userName",None)
return "remove session!"
- 验证
访问/setSession
验证session 访问/checkSession
证明session存在
下一步,移除session
然后我们再次验证session。
Session已丢失
python web开发-flask中response,cookies,session对象使用详解的更多相关文章
- python web开发-flask中日志的使用
Flask使用日志记录的方式: 初始化flask应用实例 在flask中使用logger,需要初始化一个flask的应用 app = Flask(__name__) 2. 调用logger 直接调用l ...
- python web开发-flask中sqlalchemy的使用
SqlAlchemy是一个python的ORM框架. 在flask中有一个flask-sqlalchemy的扩展,使用起来很方便. 1. 创建一个sqlalchemy的Model模块 创建 ...
- python web开发-flask中消息闪现flash的应用
Flash中的消息闪现,在官方的解释是用来给用户做出反馈.不过实际上这个功能只是一个记录消息的方法,在某一个请求中记录消息,在下一个请求中获取消息,然后做相应的处理,也就是说flask只存在于两个相邻 ...
- python web开发-flask中的url带斜线和不带斜线区别详解
通过flask进行路由配置的时候,有一个细节,就是同样的url,带上"/"和不带"/"有什么区别. 举例说明: 比如有个url,名字为"/url&qu ...
- hibernate的事务管理和session对象的详解
//开启事务 transaction=session.beginTransaction(); 上面为开启事务 transaction.commit();这个为提交事务 从session对象中获取事务后 ...
- python web开发-flask访问请求数据request
Request对象在web应用的开发中是一个非常重要的对象,主要用来获取用户发来的请求数据. 常用属性参考:http://docs.jinkan.org/docs/flask/api.html#fla ...
- python web开发-flask连接sqlite数据库
在之前的文章中我们介绍了如何在centOS中安装sqlite数据库. Sqlite安装完成后,本节就用flask来连接和操作sqlite数据库. 1. 数据准备 先在sqlite3中创建一 ...
- python web开发-flask读取txt文件内容
某些情况下,需要读取flask网站要目录下的txt文件.但是直接在flask网站的目录下创建一个文件是无法访问的.从网站找了一些资料,最终发现通过写一个方法返回txt内容比较简单方便,不过此方法适用于 ...
- python web开发flask框架 安装与环境
# encoding:utf-8 # 从flask这个框架中导入Flask这个类 from flask import Flask # 初始化一个Flask对象 # Flasks() # 需要传递一个参 ...
随机推荐
- hdu1800 贪心+hash+真的有毒
这道题用map<string,int>TLE到死.这题又是一道毒题,看了评论,居然可以用int读入,而且网上还有用排序的....用int的连前导0都不需要处理了 说下贪心吧,每把扫帚一定要 ...
- yaf框架刚开始遇到的问题
2016-10-17 17:54:13遇到的这个问题,这个问题算是比较综合性的问题,我也是查阅了很多的资料才大概明白的.这里就简单记录一下: 1.首先查看日志记录,结果如下: 根据错误日志:找寻到 ( ...
- Java并发编程笔记1-竞争条件&初识原子类&可重入锁
我们知道,在多线程访问一个共享变量的时候会发生安全问题. 首先看下面例子: public class Counter { private int count; public void add(){ t ...
- 【前端】Vue和Vux开发WebApp日志二、优化gulp任务
转载请注明出处:http://www.cnblogs.com/shamoyuu/p/vue_vux_2.html 项目github地址:https://github.com/shamoyuu/vue- ...
- R+大地图时代︱ leaflet/leafletCN 动态、交互式绘制地图(遍地代码图)
好久没有学习R的新包了,甚是想念啊! 昨天.今天看到两个极好.不得不学的packages+早上被AWS的服务器整得郁闷ing-于是就来点颜色看看~ 本篇受Lchiffon老师的github启发,对两个 ...
- dojo实现省份地市级联---省份数据源
province.json: { "identifier": "id", "label": "name", " ...
- jQuery提示parsererror错误解决办法
jquery来处理ajax,用到了json.但是很诧异,jquery的ajax回调时一直调用了error函数(一直提示parsererror异常),success函数一次没执行过 $.ajax({ t ...
- “net usershare”返回错误 255
1 错误描述 youhaidong@youhaidong:~$ sudo nautilus (nautilus:4429): Gtk-WARNING **: Failed to register cl ...
- LogHelper 日志记录帮助类
1.LogHelper 日志记录帮助类 using System; using System.Collections.Generic; using System.Linq; using System. ...
- spring的PathVariable和value={}小技巧(shiro项目中来的三)
<property name="successUrl" value="/main/index" /> @RequestMapping(value=& ...