22、Flask实战第22天:Flask信号
Flask中的信号使用的是一个第三方插件blinker。通过pip list看一下是否安装,如果没有,则使用如下命令安装
pip install blinker
自定义信号
自定义信号分为3步: ①定义一个信号--->②监听一个信号--->③发送一个信号
我们来用信号完成:当用户登录网站的时候,把用户登录日志记录到数据库中
我们创建一个singles.py来定义监听信号
在login视图发送信号
在浏览器中访问模拟登录
查看数据库已经记录了一条日志了
这种情况下,我们还可以用前面学到的g对象来优化下代码
Flask内置的信号
导入其中一个内置的信号,按住ctrl点击就可以看到所有内置的信号了
1. template_rendered:模版渲染完成后的信号。 2. before_render_template:模版渲染之前的信号。 3. request_started:模版开始渲染。 4. request_finished:模版渲染完成。 5. request_tearing_down:request对象被销毁的信号。 6. got_request_exception:视图函数发生异常的信号。一般可以监听这个信号,来记录网站异常信息。 7. appcontext_tearing_down:app上下文被销毁的信号。 8. appcontext_pushed:app上下文被推入到栈上的信号。 9. appcontext_popped:app上下文被推出栈中的信号 10. message_flashed:调用了Flask的`flashed`方法的信号。
这里演示下got_request_exception
可以看到有exception参数,因此我们可以只记录异常信息
每天进步一点,加油!