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自动化构建工具scons使用入门笔记
Mar 10 Python
python中常用检测字符串相关函数汇总
Apr 15 Python
Python操作Word批量生成文章的方法
Jul 28 Python
一个基于flask的web应用诞生 组织结构调整(7)
Apr 11 Python
Python中音频处理库pydub的使用教程
Jun 07 Python
详解Python里使用正则表达式的ASCII模式
Nov 02 Python
对numpy 数组和矩阵的乘法的进一步理解
Apr 04 Python
用python写一个定时提醒程序的实现代码
Jul 22 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
Feb 21 Python
python类共享变量操作
Sep 03 Python
小结Python的反射机制
Sep 28 Python
python 利用Pyinstaller打包Web项目
Oct 23 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
自己动手做一个SQL解释器
2006/10/09 PHP
基于OpenCV的PHP图像人脸识别技术
2009/10/11 PHP
php实现文件下载更能介绍
2012/11/23 PHP
php初始化对象和析构函数的简单实例
2014/03/11 PHP
推荐40个简单的 jQuery 导航插件和教程(下篇)
2012/09/14 Javascript
封装好的一个万能检测表单的方法
2015/01/21 Javascript
js实现屏幕自适应局部代码分享
2015/01/30 Javascript
js实现图片从左往右渐变切换效果的方法
2015/02/06 Javascript
AngularJS入门示例之Hello World详解
2017/01/04 Javascript
jquery精度计算代码 jquery指定精确小数位
2017/02/06 Javascript
基于jQuery Ajax实现下拉框无刷新联动
2017/12/06 jQuery
Angular 组件之间的交互的示例代码
2018/03/24 Javascript
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
2018/03/28 jQuery
JavaScript ES2019中的8个新特性详解
2019/02/20 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
2020/01/14 Javascript
python中迭代器(iterator)用法实例分析
2015/04/29 Python
Python 爬虫的工具列表大全
2016/01/31 Python
使用python3.5仿微软记事本notepad
2016/06/15 Python
python中os和sys模块的区别与常用方法总结
2017/11/14 Python
Pyinstaller将py打包成exe的实例
2018/03/31 Python
详解小白之KMP算法及python实现
2019/04/04 Python
win10下python3.8的PIL库安装过程
2020/06/08 Python
使用tensorflow进行音乐类型的分类
2020/08/14 Python
python Xpath语法的使用
2020/11/26 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
利用HTML5 Canvas制作一个简单的打飞机游戏
2015/05/11 HTML / CSS
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
Booking.com德国:预订最好的酒店和住宿
2020/02/16 全球购物
商务英语专业毕业生自荐信
2013/11/05 职场文书
理想点亮人生演讲稿
2014/05/21 职场文书
饭店服务员岗位职责
2015/02/09 职场文书
幼儿园教师自我评价
2015/03/04 职场文书
销售员自我评价
2015/03/11 职场文书
致运动员赞词
2015/07/22 职场文书
Python爬虫之爬取最新更新的小说网站
2021/05/06 Python
php去除deprecated的实例方法
2021/11/17 PHP