博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2.3 请求调度和请求钩子
阅读量:4095 次
发布时间:2019-05-25

本文共 796 字,大约阅读时间需要 2 分钟。

第一部分 请求调度

前面说过, 程序实例通过路由来处理请求——路由就是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获取用户。
(钩子用法后续还会讲解, 现在不理解不用担心.)
你可能感兴趣的文章
React非嵌套组件通信
查看>>
Websocket 使用指南
查看>>
浏览器兼容性问题解决方案 · 总结
查看>>
一个很棒的Flutter学习资源列表
查看>>
为什么你应该放弃React老的Context API用新的Context API
查看>>
Koa2初体验
查看>>
Koa 2 初体验(二)
查看>>
Koa2框架原理解析和实现
查看>>
vue源码系列文章good
查看>>
你不知道的Virtual DOM
查看>>
VUE面试题总结
查看>>
写好JavaScript条件语句的5条守则
查看>>
原生JS中DOM节点相关API合集
查看>>
【TINY4412】U-BOOT移植笔记:(7)SDRAM驱动
查看>>
C++虚函数的总结
查看>>
C++多态的实现方式总结
查看>>
学习C++需要注意的问题
查看>>
C++模板
查看>>
C++双冒号(::)的用法
查看>>
【Unity】封装SQLite管理类
查看>>