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实现DNS正向查询、反向查询的例子
Apr 25 Python
python中遍历文件的3个方法
Sep 02 Python
Python 3中print函数的使用方法总结
Aug 08 Python
Python探索之SocketServer详解
Oct 28 Python
Python实现字典的遍历与排序功能示例
Dec 23 Python
Anaconda2下实现Python2.7和Python3.5的共存方法
Jun 11 Python
详解基于django实现的webssh简单例子
Jul 17 Python
Python多叉树的构造及取出节点数据(treelib)的方法
Aug 09 Python
3种python调用其他脚本的方法
Jan 06 Python
python seaborn heatmap可视化相关性矩阵实例
Jun 03 Python
python实现图像外边界跟踪操作
Jul 13 Python
推荐值得学习的12款python-web开发框架
Aug 10 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.NET的入门教程
2006/10/09 PHP
php 动态添加记录
2009/03/10 PHP
php去除html标记的原生函数详解
2015/01/27 PHP
js限制文本框为整数和货币的函数代码
2010/10/13 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
2014/01/10 Javascript
一个简单的实现下拉框多选的插件可移植性比较好
2014/05/05 Javascript
Javascript 构造函数详解
2014/10/22 Javascript
浅析javascript 定时器
2014/12/23 Javascript
AngularJS实用开发技巧(推荐)
2016/07/13 Javascript
Angularjs中$http以post请求通过消息体传递参数的实现方法
2016/08/05 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
2016/11/02 Javascript
JS实现的五级联动菜单效果完整实例
2017/02/23 Javascript
基于vue.js路由参数的实例讲解——简单易懂
2017/09/07 Javascript
详解vue-cli与webpack结合如何处理静态资源
2017/09/19 Javascript
浅谈Vue下使用百度地图的简易方法
2018/03/23 Javascript
JS实现头条新闻的经典轮播图效果示例
2019/01/30 Javascript
Vue2.0+Vux搭建一个完整的移动webApp项目的示例
2019/03/19 Javascript
kNN算法python实现和简单数字识别的方法
2014/11/18 Python
Python中的自省(反射)详解
2015/06/02 Python
为什么入门大数据选择Python而不是Java?
2018/03/07 Python
pandas的object对象转时间对象的方法
2018/04/11 Python
python处理csv中的空值方法
2018/06/22 Python
在ubuntu16.04中将python3设置为默认的命令写法
2018/10/31 Python
Pandas库之DataFrame使用的学习笔记
2019/06/21 Python
详解python中自定义超时异常的几种方法
2019/07/29 Python
对于Python深浅拷贝的理解
2019/07/29 Python
matlab灰度图像调整及imadjust函数的用法详解
2020/02/27 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
详解使用HTML5的classList属性操作CSS类
2017/10/13 HTML / CSS
全球速卖通俄罗斯站:AliExpress俄罗斯
2019/06/17 全球购物
英国最大的在线快递公司之一:ParcelHero
2019/11/04 全球购物
extern是什么意思
2016/03/10 面试题
信息技术专业个人自我评价
2013/12/11 职场文书
宣传委员竞选稿
2015/11/19 职场文书
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
2021/04/25 Python
Elasticsearch 基本查询和组合查询
2022/04/19 Python