多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## **处理第一次请求之前执行** ~~~ @app.before_first_request def first_request(): print 'first time request' ~~~ <br/> ## **处理第一次请求之前执行** ~~~ @app.before_request def before_request(): if not hasattr(g,'user'): setattr(g,'user','xxxx') ~~~ <br/> ## **不管是否有异常,注册的函数都会在每次请求之后执行** ~~~ @app.teardown_appcontext def teardown(exc=None): if exc is None: db.session.commit() else: db.session.rollback() db.session.remove() ~~~ <br/> ## **在使用`Jinja2`模板的时候自定义过滤器** ~~~ // 比如可以增加一个`upper`的过滤器 @app.template_filter def upper_filter(s): return s.upper() ~~~ <br/> ## **上下文处理器** ~~~ // 返回的字典中的键可以在模板上下文中使用 @app.context_processor return {'current_user':'xxx'} ~~~ <br/> ## **errorhandler接收状态码** ~~~ // 可以自定义返回这种状态码的响应的处理方法 @app.errorhandler(404) def page_not_found(error): return 'This page does not exist',404 ~~~ <br/> ## **执行流程图** ![](https://img.kancloud.cn/f5/44/f5446673479df176b695e621aebbb7a9_825x704.png)