Flask请求和响应对象(二)

2023-05-05 16:19:00 浏览数 (1)

响应对象

Flask中的响应对象用于返回给客户端的数据。响应对象可以是字符串、JSON、HTML页面、文件等。我们可以从Flask中导入'response'模块来创建响应对象。响应对象包含的常见方法和属性如下:

  • make_response(content):创建响应对象,其中'content'为响应内容。
  • set_cookie(key, value, **options):设置cookie。
  • delete_cookie(key, **options):删除cookie。
  • headers:响应头字典,包含所有HTTP头信息。
  • status_code:HTTP状态码。
  • content_type:响应类型。

下面是一个使用响应对象返回JSON数据的示例代码:

代码语言:javascript复制
from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/api/users')
def users():
    users = [
        {'id': 1, 'name': 'Alice', 'age': 20},
        {'id': 2, 'name': 'Bob', 'age': 30},
        {'id': 3, 'name': 'Charlie', 'age': 40}
    ]
    return jsonify(users)

if __name__ == '__main__':
    app.run()

在上面的示例中,我们使用'jsonify'函数将Python对象转换为JSON字符串,并使用响应对象返回JSON数据。

使用响应对象返回HTML页面的示例代码如下:

代码语言:javascript复制
from flask import Flask, make_response

app = Flask(__name__)

@app.route('/')
def index():
    html = '''
        <html>
            <head>
                <title>Hello Flask</title>
            </head>
            <body>
                <h1>Hello Flask!</h1>
            </body>
        </html>
    '''
    response = make_response(html)
    response.headers['Content-Type'] = 'text/html'
    return response

if __name__ == '__main__':
    app.run()

在上面的示例中,我们使用'make_response'函数创建响应对象,并将HTML字符串作为响应内容。我们还使用响应对象的'headers'属性设置响应类型为'text/html'。

设置cookie的示例代码如下:

代码语言:javascript复制
from flask import Flask, make_response

app = Flask(__name__)

@app.route('/')
def index():
    response = make_response('Hello Flask!')
    response.set_cookie('username', 'alice')
    return response

if __name__ == '__main__':
    app.run()

在上面的示例中,我们使用响应对象的'set_cookie'方法设置cookie。第一个参数是cookie的键,第二个参数是cookie的值。其他可选参数可以用于设置cookie的属性,例如过期时间、域名、路径等。

删除cookie的示例代码如下:

代码语言:javascript复制
from flask import Flask, make_response

app = Flask(__name__)

@app.route('/')
def index():
    response = make_response('Hello Flask!')
    response.delete_cookie('username')
    return response

if __name__ == '__main__':
    app.run()

在上面的示例中,我们使用响应对象的'delete_cookie'方法删除名为'username'的cookie。

0 人点赞