Flask教程2-重定向、Cookie机制
一、重定向
在Web中,大家经常需要进行重定向,比如,当某个用户在没有经过认证的情况下访问需要登陆才能访问的资源,程序通常会重定向到登陆页面。Flask提供redirect()函数来生成重定向响应,重定向的目标URL作为第一个参数。代码示例如下:
from flask import Flask,redirect,url_for
def ww():
return redirect(url_for('hello'))#重定向到/hello页面
def hello():
return 'redirect'
运行结果如下:
在浏览器输入http://localhost:5000/ww,结果自动跳转到http://localhost:5000/hello,并在页面显示:redirect。
二、Cookie
Flask中如果想要在响应中添加一个Cookie,最方便的方法是使用Response类提供的set_cookie()方法。但在此之前,大家需要首先使用make_response()方法手动生成一个响应对象,传入响应主体作为参数。
如下面代码所示:
from flask import Flask,make_response
@app.route('/set/<name>')
def set_cookie(name):
response = make_response(redirect(url_for('hello')))
response.set_cookie('name',name)
return response
@app.route('/hello')
def hello():
return 'Cookie'
在上述Flask代码中,在这个make_response()函数里,传入的是redirect()函数生成的重定向响应。接下来set_cookie()函数用于创建Cookie,大家查看浏览器中的Cookie,就会看到多了一块叫做name的Cookie,其值为我们设置的'ww'。因为过期时间使用默认值,所以会在浏览会话结束时,即关闭浏览器时过期。
大家可以测试一下,在浏览器输入http://localhost:5000/set/ww,会自动跳转到http://localhost:5000/hello,并在页面显示:Cookie。
此时打开页面控制台,就可以看到,多了一个名为name的Cookie:
当浏览器保存了服务器端设置的Cookie后,浏览器再次发送到该服务器的请求会自动携带设置的Cookie信息,Cookie的内容存储在请求首部的Cookie字段中。在Flask中,Cookie可以通过请求对象的cookies属性获取,如下列代码所示:
from flask import Flask, request
def hello():
name = request.args.get('name')
if name is None:
name = request.cookies.get('name')
return '<h1>Hello,%s</h1>'%name
运行结果如下:
点个在看吧~