框架部分知识点汇总

threading.local 以及作用?

为每个线程生成一个对象,实现线程间的数据隔离

Flask上下文管理流程以及和django比较?

  1. 项目启动时会生成两个LocalStack实例_request_ctx_stack和_app_ctx_stack ,每个对象都有一个_local属性,是一个Local实例
  2. 还会产生4个LocalProxy实例,分别是request,session,current_app还有g
  3. Local类似于threading.local,但是Local还能够为协程来分隔数据
  4. 当请求来临时,会产生一个ctx即RequestContext对象,这个类封装了request和session,session在实例化是还是个None
  5. 然后会调用ctx的push()方法,而ctx的push回将自身作为参数,调用LocalStack实例的push方法,在LocalStack的方法中通过.的方式向_local实例中设置了一个空列表,又将RequestContext实例追加进其中,而Local的setattr方法则是完成了以进程或线程ID为键将设置的列表作为置
  6. 取值过程则是通过导入rsquest,或session,调用了LocalProxy中的__getattr__或__setitem__,其中有执行了类初始化时是传递的偏函数,通过LocalStack从Local中取得RequestContext,又获得了想要的属性,为此属性设置值或从此属性中取值

Flask中上下文管理主要涉及到了那些相关的类?并描述类主要作用?

同上

Flask中的g的作用?

一次请求开始到结束的全局变量

为什么要把Local的值维护成一个列表?

在多app离线脚本中,使的每层能够使用自己的app对象

Flask中多app应用是怎么完成?

主要是通过分割url来判断取那个app,所以也可以用来实现路由分发的功能

原生SQL和ORM的区别?

orm是将一条数据封装成一个对象,通过对象的方式来查询,而不用编写复杂的sql语句,

posted @ 2018-05-22 08:43  瓜田月夜  阅读(100)  评论(0编辑  收藏  举报