2.3 请求调度和请求钩子

第一部分 请求调度

前面说过, 程序实例通过路由来处理请求——路由就是URL和视图函数的映射。

那么我们如何查看Flask程序中的URL映射?
   
我们可以看到我们使用app.route修饰器定义的两个路由。 中间那个映射是Flask添加的特殊路由, 用于访问静态文件, 详情见第三章。

括号里的HEAD, OPTIONS, GET是请求方法, 这样不同的请求方法发送给相同的URL时就会调用不同的视图函数进行处理。前两个方法由Flask自动处理, 因此可以说在这个程序中URL映射中的三个路由都是用GET方法。 第四章会详细介绍为何为路由指定不同的请求方法。

不同的请求方法发送给相同的URL时就会调用不同的视图函数进行处理图解:
                                        put              index1()     
根url:'/'        路由            get               index2()
                                        其他方法       index3()

               

第二部分 请求钩子

在处理请求之前或之后执行代码会很有用, 但是在每个视图函数中都添加重复代码不是一个好方法。

Flask提供了注册通用函数的功能, 注册的函数可在请求被发送到视图函数之前或者之后调用。

如何注册请求钩子(通用函数), 使用修饰器实现:

    1.before_first_request: 注册一函数, 在处理第一个请求之前运行。
    2.before_request: 在每次请求之前运行。
    3.after_request: 如果没有未处理的异常抛出, 在每次请求之后运行。
    4.teardown_request: 即使有未处理异常抛出, 也在每次请求之后运行。

请求钩子函数和视图函数共享数据一般用我们上节提到的程序上下文提供的g变量。 例如:
    before_request处理程序可以从数据库加载已登录用户, 并保存到g.user中。 随后调用视图函数时, 视图函数再使用g.user获取用户。

(钩子用法后续还会讲解, 现在不理解不用担心.)



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值