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

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

内容简介:视图在接收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(七)

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

查看所有标签

猜你喜欢:

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

Haskell

Haskell

Simon Thompson / Addison-Wesley / 1999-3-16 / GBP 40.99

The second edition of Haskell: The Craft of Functional Programming is essential reading for beginners to functional programming and newcomers to the Haskell programming language. The emphasis is on th......一起来看看 《Haskell》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

SHA 加密
SHA 加密

SHA 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试