¶flask初探
一个最小的应用:
1 | # app.py |
上面的例子中index()函数注册为应用根地址的处理程序。使用app.route()
装饰器注册视图函数是首选方法,但不是唯一的方法。Flask还支持一种更传统的方式:使用app.add_url_rule()
方法。这个方法最简单的形式接受3个参数:URL、端点名和视图函数。下述示例使用app.add url rule()方法注册index()函数,其作用与前例相同:
1 | def hello_world(): |
¶启动项目
一个完成的应用应该包括一个应用实例、一个路由和一个视图函数,此时运行以上的程序就可以完成一个小型的网页请求:
1 | export FLASK_APP=app.py |
命令解释:
-
export FLASK_APP=hello.py :设置环境变量,用于指定运行的应用文件,若没有设置,则默认会在项目根目录下找名为
wsgi.py
或者app.py
的文件进行启动,否则会报异常。 -
flask run :运行项目
此时访问默认路径http://127.0.0.1:5000/
即可进行访问,和Django类似,若想被外部服务器、特定的端口访问,可以使用flask run --host=0.0.0.0 --port=5050
,此时外部就可以进行访问。
处理通过 flask run
命令的方式启动项目之外,还可以通过python脚本的方式启动项目
1 | # 以python脚本方式启动项目 |
1 | python app.py |
该方式在单元测试中用较多。
¶调试模式
通过设置环境变量 export FLASK_ENV=development
启动调试模式,在该模式下,每次修改代码服务器都会自动重启,并且当应用出错的时候,还会提供调试工具。和Django一样,调试模式不应该应用在生产环境中。
¶路由
通过使用装饰器 @route()
或者 app.add_url_rule()
将视图函数绑定到URL中,可以在URL中添加变量,实现动态路由,除了添加变量之外,还可以指定变量的类型。
类型 | 解释 |
---|---|
string |
(缺省值) 接受任何不包含斜杠的文本 |
int |
接受正整数 |
float |
接受正浮点数 |
path |
类似 string ,但可以包含斜杠 |
uuid |
接受 UUID 字符串(通用唯一识别码) |
path演示:
1 | from cgi import escape |
uuid演示: UUID是由一组32位数的16进制数字所构成,以连字号分隔的五组来显示,形式为 8-4-4-4-12,总共有 36个字符(即三十二个英数字母和四个连字号)
1 |
|
¶关于URL后是否添加 / 的问题
在访问尾部有斜杠的url的时候,若是填写url时没有添加/,则此次的访问会自动重定向到尾部含有斜杠的路径中,所以在访问尾部有斜杠的url的时候,无论手动添加斜杠与否,最终都会访问有斜杠的路径。
在访问尾部没有斜杠的url的时候,要是手动在末尾添加了斜杠,则得到404错误。