flask学习-视图和路由(下)

6.异常捕获

抛出异常:abort(状态码)

捕获异常:装饰器 app.errorhandler(参数)   参数可以是状态码  或者  指定类型的异常ZeroDivisionError(除数为零的异常)
@app.errorhandler(404)
def page_not_found(error):
    return "咦~页面不见了~"      return想让用户看到的界面

7.请求钩子
像钩子一样,在业务逻辑中,正常http交互之前或者之后用钩子抓出瞬间,添加功能  装饰器格式@app.before_first_request
比如:
7-1.before_first_request 
在处理第一个请求之前
7-2.before_request
每次请求之前      可以对一些非法的请求进行阻止(黑名单)
7-3.after_request   处理响应
在执行完视图函数之后会调用,并且函数里面接受一个参数:响应,还需要将响应进行返回     比如:把格式改成["Content-Type"] = "application/json"
7-4.teardown    处理异常
在请求之后会执行,如果请求的函数报有异常,会把具体异常传入到此函数

8.装饰器路由核心逻辑 : 如何实现用装饰器把路由信息添加进去的
flask核心之一: Werkzeug工具集(Werkzeug实现路由、调试和Web服务器网关接口)
包含4大类  :   request
             response
             routing
             other
             

routing模块内部有:

Rule类: 路由URL规则          url_map

Map类: 存储所有的URL规则和一些配置参数(请求方式),容器

BaseConverter的子类: 负责定义匹配规则(自定义装饰器)

MapAdapter类: 实现视图函数 和  路由的对应   具体执行通过它来

9.获取请求参数(request类的操作)

方法: 注意获取的内容格式
data: 记录请求的数据,并转换为字符串

form: 记录请求中的表单数据

args: 记录请求中的查询参数

cookie: 记录请求中的cookie信息

headers: 记录请求中的报文头

method: 记录请求使用的HTTP方法

url: 记录请求的URL地址

files: 记录请求上传的文件

比如:获取上传的图片并保存到本地
@app.route('/', methods=['POST'])
def index():
    pic = request.files.get('pic')   post请求上传的是字典格式,这个'pic'是key值
    pic.save('./static/aaa.png')
    data = request.data
    print(data)
    return 'success'

10.状态保持 cookie 和 session

cookie:
make_response(响应内容)方法,是构造响应对象的,然后对它set,最后ruturn响应对象,才能既有cookie也有响应内容

设置:cookie是服务器先发给浏览器的,服务器永远是开始,在响应类中设置
response.set_cookie(key,value,  max_age=失效时间ms )   给响应对象setcookie

获取:服务器接收浏览器发过来的cookie,所以在requset对象中
request.cookies.get('user_id')   因为cookie是字典格式,通过key来获取

注销(了解): 因为还是服务器发给客户端,在response中delete
response.delete_cookie('key')



session:    注意:app.config['SECRET_KEY'] = 'fjkasdjfklasjdfl'  想要应用session需要设置一个密匙的配置 = '解密的规则一般是算法'

敏感、重要的信息,要存储在服务器端,不能存储在浏览器中
session依赖于cookie存在,session相当于办了一张健身卡,信息储存在服务器,给你一张卡,卡可以去服务器找信息,而这个卡的信息通过cookie储存

设置:session单独相当于对象,对它进行操作,就可以
session[key] = 'value'    具体session储存在哪,学习数据库就知道了,应该是框架中session对象中有个储存的地方

获取:
session.get('key','') 建议设置一个默认的none值,不存在也不报错

注销:(了解)
session.pop('key',None) 也建议设置默认值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值