1.make_response
# 表示返回响应,参数可以是一个对象,比如图片,一段html语句
make_response(对象)
# 他返回一个response对象,可以设置响应头信息
response = make_response(image)
# 设置响应头信息
response.headers['Content-Type'] = 'image/jpg'
return response
2.jsonify和dump
jsonify是dump都是将字典转换成json类型的方法
jsonify是flask内置的,不仅能转换成json类型,还能将响应类型变为json,dump没有这功能
所以一般开发flask使用jsonify
3.url地址
不要忘记图片的url地址也能像a标签一样请求后台接口,但返回类型一定要为图片对象
4.Redis Setex 和 Set
Setex可以存入redis数据库键值,和过期时间,Set只能存入redis数据库键值
Redis对象.setex(key,time,value)
5.虚拟机异常退出
在使用虚拟机时,电脑异常终止导致重启后虚拟机提示被使用无法打开,这时我们可以把我们使用的系统的工作路径中全部.lck
文件删除,以恢复正常
6.通过ajax给后台发送请求,后台数据通过json返回给前端时,我们可以在succeed里定义函数接受其值
$.ajax({
url:'/',
type:'post',
data:JSON.stringify(params),// 把参数对象转成json
contentType:'application/json',// 发送到后端的数据类型
success:function(resp){
# 通过json中的键获取值
resp.key
}
7.蓝图
# 第一个admin为该蓝图名称,用来做装饰器路由用
# 第二个admin为‘端点’,用来唯一表示蓝图,也是他的name,url_for(),中参数就为他
# 请求钩子如果要设计到蓝图问题,也需要加上蓝图的name值在调用
admin=Blueprint('admin',__name__)
# 第二个参数为请求前缀,访问路由时需要加上这个前缀,这个前缀可以不设置
app.register_blueprint(admin,url\_prefix='/admin')
8.日志
配置日志不再详细介绍
使用日志,可以直接logging也可以通过current_app.logger使用
# 不仅可以通过log输出也可以向日志中放入信息
# 这里只列出了debug和error两个级别,其他级别也可以使用
logging.debug("This is a debug log.")
current_app.logger.error(e) # 放入信息
9.redis缓存同步
在项目中用redis缓存时,为了保证数据与mysql数据库中数据一致,每次需要用到缓存数据时,如果缓存中没有,数据要通过查询数据库得到,然后存入redis,在其他地方需要修改内容时,要先将redis中该字段删除
10.python中的三元表达式:
# 如果user存在就将user.to_dict()赋值给info,不存在就将none给info
info = user.to_dict() if user else none
11.Session存储问题
flask想使用session上下文对象实现状态保持时,我们用flask内置的flask_session进行配置,使其加密存储在redis中,redis是基于内存存储的,速度相对很快
请求时,一个浏览器对象对应一个session,同一浏览器窗口内,保存相同字段session信息,后者会覆盖前者,不同浏览器之间是不同session,不会受到影响