Flask请求与响应

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

总结说明

  1. 若指定参数,需要将参数外添加<>,且路由参数名称要与视图函数参数一致

  2. 参数可以指定类型,如:int、float、path,不指定默认为字符串

  3. 路由中的最后的'/'最好还是加上

请求

@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']

猜你喜欢

转载自blog.csdn.net/ding_312/article/details/81349974