对Django的认识?
-
1.Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。
-
2.Django内置的ORM跟框架内的其他模块耦合程度高。应用程序必须使用Django内置的ORM,否则就不能享受到框架内提供的种种基于其ORM的便利;理论上可以切换掉其ORM模块,但这就相当于要把装修完毕的房子拆除重新装修,倒不如一开始就去毛胚房做全新的装修。
-
3.Django的卖点是超高的开发效率,其性能扩展有限;采用Django的项目,在流量达到一定规模后,都需要对其进行重构,才能满足性能的要求。
-
4.Django适用的是中小型的网站,或者是作为大型网站快速实现产品雏形的工具。
-
5.Django模板的设计哲学是彻底的将代码、样式分离; Django从根本上杜绝在模板中进行编码、处理数据的可能。
Django 、Flask、Tornado的对比
-
1.Django走的是大而全的方向,开发效率高。它的MTV框架,自带的ORM,admin后台管理,自带的sqlite数据库和开发测试用的服务器给开发者提高了超高的开发效率
-
2.Flask是轻量级的框架,自由,灵活,可扩展性很强,核心基于Werkzeug WSGI工具和jinja2模板引擎
-
3.Tornado走的是少而精的方向,性能优越。它最出名的是异步非阻塞的设计方式Tornado的两大核心模块: 1、iostraem:对非阻塞式的socket进行简单的封装 2、ioloop:对I/O多路复用的封装,它实现了一个单例
什么是wsgi,uwsgi,uWSGI?
-
WSGI:web服务器网关接口,是一套协议。用于接收用户请求并将请求进行初次封装,然后将请求交给web框架
实现wsgi协议的模块: 1.wsgiref,本质上就是编写一个socket服务端,用于接收用户请求(django) 2.werkzeug,本质上就是编写一个socket服务端,用于接收用户请求(flask)
-
uwsgi:与WSGI一样是一种通信协议,它是uWSGI服务器的独占协议,用于定义传输信息的类型
-
uWSGI:是一个web服务器,实现了WSGI协议,uWSGI协议,http协议,
django请求的生命周期?
-
1.wsgi,请求封装后交给web框架 (Flask、Django)
-
2.中间件,对请求进行校验或在请求对象中添加其他相关数据,例如:csrf、request.session -
-
3.路由匹配 根据浏览器发送的不同url去匹配不同的视图函数
-
4.视图函数,在视图函数中进行业务逻辑的处理,可能涉及到:orm、templates => 渲染 -
-
5.中间件,对响应的数据进行处理。
-
6.wsgi,将响应的内容发送给浏览器。
简述什么是FBV和CBV?
FBV和CBV本质是一样的 基于函数的视图叫做FBV,基于类的视图叫做CBV 在python中使用CBV的优点:
-
1.提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承)
-
2.可以用不同的函数针对不同的HTTP方法处理,而不是通过很多if判断,提高代码可读性