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实现数独算法实例
Jun 09 Python
详解Python中heapq模块的用法
Jun 28 Python
Python中functools模块函数解析
Mar 12 Python
linux环境下的python安装过程图解(含setuptools)
Nov 22 Python
深入浅析python 中的匿名函数
May 21 Python
详解Python解决抓取内容乱码问题(decode和encode解码)
Mar 29 Python
Django中间件基础用法详解
Jul 18 Python
Python操作redis和mongoDB的方法
Dec 19 Python
在python中利用try..except来代替if..else的用法
Dec 19 Python
Pandas 解决dataframe的一列进行向下顺移问题
Dec 27 Python
pytorch 实现在预训练模型的 input上增减通道
Jan 06 Python
python不使用for计算两组、多个矩形两两间的iou方式
Jan 18 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
PHP 面向对象详解
2012/09/13 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
2016/05/09 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
非常强大的 jQuery.AsyncBox 弹出对话框插件
2011/08/29 Javascript
javascript提取URL的搜索字符串中的参数(自定义函数实现)
2013/01/22 Javascript
Javascript级联下拉菜单以及AJAX数据验证核心代码
2013/05/10 Javascript
使用firebug进行调试javascript的示例
2013/12/16 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
JavaScript编写检测用户所使用的浏览器的代码示例
2016/05/05 Javascript
原生js编写基于面向对象的分页组件
2016/12/05 Javascript
JS使用正则实现去掉字符串左右空格的方法
2016/12/27 Javascript
NodeJS如何实现同步的方法示例
2018/08/24 NodeJs
浅谈一个webpack构建速度优化误区
2019/06/24 Javascript
[52:07]完美世界DOTA2联赛PWL S3 LBZS vs access 第二场 12.10
2020/12/13 DOTA
python 算法 排序实现快速排序
2012/06/05 Python
Python操作列表的常用方法分享
2014/02/13 Python
跟老齐学Python之类的细节
2014/10/13 Python
Python中用startswith()函数判断字符串开头的教程
2015/04/07 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
2018/01/11 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
python实现图片识别汽车功能
2018/11/30 Python
实例详解Python模块decimal
2019/06/26 Python
树莓派极简安装OpenCv的方法步骤
2019/10/10 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
2019/10/28 Python
python 字段拆分详解
2019/12/17 Python
用Python制作mini翻译器的实现示例
2020/08/17 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
2021/02/02 Python
CSS3制作3D立方体loading特效
2020/11/09 HTML / CSS
澳大利亚电子产品购物网站:Dick Smith
2017/02/02 全球购物
加拿大快时尚零售商:Ardene
2018/02/14 全球购物
中专毕业生求职简历的自我评价
2013/10/21 职场文书
数控机械专业个人的自我评价
2014/01/02 职场文书
结婚典礼证婚词
2014/01/08 职场文书
nginx作grpc的反向代理踩坑总结
2021/07/07 Servers
4种方法python批量修改替换列表中元素
2022/04/07 Python
python多次执行绘制条形图
2022/04/20 Python