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脚本实现虾米网签到功能
Apr 12 Python
Python 爬虫之超链接 url中含有中文出错及解决办法
Aug 03 Python
Python3.6 Schedule模块定时任务(实例讲解)
Nov 09 Python
Python读取csv文件分隔符设置方法
Jan 14 Python
使用Python和Prometheus跟踪天气的使用方法
May 06 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
Jul 15 Python
如何在python中实现随机选择
Nov 02 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
Dec 06 Python
matplotlib实现显示伪彩色图像及色度条
Dec 07 Python
浅谈keras的深度模型训练过程及结果记录方式
Jan 24 Python
浅谈pycharm导入pandas包遇到的问题及解决
Jun 01 Python
Python实现我的世界小游戏源代码
Mar 02 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
HTML TO JavaScript 转换
2006/06/26 Javascript
JavaScript isArray()函数判断对象类型的种种方法
2010/10/11 Javascript
分享一个我自己写的ToolTip提示插件(附源码)
2013/01/20 Javascript
3分钟写出来的Jquery版checkbox全选反选功能
2013/10/23 Javascript
javascript控制Div层透明属性由浅变深由深变浅逐渐显示
2013/11/12 Javascript
JQuery下拉框应用示例介绍
2014/04/23 Javascript
jquery 取子节点及当前节点属性值
2014/07/25 Javascript
jQuery预加载图片常用方法
2015/06/15 Javascript
jQuery使用animate创建动画用法实例
2015/08/07 Javascript
Jquery中使用show()与hide()方法动画显示和隐藏图片
2015/10/08 Javascript
jQuery easyui刷新当前tabs的方法
2016/09/23 Javascript
Node.js的文件权限及读写flag详解
2016/10/11 Javascript
简单学习vue指令directive
2016/11/03 Javascript
AngularJS ionic手势事件的使用总结
2017/08/09 Javascript
angular项目中bootstrap-datetimepicker时间插件的使用示例
2018/03/15 Javascript
微信小程序城市选择及搜索功能的方法
2019/03/22 Javascript
javascript History对象原理解析
2020/02/17 Javascript
[51:32]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
[42:32]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.27
2020/12/01 DOTA
在Python的Flask框架中验证注册用户的Email的方法
2015/09/02 Python
Python的Django框架中使用SQLAlchemy操作数据库的教程
2016/06/02 Python
Python如何生成树形图案
2018/01/03 Python
Python列表(List)知识点总结
2019/02/18 Python
Python函数参数匹配模型通用规则keyword-only参数详解
2019/06/10 Python
python tkinter canvas使用实例
2019/11/04 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
利用matplotlib实现根据实时数据动态更新图形
2019/12/13 Python
html5 canvas手势解锁源码分享
2020/01/07 HTML / CSS
巴西购物网站:Submarino
2020/01/19 全球购物
牵手50新加坡:专为黄金岁月的单身人士而设的交友网站
2020/08/16 全球购物
爱与责任演讲稿
2014/05/20 职场文书
委托证明书
2014/09/17 职场文书
教师党员自我剖析材料
2014/09/29 职场文书
机械专业毕业生自我鉴定2014
2014/10/04 职场文书
导游词之西江千户苗寨
2019/12/24 职场文书
详解如何修改nginx的默认端口
2021/03/31 Servers