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 lambda和Python def区别分析
Nov 30 Python
python集合用法实例分析
May 30 Python
基于使用paramiko执行远程linux主机命令(详解)
Oct 16 Python
Python利用正则表达式实现计算器算法思路解析
Apr 25 Python
深入解析Python小白学习【操作列表】
Mar 23 Python
Python解析命令行读取参数之argparse模块
Jul 26 Python
Python创建数字列表的示例
Nov 28 Python
python脚本实现mp4中的音频提取并保存在原目录
Feb 27 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
May 16 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
Dec 09 Python
python基于tkinter实现gif录屏功能
May 19 Python
Python四款GUI图形界面库介绍
Jun 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程序中的常见漏洞进行攻击
2006/10/09 PHP
php 404错误页面实现代码
2009/06/22 PHP
PHP数组游标实现对数组的各种操作详解
2016/01/26 PHP
解决php-fpm.service not found问题的办法
2017/06/06 PHP
yii框架redis结合php实现秒杀效果(实例代码)
2017/10/26 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
2017/11/20 PHP
PHP一致性hash分布式算法封装类定义与用法示例
2018/08/04 PHP
PHP扩展安装方法步骤解析
2020/11/24 PHP
JavaScript创建一个欢迎cookie弹出窗实现代码
2013/03/15 Javascript
Javascript实现简单二级下拉菜单实例
2014/06/15 Javascript
jQuery实现简单的列表式导航菜单效果代码
2015/08/31 Javascript
基于jquery实现无限级树形菜单
2016/03/22 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
js字符限制(字符截取) 一个中文汉字算两个字符
2017/09/12 Javascript
详解cordova打包成webapp的方法
2017/10/18 Javascript
element ui 表格动态列显示空白bug 修复方法
2018/09/04 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
在Vue 中实现循环渲染多个相同echarts图表
2020/07/20 Javascript
[00:59]DOTA2英雄背景故事——上古巨神
2020/06/28 DOTA
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
使用Python的Django框架结合jQuery实现AJAX购物车页面
2016/04/11 Python
python求最大值最小值方法总结
2019/06/25 Python
python破解bilibili滑动验证码登录功能
2019/09/11 Python
Python进程的通信Queue、Pipe实例分析
2020/03/30 Python
Trench London官方网站:高级风衣和意大利皮夹克
2020/07/11 全球购物
数据库专业英语
2012/11/30 面试题
金融专业求职信
2014/08/05 职场文书
2014年“世界无车日”活动方案
2014/09/21 职场文书
小学教育见习报告
2014/10/31 职场文书
2014年计划生育协会工作总结
2014/11/14 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
工作会议通知
2015/04/15 职场文书
青涩记忆观后感
2015/06/18 职场文书
小学生作文写作技巧100例,非常实用!
2019/07/08 职场文书
Django 实现jwt认证的示例
2021/04/30 Python
MySQL定时备份数据库(全库备份)的实现
2021/09/25 MySQL