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实现的二维码生成小软件
Jul 11 Python
零基础写python爬虫之使用urllib2组件抓取网页内容
Nov 04 Python
使用Python编写Linux系统守护进程实例
Feb 03 Python
python使用BeautifulSoup分页网页中超链接的方法
Apr 04 Python
使用python存储网页上的图片实例
May 22 Python
Python日期时间Time模块实例详解
Apr 15 Python
Python 学习教程之networkx
Apr 15 Python
python2与python3爬虫中get与post对比解析
Sep 18 Python
Python Tkinter Entry和Text的添加与使用详解
Mar 04 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
Mar 16 Python
pandas使用函数批量处理数据(map、apply、applymap)
Nov 27 Python
python实现简单聊天功能
Jul 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变量与数组相互转换的方法(extract与compact)
2016/12/02 PHP
thinkPHP中volist标签用法示例
2016/12/06 PHP
PHP标准库(PHP SPL)详解
2019/03/16 PHP
actionscript与javascript的区别
2011/05/25 Javascript
js String对象中常用方法小结(字符串操作)
2012/01/27 Javascript
jquery插件如何使用 jQuery操作Cookie插件使用介绍
2012/12/15 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
2015/03/03 Javascript
javascript运动详解
2015/07/06 Javascript
javascript伸缩型菜单实现代码
2015/11/16 Javascript
基于JavaScript实现弹出框效果
2016/02/19 Javascript
浅析$.getJSON异步请求和同步请求
2016/06/06 Javascript
JS实现的简单轮播图运动效果示例
2016/12/22 Javascript
基于JavaScript实现瀑布流效果
2017/03/29 Javascript
详解AngularJS 路由 resolve用法
2017/04/24 Javascript
Vue2.0基于vue-cli+webpack Vuex的用法(实例讲解)
2017/09/15 Javascript
详解js常用分割取字符串的方法
2019/05/15 Javascript
el-select 下拉框多选实现全选的实现
2019/08/02 Javascript
微信公众号平台接口开发 获取access_token过程解析
2019/08/14 Javascript
利用d3.js制作连线动画图与编辑器的方法实例
2019/09/05 Javascript
layer.open组件获取弹出层页面变量、函数的实例
2019/09/25 Javascript
vue+iview分页组件的封装
2020/11/17 Vue.js
Python实现多线程抓取妹子图
2015/08/08 Python
python爬虫_实现校园网自动重连脚本的教程
2018/04/22 Python
对numpy数据写入文件的方法讲解
2018/07/09 Python
在python中bool函数的取值方法
2018/11/01 Python
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
2017/01/05 HTML / CSS
HTML5实现音频和视频嵌入的方法
2018/08/22 HTML / CSS
个人自我鉴定写法
2013/11/30 职场文书
《冬阳童年骆驼队》教学反思
2014/04/15 职场文书
《棉鞋里的阳光》教学反思
2014/04/24 职场文书
大学生应聘求职信
2014/05/26 职场文书
2015年志愿者服务工作总结
2015/04/20 职场文书
培训简讯范文
2015/07/20 职场文书
创业项目(超低成本创业项目)
2019/08/16 职场文书
《游戏王:大师决斗》将推出新卡牌包4月4日上线
2022/03/31 其他游戏