vlambda博客
学习文章列表

Flask教程2-重定向、Cookie机制

一、重定向

在Web中,大家经常需要进行重定向,比如,当某个用户在没有经过认证的情况下访问需要登陆才能访问的资源,程序通常会重定向到登陆页面。Flask提供redirect()函数来生成重定向响应,重定向的目标URL作为第一个参数。代码示例如下:

from flask import Flask,redirect,url_for@app.route('/ww')def ww():   return redirect(url_for('hello'))#重定向到/hello页面@app.route('/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

Flask教程2-重定向、Cookie机制

此时打开页面控制台,就可以看到,多了一个名为name的Cookie:

Flask教程2-重定向、Cookie机制

当浏览器保存了服务器端设置的Cookie后,浏览器再次发送到该服务器的请求会自动携带设置的Cookie信息,Cookie的内容存储在请求首部的Cookie字段中。在Flask中,Cookie可以通过请求对象的cookies属性获取,如下列代码所示:

from flask import Flask, request@app.route('/')@app.route('/hello')def hello():  name = request.args.get('name')  if name is None:   name = request.cookies.get('name')  return '<h1>Hello,%s</h1>'%name

运行结果如下:

点个在看吧~