六、URL重定向(HTTP协议本身的功能)
6.1 、重定向返回302状态码,在响应头里面通过指定 Location字段来告诉浏览器,跳转地址;
举例一:重定向到指定的路由与函数:
@app.route('/red')
def red():
return redirect(url_for('要跳转的函数名'))
或
return redirect('/')
#以上这个直接跳转到指定的路由
举例二:采用javascript代码进行响应重定向:
注:采用包含代码的方式
@app.route('/red')
def red():
html = ""
return html
举例三:采用javascript代码进行响应重定向,并延时一定时间响应:
注:采用包含代码的方式
@app.route('/red')
def red():
html = ""
return html
七、Session和Cookie
1.要处理session,则必须为app实例设置SECRET_KEY配置参数,配置随机数生成器(Session ID),再使用session函数进行操作。
flask默认参数配置:https://www.bbsmax.com/A/B0zqKyW85v/
https://www.cnblogs.com/hchan/p/10998626.html
在使用Session前必须配置SECRET_KEY
举例:
from flask import Flask, render_template, redirect, url_for import os #static_url_plan表示静态资源的路径,static_folder表示指定静态目录;templates表示指定模板目录 app = Flask(__name__, static_url_path='/', static_folder='resource', template_folder='template') #生成随机着种子,用于产生session ID app.config['SECRET_KEY'] = os.urandom(24)
注:Session是存储在后台内容中,可以直接在一个函数中获取;
@app.route('/sess') def sess(): #设置Session的内容:用户名、呢称、角色权限 session['username'] = 'woxy' session['nickname'] = '强哥' session['role'] = 'editor' return 'Done'
@app.route('/sc/read')def scread():
#读取Session return '你当前的呢称(保存在Session内的)为:%s' %session.get('username')
2.要处理Cookie,需要使用response对象来往http的响应中写入满足http协议的Cookie要求的信息(key,value,Age)=(关键值 ,变量,生命周期)
参考response的属性: https://www.cnblogs.com/zhuchunyu/p/10466509.html
注:Cookie 获取需要在前面一个请示后,下个请示需要带Cookie的内容才能获取(即第一个Cookie设置的函数需要将cookie发送到浏览器,浏览器会自己保存cookie),所以不能在一个函数内直接获取,需要在下一个函数请示时带入Cookie的内容才行。。如下有举例
# Cookies的设置 @app.route('/cookie') def cookie(): #构建一个Cookie的对象 response = make_response('这个Cookie操作') #设置Cookie的内容 response.set_cookie('username', 'qiang', max_age=30) response.set_cookie('password', '123456', max_age=30) return response
@app.route('/sc/read') def scread(): #读取Session return '你当前的呢称(保存在Cookie内的)为:%s' % request.cookies.get('username')