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让图片按照exif信息里的创建时间进行排序的方法
Mar 16 Python
Python中尝试多线程编程的一个简明例子
Apr 07 Python
python登录pop3邮件服务器接收邮件的方法
Apr 30 Python
解析Python中while true的使用
Oct 13 Python
python 循环while和for in简单实例
Aug 16 Python
解决Mac下首次安装pycharm无project interpreter的问题
Oct 29 Python
Python关键字及可变参数*args,**kw原理解析
Apr 04 Python
解决python脚本中error: unrecognized arguments: True错误
Apr 20 Python
Python如何转换字符串大小写
Jun 04 Python
python中round函数如何使用
Jun 19 Python
Python pymsql模块的使用
Sep 07 Python
python抢购软件/插件/脚本附完整源码
Mar 04 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
PHP4之真OO
2006/10/09 PHP
PHP无限分类(树形类)
2013/09/28 PHP
php获取twitter最新消息的方法
2015/04/14 PHP
CodeIgniter读写分离实现方法详解
2016/01/20 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
thinkPHP框架实现的短信接口验证码功能示例
2018/06/20 PHP
用jQuery技术实现Tab页界面之二
2009/09/21 Javascript
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
2010/06/28 Javascript
js 中 document.createEvent的用法
2010/08/29 Javascript
基于jquery的jqDnR拖拽溢出的修改
2011/02/12 Javascript
javascript中的注释使用与注意事项小结
2011/09/20 Javascript
左右悬浮可分组的网站QQ在线客服代码(可谓经典)
2012/12/21 Javascript
js格式化时间小结
2014/11/03 Javascript
jquery实现的淡入淡出下拉菜单效果
2015/08/25 Javascript
详解JavaScript操作HTML DOM的基本方式
2015/10/21 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
Vue概念及常见命令介绍(1)
2016/12/08 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
2017/11/21 Javascript
详解如何从零开始搭建Express+Vue开发环境
2018/07/17 Javascript
node.js中express模块创建服务器和http模块客户端发请求
2019/03/06 Javascript
如何在JS文件中获取Vue组件
2020/09/16 Javascript
Python实现的tab文件操作类分享
2014/11/20 Python
在Python中操作列表之List.pop()方法的使用
2015/05/21 Python
Python中使用不同编码读写txt文件详解
2015/05/28 Python
Python的Socket编程过程中实现UDP端口复用的实例分享
2016/03/19 Python
Pandas读取MySQL数据到DataFrame的方法
2018/07/25 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
2019/03/26 Python
Python实现非正太分布的异常值检测方式
2019/12/09 Python
python线程里哪种模块比较适合
2020/08/02 Python
基于css3 animate制作绚丽的动画效果
2015/11/24 HTML / CSS
使用Html5实现异步上传文件,支持跨域,带有上传进度条
2016/09/17 HTML / CSS
服务员自我评价
2014/01/25 职场文书
市场部业务员岗位职责
2014/04/02 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书
2014年学校领导班子对照检查材料
2014/09/19 职场文书
Redis中一个String类型引发的惨案
2021/07/25 Redis