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()中。