flask中的cookies

cookies是一个字典

读取cookies:

from flask import request

@app.route('/')

def index():

    username=request.cookies.get('username')

    #使用cookies.get(key)来代替cookies[key]以避免当cookie不存在时引发KeyError.

存储cookies:

from flask import make_response

@app.route('/')

def index():

    resp=make_response(render_template(...))

    resp.set_cookie('username','the username')

    return resp


set_cookie(key,value='',max_age=None,expires=None,path='/',domain=None,secure=None,httponly=False)

key:cookie的关键字

value:cookie的值

max_age:以秒为单位,缺省值为到客户端浏览器会话终止

expires:应该是一个日期对象或UNIX时间戳

domain:如果想设置跨域cookie的话,就设置它。如:如果设置了domain=".example.com",那么对于'www.example.com'和'foo.example.com'等,该cookie都是可读的。否则该cookie只在本域中可读。

path:将cookie限制到给定的路径上。默认是整个域。


视图函数的返回值会自动转换为一个响应对象。如果返回值是一个字符串,那么会被转换为一个包含作为响应体的字符串、一个200 ok出错代码和一个text/html MIME类型的响应对象。以下是转换的规则:

1、如果视图要返回的是一个响应对象,那么就直接返回它

2、如果要返回的是一个字符串,那么根据这个字符串和缺省参数生成一个用于返回的响应对象。

3、如果要返回分是一个元组,那么元组中的项目可以提供额外的信息。元组中必须至少包含一个项目,且项目应当由(response,status,headers)组成。status分值会重载状态代码,headers是一个由额外头部值组成的列表或字典。

4、如果以上都不是,那么Flask会假定返回值是一个有效的WSGI应用并把它转换为一个响应对象。

如果想要在视图内部掌控响应对象的结果,那么可以使用make_response()函数

设想有如下视图:

@app.errorhandler(404)

def not_found(error):

    return render_template('error.html'),404

可以使用make_response()包裹返回表达式,获得响应对象,并对该对象进行修改,然后再返回:

@app.errorhandler(404)

def not_found(error):

    resp=make_response(render_template('error.hmtl'),404)

    resp.headers['X-Something']='A value'

    return resp


make_response(*args)

目的是在返回对象中增加额外的头部

具体的例子可参见上面的那个@app.errorhandler(404)例子。

在内部,make_response做如下事情:

1、如果没有参数传入,那么将创建一个新的回应

2、如果有一个参数传入,那么flask.Flask.make_response()调用它,

3、如果有多个参数传入,那么以元组的形式传入flask.Flask.make_response()中。


你可能感兴趣的:(flask中的cookies)