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开启多个子进程并行运行的方法
Apr 18 Python
Python编程中使用Pillow来处理图像的基础教程
Nov 20 Python
python 线程的暂停, 恢复, 退出详解及实例
Dec 06 Python
Python使用pyshp库读取shapefile信息的方法
Dec 29 Python
django最快程序开发流程详解
Jul 19 Python
python 模拟创建seafile 目录操作示例
Sep 26 Python
flask框架json数据的拿取和返回操作示例
Nov 28 Python
Django框架中间件定义与使用方法案例分析
Nov 28 Python
Python 中如何实现参数化测试的方法示例
Dec 10 Python
Python通过4种方式实现进程数据通信
Mar 12 Python
Numpy 理解ndarray对象的示例代码
Apr 03 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
May 22 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下载文件名中解决乱码的问题
2013/06/20 PHP
WordPress的主题编写中获取头部模板和底部模板
2015/12/28 PHP
php实现word转html的方法
2016/01/22 PHP
Javascript 的addEventListener()及attachEvent()区别分析
2009/05/21 Javascript
获取HTML DOM节点元素的方法的总结
2009/08/21 Javascript
javascript处理table表格的代码
2010/12/06 Javascript
JS使用for循环遍历Table的所有单元格内容
2014/08/21 Javascript
setTimeout()递归调用不加引号出错的解决方法
2014/09/05 Javascript
推荐10个2014年最佳的jQuery视频插件
2014/11/12 Javascript
javascript中函数作为参数调用的方法
2015/02/09 Javascript
JS模拟键盘打字效果的方法
2015/08/05 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
2015/10/09 Javascript
深入浅析同源策略和跨域访问
2015/11/26 Javascript
jQuery实现三级联动效果
2017/03/02 Javascript
解决html input验证只能输入数字,不能输入其他的问题
2017/07/21 Javascript
vue-lazyload使用总结(推荐)
2018/11/01 Javascript
详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)
2018/11/12 Javascript
详解easyui 切换主题皮肤
2019/04/04 Javascript
javascript实现弹幕墙效果
2019/11/28 Javascript
NodeJS多种创建WebSocket监听的方式(三种)
2020/06/04 NodeJs
浅谈vue.watch的触发条件是什么
2020/11/07 Javascript
讲解Python中的标识运算符
2015/05/14 Python
Python实现提取谷歌音乐搜索结果的方法
2015/07/10 Python
Python数据结构与算法之字典树实现方法示例
2017/12/13 Python
Python实现识别手写数字大纲
2018/01/29 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
python实现贪吃蛇游戏源码
2020/03/21 Python
tensorflow使用CNN分析mnist手写体数字数据集
2020/06/17 Python
使用anaconda安装pytorch的实现步骤
2020/09/03 Python
Theflamel意大利:女士奢华服装、鞋子和配件
2020/01/11 全球购物
中国入世承诺
2014/04/01 职场文书
公司门卫岗位职责范本
2014/07/08 职场文书
先进党组织事迹材料
2014/12/26 职场文书
python图像处理基本操作总结(PIL库、Matplotlib及Numpy)
2021/06/08 Python
Oracle 触发器trigger使用案例
2022/02/24 Oracle
分享3个非常实用的 Python 模块
2022/03/03 Python