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参数,因此我们可以只记录异常信息

22、Flask实战第22天:Flask信号的更多相关文章
- Flask实战-留言板-安装虚拟环境、使用包组织代码
Flask实战 留言板 创建项目目录messageboard,从GreyLi的代码中把Pipfile和Pipfile.lock文件拷贝过来,这两个文件中定义了虚拟环境中需要安装的包的信息和位置,进入m ...
- 1、Flask实战第1天:第一个Flask程序
Flask是流行的python web框架...(* ̄︶ ̄) 零基础到企业级论坛实战,人生苦短,我用python,开启FLask之旅吧... 安装开发环境 下载Python win版安装包 双击运行, ...
- 08 Flask源码剖析之flask拓展点
08 Flask源码剖析之flask拓展点 1. 信号(源码) 信号,是在flask框架中为我们预留的钩子,让我们可以进行一些自定义操作. pip3 install blinker 2. 根据flas ...
- 02 flask源码剖析之flask快速使用
02 flask快速使用 目录 02 flask快速使用 1.flask与django的区别 2. 安装 3. 依赖wsgi Werkzeug 4. 快速使用flask 5. 用户登录&用户管 ...
- A.prototype.b=22和A.b=22的区别
// A.prototype.b=22和A.b=22有什么区别 <script> function A(){ this.b=11; }A.b=22;//A.prototype.b=2 ...
- flask tutorial => make a blog :) flask 搭建博客系统从零开始!
please follow the tutorial from the official site :) http://flask.pocoo.org/docs/ You could download ...
- 【Flask】微型web框架flask大概介绍
Flask Flask是一个基于python的,微型web框架.之所以被称为微型是因为其核心非常简单,同时具有很强的扩展能力.它几乎不给使用者做任何技术决定. 安装flask时应该注意其必须的几个支持 ...
- Flask从入门到精通之flask安装
使用虚拟环境 安装Flask最简单的方式是使用虚拟环境,虚拟环境是python解释器的一个私有副本,在这个环境中你可以安装私有包,而且不会影响系统中安装的全局的Python解释器.虚拟环境非常有用,可 ...
- Flask - 特殊装饰器 和 Flask工作结构模式(FBV, CBV)
目录 Flask - 特殊装饰器 和 Flask工作结构模式 @app.errorhandler() @app.before_request @app.after_request FBV和CBV Fl ...
随机推荐
- [Leetcode] Add two numbers 两数之和
You are given two linked lists representing two non-negative numbers. The digits are stored in rever ...
- MySQL 数据库性能优化之缓存参数优化
在平时被问及最多的问题就是关于 MySQL 数据库性能优化方面的问题,所以最近打算写一个MySQL数据库性能优化方面的系列文章,希望对初中级 MySQL DBA 以及其他对 MySQL 性能优化感兴趣 ...
- Educational Codeforces Round 11 A
A. Co-prime Array time limit per test 1 second memory limit per test 256 megabytes input standard in ...
- POJ2391:Ombrophobic Bovines(最大流+Floyd+二分)
Ombrophobic Bovines Time Limit: 1000MSMemory Limit: 65536K Total Submissions: 21660Accepted: 4658 题目 ...
- HDU - 1880 魔咒词典~哈希入门
哈利波特在魔法学校的必修课之一就是学习魔咒.据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一个需要的魔咒,所以他需要你的帮助. 给你一部魔咒词 ...
- ios webapp调试神器MIHTool
android平台有直接用chrome beta就可以调试,具体操作办法可以查看这篇教程<Android 设备 Chrome 远程调试>Mac的高富帅直接可以用safari提供“web检查 ...
- CentOS 6.4安装配置ldap
CentOS 6.5安装配置ldap 时间:2015-07-14 00:54来源:blog.51cto.com 作者:"ly36843运维" 博客 举报 点击:274次 一.安装l ...
- 五分钟搞懂Vuex
这段时间一直在用vue写项目,vuex在项目中也会依葫芦画瓢使用,但是总有一种朦朦胧胧的感觉.于是决定彻底搞懂它. 看了一下午的官方文档,以及资料,才发现vuex so easy! 作为一个圈子中的人 ...
- cglib
参考:http://blog.csdn.net/zhoudaxia/article/details/30591941 <!-- https://mvnrepository.com/artifac ...
- python最简单发送邮件
#!/usr/bin/env python #coding:utf8 #Author:lsp #Date:下午5:51:13 #Version:0.1 #Function: #导入smtplib和MI ...