Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例


Posted in Python onAugust 01, 2019

本文实例讲述了Flask框架重定向,错误显示,Responses响应及Sessions会话操作。分享给大家供大家参考,具体如下:

重定向和错误显示

将用户重定向到另一个端点,使用redirect(), 要提前中止错误请求,请使用abort()函数

from flask import abort, redirect, url_for
@app.route('/')
def index():
  return redirect(url_for('login'))
@app.route('/login')
def login():
  abort(401)
  this_is_never_executed()

默认情况下,会为每个错误代码显示黑白错误页面,如果要自定义错误页面,请使用errorhandler() 装饰器.

Responses

  1. 如果返回了正确类型的响应对象,则直接从视图返回。
  2. 如果是字符串,则使用该数据和默认参数创建响应对象。
  3. 如果返回元组,则元组中的项可以提供额外信息。这样的元组必须是这样的形式,或者至少有一个项必须在元组中。该值将覆盖状态代码,可以是其他标头值的列表或字典。(response, status, headers)或者是(response, headers)

如果要在视图中获取生成的响应对象,可以使用make_response() 函数

假设你有如下视图:

@app.errorhandler(404)
def not_found(error):
  return render_template('error.html'), 404

使用make_response()包含返回表达式,获取响应对象并修改它,然后返回它

@app.errorhandler(404)
def not_found(error):
  resp = make_response(render_template('error.html'), 404)
  resp.headers['X-Something'] = 'A value'
  return resp

Sessions会话追踪

session在cookie的基础上实现的,并以加密方式对cookie进行签名

要使用sessions,必须要设置私钥,以下是简单示例:

from flask import Flask, session, redirect, url_for, escape, request
app = Flask(__name__)
# Set the secret key to some random bytes. Keep this really secret!
app.secret_key = b'_5#y2L"F4Q8z\n\xec]/'
@app.route('/')
def index():
  if 'username' in session:
    return 'Logged in as %s' % escape(session['username'])
  return 'You are not logged in'
@app.route('/login', methods=['GET', 'POST'])
def login():
  if request.method == 'POST':
    session['username'] = request.form['username']
    return redirect(url_for('index'))
  return '''
    <form method="post">
      <p><input type=text name=username>
      <p><input type=submit value=Login>
    </form>
  '''
@app.route('/logout')
def logout():
  # remove the username from the session if it's there
  session.pop('username', None)
  return redirect(url_for('index'))

希望本文所述对大家基于flask框架的Python程序设计有所帮助。

Python 相关文章推荐
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
Nov 18 Python
python如何实现远程控制电脑(结合微信)
Dec 21 Python
Python线性回归实战分析
Feb 01 Python
python中reader的next用法
Jul 24 Python
djang常用查询SQL语句的使用代码
Feb 15 Python
PIL对上传到Django的图片进行处理并保存的实例
Aug 07 Python
Python标准库json模块和pickle模块使用详解
Mar 10 Python
Python面向对象多态实现原理及代码实例
Sep 16 Python
Python的logging模块基本用法
Dec 24 Python
python切片作为占位符使用实例讲解
Feb 17 Python
PyQt5 显示超清高分辨率图片的方法
Apr 11 Python
Python中X[:,0]和X[:,1]的用法
May 10 Python
python对csv文件追加写入列的方法
Aug 01 #Python
Django Aggregation聚合使用方法解析
Aug 01 #Python
Flask教程之重定向与错误处理实例分析
Aug 01 #Python
python gdal安装与简单使用
Aug 01 #Python
Django模型修改及数据迁移实现解析
Aug 01 #Python
Django 大文件下载实现过程解析
Aug 01 #Python
python爬虫刷访问量 2019 7月
Aug 01 #Python
You might like
PHP伪静态Rewrite设置之APACHE篇
2014/07/30 PHP
WordPress中注册菜单与调用菜单的方法详解
2015/12/18 PHP
如何实现iframe(嵌入式帧)的自适应高度
2006/07/26 Javascript
JavaScript 闭包在封装函数时的简单分析
2009/11/28 Javascript
express的中间件cookieParser详解
2014/12/04 Javascript
javascript结合fileReader 实现上传图片
2015/01/30 Javascript
javascript+HTML5的Canvas实现Lab单车动画效果
2015/08/07 Javascript
jquery制作属于自己的select自定义样式
2015/11/23 Javascript
javascript每日必学之运算符
2016/02/16 Javascript
使用JavaScript获取Request中参数的值方法
2016/09/27 Javascript
Vue2实现组件props双向绑定
2016/12/02 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
微信小程序 图片宽高自适应详解
2017/05/11 Javascript
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
在react中使用vuex的示例代码
2018/07/30 Javascript
vue-cli2打包前和打包后的css前缀不一致的问题解决
2018/08/24 Javascript
vue.js实现备忘录demo
2019/06/26 Javascript
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
常用python数据类型转换函数总结
2014/03/11 Python
python编程实现归并排序
2017/04/14 Python
Pycharm学习教程(2) 代码风格
2017/05/02 Python
python 通过字符串调用对象属性或方法的实例讲解
2018/04/21 Python
Django使用中间键实现csrf认证详解
2019/07/22 Python
详解python中index()、find()方法
2019/08/29 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
2020/10/27 Python
如何在 Matplotlib 中更改绘图背景的实现
2020/11/26 Python
HTML5自定义元素播放焦点图动画的实现
2019/09/25 HTML / CSS
供货协议书范本
2014/04/22 职场文书
投标保密承诺书
2014/05/19 职场文书
学校做一个有道德的人活动方案
2014/08/23 职场文书
室内趣味活动方案
2014/08/24 职场文书
高中生综合素质自我评价
2015/03/06 职场文书
高三教师工作总结2015
2015/07/21 职场文书
Vue3.0中Ref与Reactive的区别示例详析
2021/07/07 Vue.js
前端监听websocket消息并实时弹出(实例代码)
2021/11/27 Javascript
python 多态 协议 鸭子类型详解
2021/11/27 Python