flask面试题

- 1. django和flask区别?
相同:
- 基于wsgi
不同:
- 传值方式,flask是基于上下文管理机制进行传值
- 组件:
- flask少,扩展性强
- django多,开发效率高

- 2. flask内置组件
- 配置文件
- 路由
- 视图
- 模板
- 请求与响应
- session
- 闪现
- 蓝图
- 中间件
- 特殊装饰器
- 3. Flask上下文管理是如何实现?
我认为上下文管理可以分成三个阶段
1,处理请求,并通过localstack将请求相关数据封装到一个栈local中
2,处理视图函数,通过代理localproxy,调用偏函数,通过localstack从local中取到数据
3,保存cookie,对每个对象采用各自的pop方法进行删除

- 4. 为什么要创建LocalStack类 or Local对象中为什么保存成 {111:{stack:[ctx, ]}}
Web应用时:
- 服务端单线程:
{
111:{stack: [ctx, ]}
}
- 服务端多线程:
{
111:{stack: [ctx, ]}
112:{stack: [ctx, ]}
}
离线脚本:
with app01.app_context():
print(current_app)
with app02.app_context():
print(current_app)
print(current_app)
PS: 实现栈
  • Stack() 创建一个新的空栈
  • push(item) 添加一个新的元素item到栈顶
  • pop() 弹出栈顶元素
  • peek() 返回栈顶元素
  • is_empty() 判断栈是否为空
  • size() 返回栈的元素个数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class  Stack( object ):
     """栈"""
     def  __init__( self ):
          self .items  =  []
 
     def  is_empty( self ):
         """判断是否为空"""
         return  self .items  = =  []
 
     def  push( self , item):
         """加入元素"""
         self .items.append(item)
 
     def  pop( self ):
         """弹出元素"""
         return  self .items.pop()
 
     def  peek( self ):
         """返回栈顶元素"""
         return  self .items[ len ( self .items) - 1 ]
 
     def  size( self ):
         """返回栈的大小"""
         return  len ( self .items)
 
if  __name__  = =  "__main__" :
     stack  =  Stack()
     stack.push( "hello" )
     stack.push( "world" )
     stack.push( "lcg" )
     print  stack.size()
     print  stack.peek()
     print  stack.pop()
     print  stack.pop()
     print  stack.pop()

- 5.Flask第三组件:
- flask-session(scoped-session)将默认保存的签名cookie中的值 保存到 redis/memcached/file/Mongodb/SQLAlchemy
   - flask-sqlalchemy            将SQLAlchemy相关的所有功能都封装到db=flask_sqlalchemy.SQLAlchemy()对象中
   - flask-migrate        数据化迁移
- flask-script     把flask像django一样,执行 - python manage.py runserver或- python manage.py 自定义命令

- DBUtils         数据库连接池
- wtforms      用于对python web框架做表单验证。
   - 自定义 Auth,参考的是flask-login组件 

猜你喜欢

转载自www.cnblogs.com/weiwu1578/p/9004485.html