【python web开发知识点整理2】- Python Web基础

放肆的年华 提交于 2020-03-03 18:54:47

【python web开发知识点整理1】- Python基础
【python web开发知识点整理2】- Python Web基础
【python web开发知识点整理3】- 容器基础
【python web开发知识点整理4】- 数据库基础
【python web开发知识点整理5】- Linux基础
【python web开发知识点整理6】- 设计模式

2. Python Web基础

2.1. django、flask、tornado框架的比较?

2.1.1. Django:

Python 界最全能的 web 开发框架,battery-include 各种功能完备,可维护性和开发速度一级棒。常有人说 Django 慢,其实主要慢在 Django ORM 与数据库的交互上,所以是否选用 Django,取决于项目对数据库交互的要求以及各种优化。而对于 Django 的同步特性导致吞吐量小的问题,其实可以通过 Celery 等解决,倒不是一个根本问题。
Django 的项目代表:Instagram,Guardian。

2.1.2. Tornado:

天生异步,性能强悍是 Tornado 的名片,然而 Tornado 相比 Django 是较为原始的框架,诸多内容需要自己去处理。当然,随着项目越来越大,框架能够提供的功能占比越来越小,更多的内容需要团队自己去实现,而大项目往往需要性能的保证,这时候 Tornado 就是比较好的选择。
Tornado项目代表:知乎。

2.1.3. Flask:

微框架的典范,号称 Python 代码写得最好的项目之一。Flask 的灵活性,也是双刃剑:能用好 Flask 的,可以做成 Pinterest,用不好就是灾难(显然对任何框架都是这样)。Flask 虽然是微框架,但是也可以做成规模化的 Flask。加上 Flask 可以自由选择自己的数据库交互组件(通常是 Flask-SQLAlchemy),而且加上 celery +redis 等异步特性以后,Flask 的性能相对 Tornado 也不逞多让,也许Flask 的灵活性可能是某些团队更需要的。

2.2. 如何理解 Django 被称为 MTV 模式?

MTV是说Model Template View即模型、模版、视图。

  1. 模型:负责业务对象与数据库的对象;
  2. 模版:负责如何把页面展示给用户;
  3. 视图:负责业务逻辑,并在适当的时候调用Model和Template。
    Django还有一个url分发器,它的作用是将一个URL的页面请求分发给不同的View处理,view再调用相应的Model和Template。

2.3. 什么是wsgi?

  1. WSGI(Web Server Gateway Interface,Web 服务器网关接口)则是Python语言中1所定义的Web服务器和Web应用程序之间或框架之间的通用接口标准。
  2. WSGI就是一座桥梁,桥梁的一端称为服务端或网关端,另一端称为应用端或者框架端,WSGI的作用就是在协议之间进行转化。WSGI将Web组件分成了三类:Web 服务器(WSGI Server)、Web中间件(WSGI Middleware)与Web应用程序(WSGI Application)。
  3. Web Server接收HTTP请求,封装一系列环境变量,按照WSGI接口标准调用注册的WSGI Application,最后将响应返回给客户端。

2.4. 列举django orm中三种能写sql语句的方法

  1. 使用execute执行自定义SQL
  2. 使用extra方法
  3. 使用raw方法

2.5. 谈谈你对restfull 规范的认识?

restful其实就是一套编写接口的协议,协议规定如何编写以及如何设置返回值、状态码等信息。

  1. restful: 给用户一个url,根据method不同在后端做不同的处理,比如:post 创建数据、get获取数据、put和patch修改数据、delete删除数据。
  2. no rest: 给调用者很多url,每个url代表一个功能,比如:add_user/delte_user/edit_user/
  3. 版本,来控制让程序有多个版本共存的情况,版本可以放在 url、请求头(accept/自定义)、GET参数
  4. 状态码,200/300/400/500
  5. url中尽量使用名词,restful也可以称为“面向资源编程”
  6. api标示:
    api.YueNet.com
    www.YueNet.com/api/

2.6. 为什么要使用django rest framework框架?

  1. 客户端-服务端分离
    优点:提高用户界面的便携性,通过简化服务器提高可伸缩性….
  2. 无状态(Stateless):从客户端的每个请求要包含服务器所需要的所有信息
    优点:提高可见性(可以单独考虑每个请求),提高了可靠性(更容易从局部故障中修复),提高可扩展性(降低了服务器资源使用)
  3. 缓存(Cachable):服务器返回信息必须被标记是否可以缓存,如果缓存,客户端可能会重用之前的信息发送请求
    优点:减少交互次数,减少交互的平均延迟
  4. 统一接口
    优点:提高交互的可见性,鼓励单独改善组件
  5. 支持按需代码(Code-On-Demand 可选)
    优点:提高可扩展性

2.7. django rest framework如何实现的用户访问频率控制?

  1. 基于用户IP限制访问频率
  2. 基于用户IP显示访问频率(利于Django缓存)
  3. view中限制请求频率
  4. 匿名时用IP限制+登录时用Token限制

2.8. Django和Flask框架的优势?

2.8.1. 整体设计方面

首先,两者都是非常优秀的框架。整体来讲,两者设计的哲学是区别最大的地方。Django提供一站式的解决方案,从模板、ORM、Session、Authentication等等都分配好了,连app划分都做好了,总之,为你做尽量多的事情,而且还有一个killer级的特性,就是它的admin,配合django-suit,后台就出来了,其实最初Django就是由在新闻发布公司工作的人设计的。Flask只提供了一些核心功能,非常简洁优雅。它是一个微框架,其他的由扩展提供,但它的blueprint使它也能够很方便的进行水平扩展。

2.8.2. 路由设计

Django的路由设计是采用集中处理的方法,利用正则匹配。Flask也能这么做,但更多的是使用装饰器的形式,这个有优点也有缺点,优点是读源码时看到函数就知道怎么用的,缺点是一旦源码比较长,你要查路由就不太方便了,但这也促使你去思考如何更合理的安排代码。

2.8.3. 应用模块化设计

Django的模块化是集成在命令里的,也就是说一开始Django的目标就是为以后玩大了做准备的。每个都是一个独立的模块,为以后的复用提供了便利。Flask通过Blueprint来提供模块化,自己对项目结构划分成不同的模块进行组织。

2.9. Flask框架依赖组件?

  1. Route(路由)
  2. templates(模板)
  3. Models(orm模型)
  4. blueprint(蓝图)
  5. Jinja2模板引擎

2.10. 简述Tornado框架的特点。

Tornado的独特之处在于其所有开发工具能够使用在应用开发的任意阶段以及任何档次的硬件资源上。而且,完整集的Tornado工具可以使开发人员完全不用考虑与目标连接的策略或目标存储区大小。

Tornado 结构的专门设计为开发人员和第三方工具厂商提供了一个开放环境。已有部分应用程序接口可以利用并附带参考书目,内容从开发环境接口到连接实现。Tornado包括强大的开发和调试工具,尤其适用于面对大量问题的嵌入式开发人员。这些工具包括C和C++源码级别的调试器,目标和工具管理,系统目标跟踪,内存使用分析和自动配置. 另外,所有工具能很方便地同时运行,很容易增加和交互式开发。

2.11. 常用的web框架如何实现异步的

  • Tornado使用协程;
  • Django、Flask使用threading多线程实现;
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!