Flask Web 开发学习笔记(一)
本文章主要整理:
0.如何使用虚拟环境
1.如何用pip安装 Python 包(Demo:如何安装flask)
2.一个简单的 Demo
如何使用虚拟环境
在介绍使用虚拟环境前,需要提前安装 Python 3.4(原先写的文章有介绍)。
Python 3.4 通过 venv 模块原生支持虚拟环境,命令为 pyvenv。
1.创建一个名字为 venv 虚拟环境
|
|
2.激活名字为: venv 的虚拟环境
|
|
3.激活虚拟环境命令会修改命令行提示符,显示如下:
|
|
4.退出当前虚拟环境
使用命令:deactivate
使用 pip 安装 Python 包
大多数 Python 包都使用 pip 实用工具安装,使用 pyvenv 创建的虚拟环境会自动安装 pip。
1.使用 pip 安装 Flask(其它 Python 包同理)
|
|
一个简单的 Demo
|
|
从 Demo 中学习路由、修饰器、视图函数、请求、响应概念,一步步分析每行代码:
1.from flask import Flask
从 flask 库中导入 Flask 函数,from flask import abort 和 from flask import redirect 同理。
2.app = Flask(__name__)
创建 Flask 对象 app,Flask 类的构造函数只有一个必须指定的参数,即程序主模块或包的名字。在大多数程序中,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)函数
|
|
假定部署程序的服务器域名为 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 文件:
1234 if __name__ == '__main__':print '自己主动执行'else:print '我被别的模块引入'执行下
$ python test.py会输出自己主动执行
直接在命令行中输入python随后输入import test,会输出:我被别的模块引入。
8.app.run(debug=True)
程序实例用 run() 方法启动 Flask 继承的开发 Web 服务器。
服务器启动后,会进入轮询,等待并处理请求。轮询会一直进行,直到程序停止,比如按Ctrl-C键。
debug=True表示启用调试模式。方便我们调试。