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 28 Python
python的类方法和静态方法
Dec 13 Python
python实现分析apache和nginx日志文件并输出访客ip列表的方法
Apr 04 Python
基于Python实现的微信好友数据分析
Feb 26 Python
Python操作MySQL模拟银行转账
Mar 12 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
Jun 21 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
Feb 07 Python
教你一步步利用python实现贪吃蛇游戏
Jun 27 Python
python获取txt文件词向量过程详解
Jul 05 Python
Python实现非正太分布的异常值检测方式
Dec 09 Python
python实现猜数游戏
Mar 27 Python
Python-OpenCV实现图像缺陷检测的实例
Jun 11 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
解析thinkphp import 文件内容变量失效的问题
2013/06/20 PHP
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
PHP入门教程之会话控制技巧(cookie与session)
2016/09/11 PHP
PHP命名空间namespace用法实例分析
2016/09/27 PHP
PHP如何解决微信文章图片防盗链
2020/12/09 PHP
用JTrackBar实现的模拟苹果风格的滚动条
2007/08/06 Javascript
点击按钮或链接不跳转只刷新页面的脚本整理
2013/10/22 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
Jquery实现鼠标移动放大图片功能实例
2015/03/25 Javascript
JS实现带鼠标效果的头像及文章列表代码
2015/09/27 Javascript
JavaScript中的函数(二)
2015/12/23 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
2016/06/21 Javascript
AngularJS基础 ng-selected 指令简单示例
2016/08/03 Javascript
Vue2.0利用 v-model 实现组件props双向绑定的优美解决方案
2017/03/13 Javascript
js 函数式编程学习笔记
2017/03/25 Javascript
关于react-router/react-router-dom v4 history不能访问问题的解决
2018/01/08 Javascript
JS简单实现动态添加HTML标记的方法示例
2018/04/08 Javascript
vue+vue-router转场动画的实例代码
2018/09/01 Javascript
在vue中利用v-html按分号将文本换行的例子
2019/11/14 Javascript
Python中使用urllib2防止302跳转的代码例子
2014/07/07 Python
python中尾递归用法实例详解
2015/04/28 Python
详解Python中的type和object
2018/08/15 Python
PyQt5实现简易电子词典
2019/06/25 Python
python 默认参数相关知识详解
2019/09/18 Python
Python正则表达式学习小例子
2020/03/03 Python
利用CSS3实现单选框动画特效示例代码
2016/09/26 HTML / CSS
StubHub澳大利亚:购买或出售您的门票
2019/08/01 全球购物
小学运动会广播稿200字(十二篇)
2014/01/14 职场文书
少先队入队活动方案
2014/02/08 职场文书
班主任自我评价范文
2015/03/11 职场文书
2015年上半年信访工作总结
2015/03/30 职场文书
原料仓管员岗位职责
2015/04/01 职场文书
2015年班组长工作总结
2015/04/10 职场文书
中秋节祝酒词
2015/08/12 职场文书
MySQL REVOKE实现删除用户权限
2021/06/18 MySQL
JVM钩子函数的使用场景详解
2021/08/23 Java/Android