1.变量或对象
变量/对象 |
上下文 |
说明 |
current_app | 程序上下文 | 当前运行的程序实例 |
g(global的简写) | 程序上下文 | 处理请求时用作临时存储的对象,专门用来保存用户数据,每次请求都会重置,g对象在一次请求中的所有代码中都是可以使用的。 |
request | 请求上下文 | 请求对象,保存了客户端的所有的HTTP请求信息 |
session | 请求上下文 | 用户会话,用于保存需要'记住'的会话信息 |
2.请求钩子函数
from flask imort Flask, g
app = Flask(__name__)
@app.route('/test/')
def test():
return g.string
#钩子函数
#第一次请求, 一次性有效
@app.before_first_request
def bf_first_request():
g.string = 'before_first_request'
#每次请求前
@app.before_request
def bf_request():
g.string = 'before_request'
函数 |
描述 |
---|---|
before_first_request | 第一次请求之前 |
before_request | 每次请求之前 |
after_request | 没有异常情况下,每次请求之后 |
teardown_request | 每次请求之后,无论是否有异常,常用于关闭数据库连接 |
3.视图函数
带参数的视图函数如下
#带参数的路由,不指定参数类型,默认是字符串
@app.route('/hello/<username>')
def hello(username):
return 'hello %s !' % username
#参数可以指定类型: int float path (/不再是分隔符)
@app.route('/user/<int:uid>/')
def user(uid):
return '%d号用户详细信息' % uid
@app.route('/path/<path:p>/')
def path(p):
return p
总结说明
-
若指定参数,需要将参数外添加<>,且路由参数名称要与视图函数参数一致
-
参数可以指定类型,如:int、float、path,不指定默认为字符串
-
路由中的最后的'/'最好还是加上
请求
@app.route('/request/')
def req():
# 完整的请求URL
# return request.url
# 基本路由信息,不包含get参数
#return request.base_url
# 只包含主机和端口
#return request.host_url
# 只包含装饰器中的路由地址
#return request.path
# 请求方法类型
#return request.method
# 客户端IP地址
#return request.remote_addr
# 所有的请求参数(GET)
#return request.args['page']
# 返回一个列表
# returen str(request.args.getlist('username'))
# 请求头信息
return request.headers['User-Agent']