python面试题Flask

第九章 Flask

  1. 请手写一个flask的 Hello World。

 

  1. Flask框架的优势?

答:Flask框架小而精简 基于协程实现并发 请求上下文机制

  1. Flask框架依赖组件?

答:

Werkzeug 承载 Flask 应用 app.run 执行的就是 Werkzeug 中的 run_simple

Jinja2 模板语言支持组件

MarkupSafe 解决XSS攻击 及 模板安全标签字符串

  1. Flask蓝图的作用?

答:隔离应用 每一个蓝图是一个独立的 Application

  1. 列举使用过的Flask第三方组件?

答:

Flask-Session           三方Session组件 可将原生Session替换

Flask-SQLAlchemy  ORM组件

Flask-Script              Flask脚本支持

Flask-Migrate                 Flask数据库迁移 需Flask-SQLAlchemy和Flask-Script支持

Flask-CORS        解决Flask跨域问题

  1. 简述Flask上下文管理流程?

答:

请求进入app被序列化至*CTX对象中保存,并将*CTX对象储存在*_request_ctx_stack,在试图函数中使用request调用,request是一个*LocalProxy对象专门代理获取*_request_ctx_stack对象中的数据,当视图函数结束后,*_request_ctx_stack自动清除当前请求的*CTX所有信息

*CTX:序列化请求原始信息其中包含 app request session g

*_request_ctx_stack:LocalStack对象在其中包含一个Local对象

{

      _local:

      {

             __storage__:

             {

                    9527:{stack:[CTX]}

             },

             __ident_func__:get_ident

      }

}

*LocalProxy: 本地代理对象,用于获取_request_ctx_stack:LocalStack中的数据

  1. Flask中的g的作用?

答:

g对象是专用用来保存用户的数据的。

g对象在一次请求中,全局可以调用。

  1. 如何编写flask的离线脚本?

答:

离线脚本是根据Flask应用上下文原理而来

1.编写离线脚本需要使用当前线上的Flask示例配置(Config)

2.应用上下文机制中 app.context() 对象支持 __enter__ 和 __exit__ 方法 所以可以使用with

 

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

答:

 

  1. 为什么要Flask把Local对象中的的值stack 维护成一个列表?

答:便于ctx对象的增删改查

  1. Flask中多app应用如何编写?

答:

  1. 在Flask中实现WebSocket需要什么组件?

答:

GeventWebsocket

在 Werkzeug 组件中也包含 Websocket 但是由于对并发的支持不好,所以一般不用

  1. wtforms组件的作用?

答:

1.由类去创建Form组件

2.定义Form错误信息

3.校验FormData中的数据

4.返回FormData中的错误信息

  1. Flask框架默认session处理机制?

答:

机制:交由客户端保管

方式:将Session字符串通过SecretKey加密后返回客户端,浏览器会自动记录在Cookie中建立一个值储存

  1. 解释Flask框架中的Local对象和threadinglocal对象的区别?

答:

Local对象是将每一个线程的数据写入到一个Stack中保管

Threadinglocal直接在内存中开辟一个新的空间存储对象

  1. SQLAlchemy中的 session和scoped_session 的区别?

答:

Session 创建会话 每次创建新的会话

scoped_session 只创建一次会话,重复调用一个会话

  1. SQLAlchemy如何执行原生SQL?

答:

 

  1. ORM的实现原理?

答:

将对象中的数据转换为原生SQL语句执行

操纵对象从而获得原生SQL语句

  1. DBUtils模块的作用?

答:

是Python针对数据库高可用的模块

通常用的最多的是 DBUtils 中的 PoolDB 数据库连接池

  1. 以下SQLAlchemy的字段是否正确?如果不正确请更正.

答:错题

  1. SQLAchemy中如何为表设置引擎和字符编码?

答:

  1. SQLAchemy中如何设置联合唯一索引?

答:

posted @ 2019-11-20 20:14  june_ruby  阅读(110)  评论(0编辑  收藏  举报