本文章主要整理:

0.如何使用虚拟环境
1.如何用 pip 安装 Python 包(Demo:如何安装 flask
2.一个简单的 Demo

如何使用虚拟环境

在介绍使用虚拟环境前,需要提前安装 Python 3.4(原先写的文章有介绍)。

Python 3.4 通过 venv 模块原生支持虚拟环境,命令为 pyvenv

1.创建一个名字为 venv 虚拟环境

1
pyvenv venv

2.激活名字为: venv 的虚拟环境

1
source venv/bin/activate

3.激活虚拟环境命令会修改命令行提示符,显示如下:

1
(venv) $

4.退出当前虚拟环境

使用命令:deactivate

使用 pip 安装 Python 包

大多数 Python 包都使用 pip 实用工具安装,使用 pyvenv 创建的虚拟环境会自动安装 pip

1.使用 pip 安装 Flask(其它 Python 包同理)

1
pip install flask

一个简单的 Demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from flask import Flask
from flask import abort
from flask import redirect
app = Flask(__name__)
@app.route('/')
def index():
return '<h1>Hello World!</h1>'
@app.route('/user/<name>')
def sayHello(name):
if name == 'baidu':
return redirect('http://www.baidu.com')
elif name == 'NO':
return abort(404)
return '<h1> Hello,%s </h1>' % name
if __name__ == '__main__':
app.run(debug=True)

从 Demo 中学习路由、修饰器、视图函数、请求、响应概念,一步步分析每行代码:

1.from flask import Flask

flask 库中导入 Flask 函数,from flask import abortfrom flask import redirect 同理。

2.app = Flask(__name__)

创建 Flask 对象 appFlask 类的构造函数只有一个必须指定的参数,即程序主模块或包的名字。在大多数程序中,Python 的 __name__ 变量就是所需要的值。

3.@app.route('/')

客户端(例如 Web 浏览器)把请求发送给 Web 服务器,Web 服务器再把请求发送给 Flask 程序实例。程序实例需要知道对每个 URL 请求运行哪些代码,所以保存了一个 URL 到 Python 函数的映射关系。处理 URL 和函数之间的关系的程序称为路由

在 Flask 程序中定义路由的最简便方式,是使用程序实例提供的 app.route 修饰器,把修饰的函数注册为路由。

修饰器是 Python 语言的标准特性,可以使用不同的方式修改函数的行为。惯常用法是使用修饰器把函数注册为事件的处理程序。

4.def index():函数

index() 函数放在 @app.route('/') 后面,所以就是把 index() 函数注册为路由。

如果部署程序的服务器域名为 www.example.com,在浏览器中访问 www.example.com 后,会触发服务器执行 index() 函数。

5.@app.route('/user/<name>')

@app.route('/'),如果部署程序的服务器域名为 www.example.com,在浏览器中访问 www.example.com/user/tom 后,会触发服务器执行下方修饰函数 sayHello(name)

6.sayHello(name)函数

1
2
3
4
5
6
if name == 'baidu':
return redirect('http://www.baidu.com')
elif name == 'NO':
return abort(404)
return '<h1> Hello,%s </h1>' % name

假定部署程序的服务器域名为 www.example.com

在浏览器中访问 www.example.com/user/baidu,那么 redirect() 函数就直接链接到百度了。

注意的是,在使用 redirect() 函数之前,必须使用 from flask import redirect 从 flask 库中导入 redirect() 函数。

在浏览器中访问 www.example.com/user/NO,那么 abort() 函数就会触发。

abort() 函数用于处理错误,abort(404) 返回 404 错误,abort()函数不会把控制权交还给调用它的函数,而是抛出异常把控制权交给Web服务器。

在浏览器中访问 www.example.com/user/tom,那么会正确执行,在浏览器中显示 Hello,tom

7.if __name__ == '__main__':

一开始也没弄懂,这句话是什么意思。在 StackOverflow 中找到了答案。

大致翻一下:

当 Python 解释器,读 py 文件,它会执行它发现的所有代码。在执行代码之前,它会定义一些变量。例如,如果这个 py 文件就是主程序,它会设置__name__变量为"__main__"。如果这个 py 被引入到别的模块,__name__会被设置为该模块的名字。

举个栗子:
创建一个 test.py 文件:

1
2
3
4
if __name__ == '__main__':
print '自己主动执行'
else:
print '我被别的模块引入'

执行下 $ python test.py 会输出自己主动执行
直接在命令行中输入 python 随后输入 import test,会输出:我被别的模块引入

8.app.run(debug=True)

程序实例用 run() 方法启动 Flask 继承的开发 Web 服务器。

服务器启动后,会进入轮询,等待并处理请求。轮询会一直进行,直到程序停止,比如按Ctrl-C键。

debug=True表示启用调试模式。方便我们调试。