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中dict与set的使用
Aug 10 Python
Python编程django实现同一个ip十分钟内只能注册一次
Nov 03 Python
Python方法的延迟加载的示例代码
Dec 18 Python
Python机器学习之决策树算法
Dec 22 Python
对Python 数组的切片操作详解
Jul 02 Python
Python之使用adb shell命令启动应用的方法详解
Jan 07 Python
详解Pandas之容易让人混淆的行选择和列选择
Jul 10 Python
pycharm新建一个python工程步骤
Jul 16 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
Apr 30 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
Jan 26 Python
python cv2图像质量压缩的算法示例
Jun 04 Python
Python echarts实现数据可视化实例详解
Mar 03 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
第十四节--命名空间
2006/11/16 PHP
用PHP+MySQL搭建聊天室功能实例代码
2012/08/20 PHP
PHP+ajax分页实例简析
2015/12/07 PHP
PHP的Yii框架的常用日志操作总结
2015/12/08 PHP
解决Laravel5.5下的toArray问题
2019/10/15 PHP
escape、encodeURI、encodeURIComponent等方法的区别比较
2006/12/27 Javascript
JS实现div内部的文字或图片自动循环滚动代码
2013/04/19 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
Uploadify上传文件方法
2016/03/16 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
iscroll实现下拉刷新功能
2017/07/18 Javascript
微信小程序之电影影评小程序制作代码
2017/08/03 Javascript
vue实现键盘输入支付密码功能
2018/08/18 Javascript
vue axios数据请求get、post方法及实例详解
2018/09/11 Javascript
Vue混入mixins滚动触底的方法
2019/11/22 Javascript
JavaScript位置参数实现原理及过程解析
2020/09/14 Javascript
Python 字典(Dictionary)操作详解
2014/03/11 Python
Python中单例模式总结
2018/02/20 Python
python读取文件名称生成list的方法
2018/04/27 Python
python矩阵的转置和逆转实例
2018/12/12 Python
python之线程通过信号pyqtSignal刷新ui的方法
2019/01/11 Python
在Python 字典中一键对应多个值的实例
2019/02/03 Python
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
2019/07/04 Python
Tensorflow的梯度异步更新示例
2020/01/23 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
2020/03/24 Python
详解python中的lambda与sorted函数
2020/09/04 Python
美国最大的网上冲印店:Shutterfly
2017/01/01 全球购物
澳大利亚网上买书:Angus & Robertson
2019/07/21 全球购物
size?法国官网:英国伦敦的球鞋精品店
2020/03/15 全球购物
业务部经理岗位职责
2014/01/04 职场文书
军训口号
2014/06/13 职场文书
邮政营业员岗位职责
2015/04/14 职场文书
大学考试作弊检讨书
2015/05/06 职场文书
地心历险记观后感
2015/06/15 职场文书
单位接收证明格式
2015/06/18 职场文书
Golang 结构体数据集合
2022/04/22 Golang