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

 

posted @ 2018-09-29 11:08  猴里吧唧  阅读(150)  评论(0)    收藏  举报