内容简介:视图在接收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) # 运行程序
复制代码
我们访问浏览器试一下:
三、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) # 运行程序
复制代码
我们访问浏览器试一下:
我们已经浏览器写入了如下信息,当我们下一次请求的时候,会自动把本地的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)
复制代码
我们访问浏览器试一下:
我们已经在后台把浏览器本地的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) # 运行程序
复制代码
我们访问浏览器试一下:
我们可以清楚地看到,一个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
复制代码
欢迎关注我的公众号:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Genesis框架从入门到精通(7): 框架的过滤器
- Genesis框架从入门到精通(10): 样式函数
- Flask框架从入门到精通之扩展脚本(十五)
- Flask框架从入门到精通之模型查询(十三)
- Flask框架从入门到精通之Request(六)
- Flask框架从入门到精通之异常处理(十)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Head First Rails
David Griffiths / O'Reilly Media / 2008-12-30 / USD 49.99
Figure its about time that you hop on the Ruby on Rails bandwagon? You've heard that it'll increase your productivity exponentially, and allow you to created full fledged web applications with minimal......一起来看看 《Head First Rails》 这本书的介绍吧!