Django的面试总结
1, 对Django的认识
#1, Django是大而全的框架, 最出名的是其全自动化的管理后台,只需要使用ORM, 做简单的对象定义,它就能自动生成数据库库结构,以及全功能的管理后台. #2, Django内置的ORM跟框架内的其他模块耦合程度高. # 应用程序必须使用Django内置的ORM,否则就不能享受到框架内提供的种种基于ORM的便利: #3, Django的卖点是超高的开发效率,其性能扩展有限:采用Django的项目,在流量达到一定规模后,都需要对其进行重构,猜能满足性能的要求. #4, Django适用的是中小型网站,或者是作为大型网站快速实现产品雏形的工具 #5, Django模板的设计哲学是彻底的将代码,样式分离; Django从根本上杜绝在模板中进行编码,处理数据的可能
2, Django, Flask, Tornado的对比
#1.Django走的是大而全的方向,开发效率高。它的MTV框架,自带的ORM,admin后台管理,自带的sqlite数据库和开发测试用的服务器 #给开发者提高了超高的开发效率 #2.Flask是轻量级的框架,自由,灵活,可扩展性很强,核心基于Werkzeug WSGI工具和jinja2模板引擎 #3.Tornado走的是少而精的方向,性能优越。它最出名的是异步非阻塞的设计方式 #Tornado的两大核心模块: # 1.iostraem:对非阻塞式的socket进行简单的封装 # 2.ioloop:对I/O多路复用的封装,它实现了一个单例
3, 什么式wsgi, uwsgi, uWSGI
# WSGI # web服务器网关接口,是一套协议,用于接受用户请求并将请求进行初次封装,然后将请求交给web框架 # 实现wsgi协议的模块 # 1, wsgiref, 本质上就是编写一个socket服务端,用于接受用户请求(django) # 2, werkzeug, 本质商就是编写一个socket服务器,用于接受用户请求(flalsk) # uwsgi: # 是一个web服务器,实现了WSGI协议,uWSGI协议, http协议
4, Django请求的生命周期?
#1, wsgi,请求封装后交给web框架(Flask, Django) #2, 中间件,对请求进行校验或请求对象中添加其他相关数据,例如: csrf, request.session #3, 路由匹配, 根据浏览器发送不同的url去匹配不同的视图函数 #4, 视图函数, 在视图函数中进行业务逻辑的处理, 可能涉及到: orm, templates = > 渲染 #5, 中间件,对响应的数据进行处理 #6, wsgi, 将响应的内容发送给浏览器
5, 简述什么是FBV和CBV?
# FBV和CBV本质是一样的 # 基于函数的视图叫做FBV, 基于类的视图叫做CBV # zaipython中使用CBV的优点: #1, 提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承) #2, 可以用不同的函数针对不同的HTTP方法处理,而不是通过分多if判断,提高代码可读性
6, 如何给CBV的程序添加装饰器?
#引入method_decorator模块 #1, 直接再类上加装饰器 # @method_decorator(test, name="dispatch") # class LoginView(view): pass # 直接再处理的函数前加装饰器 # @method_decorator(test): def post(self, request, *args, **kwargs): pass
7, 简述MVC和MTV
#MVC软件系统分为三个基本部分: 模型(model), 视图(View), 和控制器(Controller) #Model: 负责业务对象与数据库的映射(ORM) #View: 负责与用于的交互 #Control: 接受用户的输入调用模型和视图完成用户的请求 #Django框架的MTV设计模式借鉴了MVC框架的思想,三部分: Model, Template和View #Model(模型): 负责业务对象与数据库的对象(ORM) #Template(模板): 负责如何把页面展示给用户 #View(视图) 负责业务逻辑,并在适当的时候调用Model和Template #此外, Django改由一个urls分发器, # 他将一个个url的页面请求分发到不同的view处理,view再调用相应Model和Template

浙公网安备 33010602011771号