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 相关文章推荐
Python 自动安装 Rising 杀毒软件
Apr 24 Python
Python中音频处理库pydub的使用教程
Jun 07 Python
基于Python实现的ID3决策树功能示例
Jan 02 Python
基于Python中单例模式的几种实现方式及优化详解
Jan 09 Python
解决pycharm的Python console不能调试当前程序的问题
Jan 20 Python
Python2与Python3的区别实例总结
Apr 17 Python
django框架自定义模板标签(template tag)操作示例
Jun 24 Python
基于Python中的yield表达式介绍
Nov 19 Python
flask 实现上传图片并缩放作为头像的例子
Jan 09 Python
如何基于python实现不邻接植花
May 01 Python
tensorflow模型转ncnn的操作方式
May 25 Python
python中numpy.empty()函数实例讲解
Feb 05 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 实用代码收集
2010/01/22 PHP
PHP下打开URL地址的几种方法小结
2010/05/16 PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
2011/11/10 PHP
PHP连接数据库实现注册页面的增删改查操作
2016/03/27 PHP
PHP设计模式之模板方法模式定义与用法详解
2018/04/02 PHP
实例讲解PHP表单验证功能
2019/02/15 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
2020/04/07 PHP
JS 操作符整理[推荐收藏]
2011/11/15 Javascript
将list转换为json失败的原因
2013/12/17 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
基于jquery实现图片相关操作(重绘、获取尺寸、调整大小、缩放)
2015/12/25 Javascript
jQuery实现的模拟弹出窗口功能示例
2016/11/24 Javascript
Vue2实现组件props双向绑定
2016/12/02 Javascript
Swiper实现轮播图效果
2017/07/03 Javascript
对vue中v-on绑定自定事件的实例讲解
2018/09/06 Javascript
Vue 实现列表动态添加和删除的两种方法小结
2018/09/07 Javascript
Vue.js组件间通信方式总结【推荐】
2018/11/23 Javascript
JavaScript简单实现动态改变HTML内容的方法示例
2018/12/25 Javascript
JavaScript实现简易聊天对话框(加滚动条)
2020/02/10 Javascript
js实现点赞按钮功能的实例代码
2020/03/06 Javascript
创建nuxt.js项目流程图解
2020/03/13 Javascript
微信小程序实现选择地址省市区三级联动
2020/06/21 Javascript
Element DateTimePicker日期时间选择器的使用示例
2020/07/27 Javascript
[05:00]第二届DOTA2亚洲邀请赛主赛事第三天比赛集锦.mp4
2017/04/04 DOTA
Python实现感知机(PLA)算法
2017/12/20 Python
在Django中URL正则表达式匹配的方法
2018/12/20 Python
Python引入多个模块及包的概念过程解析
2020/09/21 Python
Madewell美德威尔美国官网:美国休闲服饰品牌
2016/11/25 全球购物
加拿大领先的时尚和体育零售商:Sporting Life
2019/12/15 全球购物
教师找工作推荐信
2013/11/23 职场文书
聚美优品广告词改编
2014/03/14 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
2015年学校政教工作总结
2015/07/20 职场文书
队名及霸气口号大全
2015/12/25 职场文书
多表查询、事务、DCL
2021/04/05 MySQL
分位数回归模型quantile regeression应用详解及示例教程
2021/11/02 Python