第一: 什么是response 和cookie
falsk 是基于Browser/Serve端开发, S端是服务器,B端是就是浏览器的前端。服务器如何响应request 呢,
其中的关键因素就是response.
所有返回前台的内容其实都应该是
Response
的对象或者其子类,我们看到如果返回的是字符串直接可以写成return u'字符串内容'
的形式,但是其实这个字符串也是经过了Response
包装的:return Response(u'字符串').
我们有时候需要返回数组、字典之类的数据,但是数组或者字典这些数据是不能直接return
的。这个时候怎么办呢?答案就是你必须将数组或字典转换成json
后再返回(这就是为什么我们做接口测试的时候传参前用json.loads()
将字符串转换成字典的原因了),因为json
就是一个字符串。
make_response
它可以传递三个参数 第一个还是一个字符串,第二个传状态码,第三个传请求头.
cookie 是存储数据的一种方式,
什么是cookie?如果单单从数据结构的角度来说,它可以被理解成用来保存数据的一个dictionary,由一组组键值对组成.如果从作用上来说,我们知道Http协议是一种无状态的协议.什么叫无状态呢,就是本次的客户端请求不会保留上一次客户端请求的状态,简单点说就是这样会要求我们每次在浏览器中点开一个网站的链接都会输一次账户和密码.cookie就是用来解决这个问题的.
为了解决上述问题,我们第一次登录web服务器,服务端就会在它的响应中的Set-Cookie字段中发送一些键值对,这就包括一个Session ID以及其他一些信息(也包括我们自定义的cookie中的键值对),并告诉客户端在本地缓存这个cookie.然后客户端以后进行链接时每次都会发送这个Session ID,服务器一看是哪个Session ID就知道是哪个客户端发起的链接了,就不会要求我们再次输账户和密码验证了.
我们在flask中自定义cookie,实际上就是在响应Response的Set-Cookie字段中增加我们自定义的键值对.而获取cookie,就是通过请求Request中通过键获取其对应的值.
第二:设置cookie 和response
# -*- coding: utf-8 -*-
#!/usr/bin/python
# coding: utf-8
from flask import Flask,request,Response,make_response,render_template
app = Flask(__name__)
@app.route('/set_cookie')
def set_cookie():
response=make_response('Hello World')
print(response)
response.set_cookie('Name','Hyman')
return response
@app.route('/get_cookie')
def get_cookie():
print("666666666666666")
name=request.cookies.get('Name')
print("name:",name)
return name
@app.route('/get_template')
def get_template():
return render_template('test.html')
@app.route('/del_cookie')
def del_cookie():
response=make_response('delete cookie')
response.set_cookie('Name','',expires=0)
return response
@app.route('/del_cookie2')
def del_cookie2():
response=make_response('delete cookie2')
response.delete_cookie('Name')
return response
if __name__ == '__main__':
app.run()
第三:个人心得:
cookie 是存储数据的一种方式,而response 是一种反馈。因此反馈可以设置cookie ,也可以删掉cookie。
第四:返回一个页面则需要
render_template()