介绍虚拟环境、安装与程序结构
虚拟环境是Python 解释器的一个私有副本,在这个环境中你可以安装私有包,而且不会影响系统中安装的全局Python 解释器。
虚拟环境非常有用,可以在系统的Python 解释器中避免包的混乱和版本的冲突。为每个程序单独创建虚拟环境可以保证程序只能访问虚拟环境中的包,从而保持全局解释器的干净整洁,使其只作为创建(更多)虚拟环境的源。使用虚拟环境还有个好处,那就是不需要管理员权限。
输入以下命令可以检查系统是否安装了virtualenv:
$ virtualenv --version
Linux版的安装:
$ sudo apt-get install python-virtualenv
Mac OS X 版的安装:
$ sudo easy_install virtualenv
Windows版的安装:
在网址https://bootstrap.pypa.io/ez_setup.py 下载ez_setup.py文件,执行以下命令:
c:\python ez_setup.py
c:\easy_install virtualenv
创建并进入到myweb文件夹,使用virtualenv 命令在myweb 文件夹中创建Python 虚拟环境:
$ virtualenv venv
myweb是项目文件夹,虚拟环境会被命名为venv, 当前myweb文件夹中就有了一个名为venv 的子文件夹,它保存一个全新的虚拟环境,其中有一个私有的Python 解释器。在使用这个虚拟环境之前,你需要先将其“激活”。如果你使用bash 命令行(Linux 和Mac OS X 用户),可以通过下面的命令激活这个虚拟环境:
$ source venv/bin/activate
如果使用微软Windows 系统,激活命令是:
$ venv\Scripts\activate
虚拟环境被激活后,其中Python 解释器的路径就被添加进PATH 中,但这种改变不是永久性的,它只会影响当前的命令行会话。为了提醒你已经激活了虚拟环境,激活虚拟环境的命令会修改命令行提示符,加入环境名:
(venv) $
当虚拟环境中的工作完成后,如果你想回到全局Python 解释器中,可以在命令行提示符下输入deactivate:
(venv) $ deactivate
在虚拟环境中安装Flask:
(venv) $ pip install flask
由于境外网站的网速相比较国内的网速慢很多,建议使用国内的镜像网站安装:
(venv) $ pip install -i https://mirrors.aliyun.com/pypi/simple/ flask
在虚拟环境中安装Flask及其依赖包之后,在使用之前,先将其导入:
from flask import Flask
对应的Flask 类都必须创建一个对象实例,而其Web 服务器使用“Web 服务器网关接口”(Web Server Gateway Interface,WSGI)的协议,把接收自客户端的所有请求都转交给这个对象来处理。Flask 类的对象实例化使用下述代码创建:
app = Flask(__name__)
Flask 类的构造方法只有一个必须指定的参数,即程序主模块或包的名字。在大多数程序中,Python 的__name__ 变量就是所需的值。Flask 用这个参数决定程序的根目录,以便稍后能够找到相对于程序根目录的资源文件位置。
2. 路由和视图函数Web 浏览器客户端把请求发送给Web 服务器,Web 服务器再把请求发送给Flask对象实例。对象实例需要知道对每个URL 请求运行哪些代码,所以保存了一个URL 到Python 函数的映射关系。处理URL 和函数之间关系的程序称为路由。
在Flask 程序中定义路由的最简便方式,是使用Flask对象实例提供的app.route 装饰器,把装饰的函数注册为路由。下面的例子说明了如何使用这个装饰器声明路由:
@app.route('/')
def index():
return '<h1>Hello World!</h1>'
装饰器是Python 语言的标准特性,可以使用不同的方式修改函数的行为。通常用法是使用装饰器把函数注册为事件的处理程序。
前例把index() 函数注册为Web映射根路径(/
)的处理程序。在浏览器中访问http://127.0.0.1:5000/ 后,会触发服务器执行index() 函
数。这个函数的返回值称为响应,是客户端接收到的内容。在Web 浏览器中的响应就是显示给用户查看的文档。
像index() 这样的函数称为视图函数
(view function)。视图函数返回的响应可以是包含HTML 的简单字符串,也可以是复杂的表单。
对象实例用run 方法启动Flask 集成的开发Web 服务器(由于性能仅用于开发,生产环境可选用nginx等第三方Web服务器):
if __name__ == '__main__':
app.run(debug=True)
__name__=='__main__'
是Python 的通常用法,在这里确保直接执行这个模块程序脚本时才启动Web 服务器。如果这个模块程序脚本由其他模块程序脚本导入,因此不会执行app.run()。
服务器启动后,会进入轮询,等待并处理请求。轮询会一直运行,直到程序停止。例如按Ctrl-C 键可停止服务器。
有一些选项参数可被app.run() 函数接受用于设置Web 服务器的操作模式。在开发过程中启用调试模式会带来一些便利,比如说激活调试器和重载程序。要想启用调试模式,可以把debug 参数设为True。
博文最后更新时间: