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 数据清洗之数据合并、转换、过滤、排序
Feb 12 Python
Python3计算三角形的面积代码
Dec 18 Python
python针对excel的操作技巧
Mar 13 Python
用 Python 连接 MySQL 的几种方式详解
Apr 04 Python
利用Python将文本中的中英文分离方法
Oct 31 Python
浅谈pycharm出现卡顿的解决方法
Dec 03 Python
Django 开发调试工具 Django-debug-toolbar使用详解
Jul 23 Python
python、PyTorch图像读取与numpy转换实例
Jan 13 Python
Python转换字典成为对象,可以用&quot;.&quot;方式访问对象属性实例
May 11 Python
python如何查看安装了的模块
Jun 23 Python
使用pytorch实现论文中的unet网络
Jun 24 Python
Python OpenCV之常用滤波器使用详解
Apr 07 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类
2006/10/09 PHP
php安全配置记录和常见错误梳理(总结)
2017/03/28 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
2019/05/08 PHP
Yii框架日志操作图文与实例详解
2019/09/09 PHP
浅析js中取绝对值的2种方法
2013/07/09 Javascript
简单实用的全选反选按钮例子
2013/10/18 Javascript
jQuery拖动div、移动div、弹出层实现原理及示例
2014/04/08 Javascript
JS遍历Json字符串中键值对先转成JSON对象再遍历
2014/08/15 Javascript
Javascript表单验证要注意的事项
2014/09/29 Javascript
angularjs中的单元测试实例
2014/12/06 Javascript
浅谈JavaScript中Date(日期对象),Math对象
2015/02/05 Javascript
JS中处理时间之setUTCMinutes()方法的使用
2015/06/12 Javascript
Javascript实现字数统计
2015/07/03 Javascript
Angular.js中数组操作的方法教程
2017/07/31 Javascript
javaScript实现复选框全选反选事件详解
2020/11/20 Javascript
vuex存储token示例
2019/11/11 Javascript
[02:36]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma 选手采访
2021/03/11 DOTA
举例详解Python中的split()函数的使用方法
2015/04/07 Python
python基础教程之匿名函数lambda
2017/01/17 Python
python中闭包Closure函数作为返回值的方法示例
2017/12/17 Python
PyGame贪吃蛇的实现代码示例
2018/11/21 Python
Python类和对象的定义与实际应用案例分析
2018/12/27 Python
在win64上使用bypy进行百度网盘文件上传功能
2020/01/02 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
Python模拟键盘输入自动登录TGP
2020/11/27 Python
python 装饰器的基本使用
2021/01/13 Python
python-jwt用户认证食用教学的实现方法
2021/01/19 Python
让ie浏览器成为支持html5的浏览器的解决方法(使用html5shiv)
2014/04/08 HTML / CSS
英国床垫在线:Mattress Online
2016/12/07 全球购物
LEGO玩具英国官方商店:LEGO Shop GB
2018/03/27 全球购物
Emma Bridgewater官网:英国餐具制造商
2019/11/24 全球购物
怎么写有吸引力的自荐信
2013/11/17 职场文书
前处理组长岗位职责
2014/03/01 职场文书
事业单位鉴定材料
2014/05/25 职场文书
求职简历自我评价2015
2015/03/10 职场文书
老乡聚会通知
2015/04/23 职场文书