Flask URL 变量规则
通过把 URL 的一部分标记为 <converter:variable_name>
就可以在 URL 中添加变量。标记的 部分会作为关键字参数传递给函数。
转换器类型:
转换器 | 说明 |
---|---|
string |
(缺省值) 接受任何不包含斜杠的文本 |
int |
接受正整数 |
float |
接受正浮点数 |
path |
类似 string ,但可以包含斜杠 |
uuid |
接受 UUID 字符串 |
请求与响应的相关函数
url_for()
url_for()
函数用于构建指定函数的 URL。它把函数名称作为第一个 参数。它可以接受任意个关键字参数,每个关键字参数对应 URL 中的变量。未知变量将添加到 URL 中作为查询参数。
redirect() / abort()
使用 redirect()
函数可以重定向。使用 abort()
可以更早退出请求,并返回错误代码
request 全局对象与 Flask 线程对象
在 Flask 中由全局对象 request
来提供请求信息。
设想现在处于处理线程的环境中。一个请求进来了,服务器决定生成一个新线程(或者叫其他什么名称的东西,这个下层的东西能够处理包括线程在内的并发系统)。当 Flask 开始其内部请求处理时会把当前线程作为活动环境,并把当前应用和 WSGI 环境绑定到 这个环境(线程)。它以一种聪明的方式使得一个应用可以在不中断的情况下调用另一个 应用。
某些对象在 Flask 中是全局对象,但不是通常意义下的全局对象。这些对象实际上是特定环境下本地对象的代理。
Flask 内部使用本地线程对象,这样就不必在同一 个请求中因为线程安全的原因,而函数之间传递对象。这种实现方法是非常便利的, 但是当用于依赖注入或者当尝试重用使用了与请求挂钩的值的代码时,需要一个合法的环境。 Flask 项目对于本地线程是直言不讳的,没有一点隐藏的意思,并且在使用本地线程时在代码中进行了标注和说明。
request 请求对象
属性 | 操作 |
---|---|
method | 可以操作当前请求方法 |
form | 处理表单数据 |
args | 处理 URL 参数,例如:?key=value |
files | 访问上传的文件,每个上传的文件都储存在这个字典型属性中。这个属性基本和标准 Python file 对象一样,另外多出一个把上传文件保存到服务器的文件系统中的 save() 方法。 |
cookies | 包含了客户端传输的所有 cookies 的字典 |
Flask 的装饰器
装饰器 | 用途 |
---|---|
@app.route() | 访问路由 |
@app.errorhandler | 根据 HTTP 状态码,定制出错页面 |