python-flask小结

1.flask和django区别

  1.flask是一个轻量级的,django是一个重量级的,包含了很多组件,包括admin,orm等,flask虽然没有但可以引入第三方组件。

  2.flask是基于上下文管理做的一个应用上下文appcontext和请求上下文requestcontext管理。django只是通过参数传递。

2.flask生命周期

  flask和django一样也是基于wsgi,先创建app和request的context,放在localstack,再然后请求先走beforer_euqest,再然后试图,最后after_request,最后销毁ctx。

3.wsgi本质

  创建一个socket服务端

4.flask蓝图:

  默认flask通过一个脚本实现,由于项目业务比较多,为了方便项目的业务拆分,我们会创建多个文件,为了方便管理用蓝图管理

4.flask的蓝图和django的app区别

  相同:都可以用于业务拆分,需要注册才能使用,都可以在自己的内部定义文件

  不同点:注册位置不同,flask在app创建的时候注册,django在setting配置文件注册。2.flask的中间件(before_request,after_reqyest)应用力度更加细,可以应用在某个方法,django只能在整个app上。3.django内置了很多,flask需要自己导入

5.在flask-app对象中可以传入静态文件模板配置,通过app.config读取配置

6.特殊装饰器:

  before_request,after_request,before_first_request,route,template_global

7.创建装饰器:

  需要添加funtools.wraps

8.flask的session:

  内置的session,session的数据是以加密的形式放在cookie中。

9.flask请求流程

  1.创建两个ctx=Requestcontext,ctx_app=AppContext, requestcontext封装了request和session,appcontext封装了app和g, 并将它们放入到localstack中.

  2.执行before_first_request,再执行before_request

  3.执行视图函数

  4.执行after_request

  5销毁两个ctx,防止内存泄露

10.g是什么

  全局变量,生命周期是从请求到来直到请求结束

11.数据库连接池--dbutils

12.flask中的local为什么要以线程id进行区分

  flask可以开启多线程,处理用户请求时,需要将线程之间的数据隔离开防止数据混乱。

13.为什么将flask中的local维护成一个栈?

  在web 的runtime时,栈中永远只有一个对象。只有在写离线脚本时出现多with上下文嵌套时(很少出现,但得有),才会在栈中放置多个。

posted @ 2023-08-24 09:12  lv99  阅读(17)  评论(0编辑  收藏  举报