Flask框架学习笔记之消息提示与异常处理操作详解


Posted in Python onAugust 15, 2019

本文实例讲述了Flask框架学习笔记之消息提示与异常处理操作。分享给大家供大家参考,具体如下:

flask通过flash方法来显示提示消息:

from flask import Flask, flash, render_template, request, abort

app = Flask(__name__)
app.secret_key = '520'

@app.route('/')
def index():
  flash("Hello loli")
  return render_template("flash.html")

flash模板:flask开放了get_flashed_messages函数给模板使用,用来得到视图函数中的flash里的字符串(消息)。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<h1>Hello Login</h1>
<h2>{{ get_flashed_messages()[0] }}</h2>
</body>
</html>

这里制作一个简单的表单模拟登陆界面提示:使用request方法得到输入表单中的数据。

@app.route('/login', methods=['POST'])
def login():
  # 获取表单
  form = request.form
  # 获取表单数据
  username = form.get('username')
  password = form.get('password')
  # 若不存在username则flash(xxx)
  if not username:
    flash('Please input username')
    return render_template("flash.html")
  if not password:
    flash('Please input password')
    return render_template("flash.html")

  if username == "loli" and password == "520":
    flash("Login success")
    return render_template("flash.html")
  else:
    flash("username or password wrong")
    return render_template('flash.html')

表单模板:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<h1>Hello Login</h1>

<form action="/login" method="post">
  <input type="text" name="username">
  <input type="password" name="password">
  <input type="submit" value="Submit">
</form>

<h2>{{ get_flashed_messages()[0] }}</h2>

</body>
</html>

Flask框架学习笔记之消息提示与异常处理操作详解

未输入任何数据提示输入username

Flask框架学习笔记之消息提示与异常处理操作详解

未输入密码显示的flash提示消息。

Flask框架学习笔记之消息提示与异常处理操作详解

用户名和密码不符时。

Flask框架学习笔记之消息提示与异常处理操作详解

登陆成功界面。

flask同样可以自己设置404等错误界面:flask提供了errorhandler修饰器来设置自己的错误界面。

@app.errorhandler(404)
def not_found(e):
  return render_template("404.html")

自己设置的简单404错误模板:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <h1>404 页面不存在</h1>
  <h2>Sorry</h2>
</body>
</html>

Flask框架学习笔记之消息提示与异常处理操作详解

也可以在正常的界面发生404错误时转到这个模板装饰:用flask import abort方法来引起一个404错误. 只要user_id不为520则触发404页面。

@app.route('/users/<user_id>')
def users(user_id):
  if int(user_id) == 520:
    return render_template("user.html")
  else:
    abort(404)

user模板:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <h1>Loli </h1>
</body>
</html>

源码:

#-*- coding:utf-8 -*-
from flask import Flask, flash, render_template, request, abort

app = Flask(__name__)
app.secret_key = '520'

@app.route('/')
def index():
  flash("Hello loli")
  return render_template("flash.html")

@app.route('/login', methods=['POST'])
def login():
  # 获取表单
  form = request.form
  # 获取表单数据
  username = form.get('username')
  password = form.get('password')
  # 若不存在username则flash(xxx)
  if not username:
    flash('Please input username')
    return render_template("flash.html")
  if not password:
    flash('Please input password')
    return render_template("flash.html")

  if username == "loli" and password == "520":
    flash("Login success")
    return render_template("flash.html")
  else:
    flash("username or password wrong")
    return render_template('flash.html')

@app.errorhandler(404)
def not_found(e):
  return render_template("404.html")

@app.route('/users/<user_id>')
def users(user_id):
  if int(user_id) == 520:
    return render_template("user.html")
  else:
    abort(404)

if __name__ == '__main__':
  app.run()

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

Python 相关文章推荐
Python工程师面试题 与Python Web相关
Jan 14 Python
django之session与分页(实例讲解)
Nov 13 Python
Python元字符的用法实例解析
Jan 17 Python
Numpy数组的保存与读取方法
Apr 04 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
May 26 Python
Python面向对象之反射/自省机制实例分析
Aug 24 Python
在python中实现同行输入/接收多个数据的示例
Jul 20 Python
关于阿里云oss获取sts凭证 app直传 python的实例
Aug 20 Python
python如何把字符串类型list转换成list
Feb 18 Python
django models里数据表插入数据id自增操作
Jul 15 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
Aug 17 Python
Python标准库pathlib操作目录和文件
Nov 20 Python
python打造爬虫代理池过程解析
Aug 15 #Python
使用selenium和pyquery爬取京东商品列表过程解析
Aug 15 #Python
如何爬取通过ajax加载数据的网站
Aug 15 #Python
Python K最近邻从原理到实现的方法
Aug 15 #Python
Python数据可视化 pyecharts实现各种统计图表过程详解
Aug 15 #Python
浅谈Python 敏感词过滤的实现
Aug 15 #Python
pycharm创建scrapy项目教程及遇到的坑解析
Aug 15 #Python
You might like
Terran兵种介绍
2020/03/14 星际争霸
PHP set_time_limit(0)长连接的实现分析
2010/03/02 PHP
php is_writable判断文件是否可写实例代码
2016/10/13 PHP
PHP基于接口技术实现简单的多态应用完整实例
2017/04/26 PHP
ThinkPHP实现分页功能
2017/04/28 PHP
PHP如何搭建百度Ueditor富文本编辑器
2018/09/21 PHP
javascritp实现input输入框相关限制用法
2007/06/29 Javascript
创建一个复制UBB软件信息的链接或按钮的js代码
2008/01/06 Javascript
复制本贴标题和地址的js代码
2008/07/01 Javascript
jQuery Tools tab(幻灯片)
2012/07/14 Javascript
ExtJS4中的requires使用方法示例介绍
2013/12/03 Javascript
JavaScript中使用Object.create()创建对象介绍
2014/12/30 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
JavaScript学习笔记(三):JavaScript也有入口Main函数
2015/09/12 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
深入理解requestAnimationFrame的动画循环
2016/09/20 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
2016/12/26 Javascript
微信小程序之圆形进度条实现思路
2018/02/22 Javascript
各个系统下的Python解释器相关安装方法
2015/10/12 Python
python读取目录下最新的文件夹方法
2018/12/24 Python
python SQLAlchemy 中的Engine详解
2019/07/04 Python
基于python实现对文件进行切分行
2020/04/26 Python
Django实现内容缓存实例方法
2020/06/30 Python
Python logging日志模块 配置文件方式
2020/07/12 Python
Python特殊属性property原理及使用方法解析
2020/10/09 Python
巴西女装购物网站:Eclectic
2018/04/24 全球购物
日语求职信范文
2013/12/17 职场文书
购房意向书范本
2014/04/01 职场文书
幸福中国演讲稿
2014/09/12 职场文书
房屋出租协议书范本(标准版)
2014/09/24 职场文书
12.4全国法制宣传日活动方案
2014/11/02 职场文书
向女朋友道歉的话
2015/01/20 职场文书
离婚被告代理词
2015/05/23 职场文书
治理商业贿赂工作总结
2015/08/10 职场文书
煤矿安全生产工作总结
2015/08/13 职场文书
利用JuiceFS使MySQL 备份验证性能提升 10 倍
2022/03/17 MySQL