Flask框架从入门到精通之Response(七)

栏目: Python · 发布时间: 4年前

内容简介:视图在接收HttpRequest并处理后,必须返回HttpResponse对象。目前视图函数只是返回字符串,之后 Flask 将字符串转换为我们新建一个名为我们在后台用

视图在接收HttpRequest并处理后,必须返回HttpResponse对象。目前视图函数只是返回字符串,之后 Flask 将字符串转换为 响应对象 。如果你要 显式 地转换,你可以使用 make_response() 函数然后再进行修改。

二、HttpResponse

我们新建一个名为 cookie.html 的模板,简单写上下面代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<h1>设置cookie</h1>

</body>
</html>
复制代码

我们在后台用 make_response() 返回HttpResponse:

from flask import Flask, render_template, make_response

app = Flask(__name__)


@app.route('/setcookie', methods=['GET', 'POST'])  # 支持get、post请求
def setcookie():  # 视图函数
    resp = make_response(render_template('cookie.html'))  # 显式转换成HttpResponse对象
   
    return resp


app.config['DEBUG'] = True

if __name__ == '__main__':
    # 0.0.0.0代表任何能代表这台机器的地址都可以访问
    app.run(host='0.0.0.0', port=5000)  # 运行程序

复制代码

我们访问浏览器试一下:

Flask框架从入门到精通之Response(七)

三、Cookie

我们都知道 HTTP 协议是无状态的请求协议,用户这次访问和下一次访问都是新的请求,它们之间是没任何关系的。但是我们需要知道上一次访问用户做了什么操作,就需要用到cookie。cookie是网站以键值对格式存储在浏览器中的一段纯文本信息,用于实现用户跟踪。cookie是基于域安全的 我们通过 set_cookie 方法设置cookie

from flask import Flask, render_template, make_response

app = Flask(__name__)


@app.route('/setcookie', methods=['GET', 'POST'])  # 支持get、post请求
def setcookie():  # 视图函数
    resp = make_response(render_template('cookie.html'))  # 显式转换成HttpResponse对象
    resp.set_cookie('nickname', 'laowang')  # 设置cookie
    resp.set_cookie('age', "12")  # 设置cookie
    return resp


app.config['DEBUG'] = True

if __name__ == '__main__':
    # 0.0.0.0代表任何能代表这台机器的地址都可以访问
    app.run(host='0.0.0.0', port=5000)  # 运行程序

复制代码

我们访问浏览器试一下:

Flask框架从入门到精通之Response(七)

我们已经浏览器写入了如下信息,当我们下一次请求的时候,会自动把本地的cookie传给后台。

我们通过HttpReqeust对象把我们浏览器的cookies取到,我们新写一个视图把cookie取到:

@app.route('/getcookie', methods=['GET', 'POST'])  # 支持get、post请求
def getcookie():  # 视图函数
    nickname = request.cookies.get('nickname')
    age = request.cookies.get('age')
    return 'nickname=%s  age=%s' % (nickname, age)
复制代码

我们访问浏览器试一下:

Flask框架从入门到精通之Response(七)

我们已经在后台把浏览器本地的cookie取到了。

过期时间:

cookie是有过期时间的,当我们设置cookie的时候可以直接给cookie设置过期时间,有如下几种设置方法:

  • max_age是一个整数,表示在指定秒数后过期。
  • expires是一个datetime或timedelta对象,会话将在这个指定的日期/时间过期。
  • max_age与expires二选一。
  • 如果不指定过期时间,在关闭浏览器时cookie会过期。
from flask import Flask, request, render_template, make_response
from datetime import datetime

app = Flask(__name__)


@app.route('/setcookie', methods=['GET', 'POST'])  # 支持get、post请求
def setcookie():  # 视图函数
    resp = make_response(render_template('cookie.html'))  # 显式转换成HttpResponse对象
    resp.set_cookie('nickname', 'laowang', max_age=3600)  # 设置cookie 3600秒过期
    resp.set_cookie('age', "12", expires=datetime(2019, 3, 18))  # 设置cookie,2019年3月18后过期
    return resp


@app.route('/getcookie', methods=['GET', 'POST'])  # 支持get、post请求
def getcookie():  # 视图函数
    nickname = request.cookies.get('nickname')
    age = request.cookies.get('age')
    return 'nickname=%s  age=%s' % (nickname, age)


app.config['DEBUG'] = True

if __name__ == '__main__':
    # 0.0.0.0代表任何能代表这台机器的地址都可以访问
    app.run(host='0.0.0.0', port=5000)  # 运行程序

复制代码

我们访问浏览器试一下:

Flask框架从入门到精通之Response(七)

我们可以清楚地看到,一个cookie是一小时后过期,一个则是2019年3月18后过期。

删除cookie:

我们可以通过 delete_cookie 方法删除cookie

@app.route('/delcookie', methods=['GET', 'POST'])  # 支持get、post请求
def delcookie():  # 视图函数
    res = make_response('删除cookie')
    res.delete_cookie('nickname')  # 删除的cookie的本质就是改变cookie的过期时间
    return res
复制代码

欢迎关注我的公众号:

Flask框架从入门到精通之Response(七)

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

点石成金

点石成金

[美] 史蒂夫·克鲁克 / De Dream' / 机械工业出版社 / 2006-8 / 39.00元

可用性设计是Web设计中最重要也是最困难的一项任务。《点石成金》的作者根据自己多年从业的经验,剖析用户的心理,在用户使用的模式、为浏览进行设计、导航设计、主页布局、可用性测试等方面提出了许多独特的观点,并给出了大量简单、易行的可用性设计的建议。这本书短小精悍,语言轻松诙谐,书中穿插大量色彩丰富的屏幕截图、趣味丛生的卡通插图以及包含大量信息的图表,使枯燥的设计原理变得平易近人。 此书适合从事W......一起来看看 《点石成金》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换