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下如何让web元素的生成更简单的分析
Jul 17 Python
pycharm 使用心得(三)Hello world!
Jun 05 Python
Python开发最牛逼的IDE——pycharm
Aug 01 Python
python3中os.path模块下常用的用法总结【推荐】
Sep 16 Python
python编程使用协程并发的优缺点
Sep 20 Python
python3学生名片管理v2.0版
Nov 29 Python
解决Django连接db遇到的问题
Aug 29 Python
python程序 线程队列queue使用方法解析
Sep 23 Python
Python unittest工作原理和使用过程解析
Feb 24 Python
如何基于Python按行合并两个txt
Nov 03 Python
matplotlib之pyplot模块实现添加子图subplot的使用
Apr 25 Python
Python+OpenCV实现在图像上绘制矩形
Mar 21 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逐行读取txt文件写入数组的方法
2015/07/02 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
php快速导入大量数据的实例方法
2019/09/23 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)
2012/04/07 Javascript
jQuery遍历Table应用示例
2014/04/09 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
2015/06/10 Javascript
JS+CSS简单树形菜单实现方法
2015/09/12 Javascript
JS实现字符串转日期并比较大小实例分析
2015/12/09 Javascript
[原创]jQuery常用的4种加载方式分析
2016/07/25 Javascript
基于WebUploader的文件上传js插件
2016/08/19 Javascript
Vue实现双向数据绑定
2017/05/03 Javascript
详解nodeJS之路径PATH模块
2017/05/31 NodeJs
jQuery remove()过滤被删除的元素(推荐)
2017/07/18 jQuery
JavaScript模拟实现封装的三种方式及写法区别
2017/10/27 Javascript
浅析JavaScript中的特殊数据类型
2017/12/15 Javascript
利用jqprint插件打印页面内容的实现方法
2018/01/09 Javascript
video.js 一个页面同时播放多个视频的实例代码
2018/11/27 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
2019/04/11 Javascript
vue实现在线学生录入系统
2020/05/30 Javascript
Vuex实现购物车小功能
2020/08/17 Javascript
Python实现从脚本里运行scrapy的方法
2015/04/07 Python
python连接字符串的方法小结
2015/07/13 Python
详解10个可以快速用Python进行数据分析的小技巧
2019/06/24 Python
Python3环境安装Scrapy爬虫框架过程及常见错误
2019/07/12 Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
2019/12/09 Python
Omio法国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/13 全球购物
linux面试题参考答案(7)
2012/10/29 面试题
夜大毕业生自我评价分享
2013/11/10 职场文书
体育比赛口号
2014/06/09 职场文书
我们的节日元宵节活动总结
2015/02/06 职场文书
撤诉状格式范本
2015/05/19 职场文书
公安忠诚教育心得体会
2016/01/23 职场文书
2016年村党支部公开承诺书
2016/03/24 职场文书
nginx搭建图片服务器的过程详解(root和alias的区别)
2021/03/31 Servers
PHP实现考试倒计时功能代码
2021/04/16 PHP