(四)请求调度、钩子

一、请求的处理过程

服务器收到客户端发送过来的请求时,需要找到处理该请求的视图函数,这个过程Flask是通过在URL映射中查找到请求的URL。URL映射就是视图函数和URL之间的对应关系。映射关系的生成,是通过app.route()修饰器或者非修饰器app.add_url_rule()生成。

查看程序的映射:

[root@test-service01 test]# python
Python 2.7.6 (default, Jan  6 2016, 15:23:55) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from hello import app
>>> app.url_map
Map([<Rule '/chengxu' (HEAD, OPTIONS, GET) -> chengxu>,
 <Rule '/' (HEAD, OPTIONS, GET) -> index>,
 <Rule '/static/<filename>' (HEAD, OPTIONS, GET) -> static>,
 <Rule '/user/<username>' (HEAD, OPTIONS, GET) -> user>,
 <Rule '/int/<id>' (HEAD, OPTIONS, GET) -> int>])
>>> 

以上就是程序的URL映射。

二、请求钩子

如果在程序执行之前或者是之后进行一些处理,可以通过注册将函数用户满足功能。请求钩子是使用修饰器实现的。

flask支持的4种请求钩子。

before_first_request 注册一个函数,在程序处理第一个请求之前运行

before_request 在每次的请求之前执行

after_request 如果没有未处理的异常抛出,在每次的请求之后执行

teardown_request 无论有无未处理的异常抛出,在每次的请求之后都执行


如果要在请求钩子函数和视图函数之间共享数据,可以通过程序上下文全局变量g 


from flask import Flask
from flask import request
from flask import app
from flask import current_app
from flask import g

app = Flask(__name__)

@app.before_first_request
def bf_first_request():
        g.string = 'before_first_request'

@app.route('/test')
def test():
        return '<h1>%s </h1>' % g.string
程序上下文g和请求钩子的配合使用





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值