一、网络框架及MVC架构
- python的网络框架好多种,所谓的网络框架,就是指一组Python包,这些包能够使开发者专注与网站应用业务逻辑的的开,而无需处理网络应用底层的协议,线程,进程等方面的问题。
- 几乎所有的全栈网络框架都是强制或者引导开发者使用MVC架构开发web应用
全栈网络框架:是指除了封装网络和线程操作,还提供了HTTP栈,数据库读写管理,HTML模板渲染引擎等一系列功能的网络框架。
Django,Tornado和Flask是全栈网络框架常用的,
Twisted更专注与网络底层的高性能封装而不提供HTML模板引擎界面功能,不能称之为全栈框架。 - MVC模式:Model-View-Controller将web分成三个基本的部分
模型(Model):用于封装与应用程序的业务逻辑相关的数据,以及对数据的处理方法,是web应用程序中用于处理应用程序的数据逻辑部分,Model只提供功能性的接口,通过这些接口可以获取Model的所有功能。Model不依赖与View和Controller,他们可以在任何时候调用Model访问数据,有些Model还提供了事件通知机制,为在其上注册过的View或者Controller提供实时的数据更新。
视图(view):负责数据的显示和呈现,View是对用户的直接输出。MVC中的一个Model通常为多个View提供服务,为了获取Model的实时更新数据,View应该尽早地注册到Model中。
控制器(controller):负责从用户端收集用户的输入,可以看成是View的反向功能。当用户的输入导致View发生变化,这种变化必须是通过Model反映给View的。在MVC架构下,Controller一般不能与View直接通信,这样可以提供业务数据的一致性,即以Model作为数据中心。
这三个基本部分相互分离,这样在改进和升级界面以及用户交互流程的时候,不需要重写业务逻辑以及数据库的访问代码。
四种Python网络框架:Diango, Tornado、Flask、Twisted
- Django 是python世界中最负盛名且最成熟的网络框架,最初用来制作在线新闻的web站点,目前已经发展为应用最广泛的Python网络框架,它的各个模块之间结合的比较紧密,功能强大,但是又是一个封闭的系统。
- Tornado 是一个强大的,支持协程,高效可并发,可扩展的web服务器,强项在与利用它的异步协程机制开发高并发的服务器系统。
- Flask:适用于微小项目上
- Twisted: 适用于从传输层到自定义应用协议的所有类型的网络程序开发,并能在不同的操作上提供很高的运行效率
开发环境搭建
- 安装pip 工具
- 安装虚环境
pip install virtualenv
virtualenv venv 执行后,会在当前目录中新建一个venv的目录,该目录复制了一份完整的当前系统的pyhon环境,之后运行python的时候可以直接运行该目录的bin文件夹的命令。
在虚环境下安装组件: ./venv/bin/ pip install tornado组件,或者运行python程序: ./env/bin/pyhton xxx.py
或者soure ./venv/bin/activate 进入的venv环境,不需要每次执行命令都带前缀,退出使用deactive - 安装框架
pip install flask
升级:pip install -U flask到最新版本
卸载:pip uninstall flask
Web服务器
- Web服务器是两节用户浏览器与Python服务器端程序的中间节点。目前主流的web服务器包括Nginx, Apache,lighthttpd, IIS等。Python服务器端程序在Linux平台下使用最多的是Nginx.
- WSGI: web server Gateway Interface(web服务器网关接口)。是将Python服务器端程序连接到Web服务器的通用协议,为python语言定义web服务器和服务器端程序的通用接口规范。
最底层是python服务器端程序,中间是WSGI server ,上一层是web服务器
可见WSGI的接口分为两个:一个与Web服务器的接口连接,另一个是服务器端程序的接口连接。