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 过滤字符串的技巧,map与itertools.imap
Sep 06 Python
python生成指定尺寸缩略图的示例
May 07 Python
跟老齐学Python之Import 模块
Oct 13 Python
Python itertools模块详解
May 09 Python
深入理解Python中各种方法的运作原理
Jun 15 Python
高质量Python代码编写的5个优化技巧
Nov 16 Python
JavaScript实现一维数组转化为二维数组
Apr 17 Python
python 将json数据提取转化为txt的方法
Oct 26 Python
Python中常用的8种字符串操作方法
May 06 Python
python 中pyqt5 树节点点击实现多窗口切换问题
Jul 04 Python
Python Flask上下文管理机制实例解析
Mar 16 Python
python利用paramiko实现交换机巡检的示例
Sep 22 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
AM/FM收音机的安装与调试
2021/03/02 无线电
php+mysqli事务控制实现银行转账实例
2015/01/29 PHP
ThinkPHP自定义函数解决模板标签加减运算的方法
2015/07/03 PHP
Laravel给生产环境添加监听事件(SQL日志监听)
2017/06/19 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
零基础php编程好学吗
2019/10/11 PHP
Javascript中eval函数的使用方法与示例
2007/04/09 Javascript
javascript中获取下个月一号,是星期几
2012/06/01 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
2014/01/02 Javascript
js离开或刷新页面检测(且兼容FF,IE,Chrome)
2014/03/05 Javascript
javascript动态设置样式style实例分析
2015/05/13 Javascript
JQuery中层次选择器用法实例详解
2015/05/18 Javascript
浅谈jquery上下滑动的注意事项
2016/10/13 Javascript
JavaScript实现类似拉勾网的鼠标移入移出效果
2016/10/27 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
2017/02/07 Javascript
JS实现汉字与Unicode码相互转换的方法详解
2017/04/28 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
2017/08/06 Javascript
基于vue-cli配置lib-flexible + rem实现移动端自适应
2017/12/26 Javascript
详解Angular路由之路由守卫
2018/05/10 Javascript
在vue.js中使用JSZip实现在前端解压文件的方法
2018/09/05 Javascript
python递归查询菜单并转换成json实例
2017/03/27 Python
运用TensorFlow进行简单实现线性回归、梯度下降示例
2018/03/05 Python
Python装饰器用法实例总结
2018/05/26 Python
python 两个数据库postgresql对比
2019/10/21 Python
如何基于Python批量下载音乐
2019/11/11 Python
python excel和yaml文件的读取封装
2021/01/12 Python
Under Armour安德玛意大利官网:美国高端运动科技品牌
2020/01/16 全球购物
汽车工程专业应届生求职信
2013/10/19 职场文书
银行员工职业规划范文
2014/01/21 职场文书
活动总结报告怎么写
2014/07/03 职场文书
高中学生会竞选演讲稿
2014/08/25 职场文书
任命书怎么写
2015/03/02 职场文书
妇联2016年六一国际儿童节活动总结
2016/04/06 职场文书
Django Paginator分页器的使用示例
2021/06/23 Python
SpringBoot整合minio快速入门教程(代码示例)
2022/04/03 Java/Android
java实现web实时消息推送的七种方案
2022/07/23 Java/Android