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的dict,set,list,tuple应用详解
Jul 24 Python
使用Python3 编写简单信用卡管理程序
Dec 21 Python
python subprocess 杀掉全部派生的子进程方法
Jan 16 Python
详解python并发获取snmp信息及性能测试
Mar 27 Python
python抽取指定url页面的title方法
May 11 Python
python之文件读取一行一行的方法
Jul 12 Python
Python 利用pydub库操作音频文件的方法
Jan 09 Python
pandas中DataFrame修改index、columns名的方法示例
Aug 02 Python
python使用if语句实现一个猜拳游戏详解
Aug 27 Python
python+selenium实现12306模拟登录的步骤
Jan 21 Python
OpenCV-Python 实现两张图片自动拼接成全景图
Jun 11 Python
Python可视化神器pyecharts之绘制地理图表练习
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 删除数组元素
2009/01/16 PHP
无需重新编译php加入ftp扩展的解决方法
2013/02/07 PHP
yii gridview实现时间段筛选功能
2017/08/15 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
2018/05/10 PHP
自动更新作用
2006/10/08 Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
2012/08/14 Javascript
SwfUpload在IE10上不出现上传按钮的解决方法
2013/06/25 Javascript
使用JS实现jQuery的addClass, removeClass, hasClass函数功能
2014/10/31 Javascript
浅谈javascript的分号的使用
2015/05/12 Javascript
深入探究使JavaScript动画流畅的一些方法
2015/06/30 Javascript
浅析jQuery中使用$所引发的问题
2016/05/29 Javascript
基于gulp合并压缩Seajs模块的方式说明
2016/06/14 Javascript
AngularJs验证重复密码的方法(两种)
2016/11/25 Javascript
angularjs实现搜索的关键字在正文中高亮出来
2017/06/13 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
2017/08/15 jQuery
vue组件的写法汇总
2018/04/12 Javascript
JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例
2019/01/29 Javascript
Vue 用Vant实现时间选择器的示例代码
2019/10/25 Javascript
纯 JS 实现放大缩小拖拽功能(完整代码)
2019/11/25 Javascript
[44:39]2014 DOTA2国际邀请赛中国区预选赛 NE VS CNB
2014/05/21 DOTA
Python线程中对join方法的运用的教程
2015/04/09 Python
Python如何判断数独是否合法
2016/09/08 Python
深入分析python数据挖掘 Json结构分析
2018/04/21 Python
Python 输入一个数字判断成绩分数等级的方法
2018/11/15 Python
Python流程控制 if else实现解析
2019/09/02 Python
Django 用户登陆访问限制实例 @login_required
2020/05/13 Python
python实现猜单词游戏
2020/05/22 Python
迪卡侬印尼体育用品商店:Decathlon印尼
2020/03/11 全球购物
英国发展最快的在线超市之一:Click Marketplace
2021/02/15 全球购物
某药房的新员工入职告知书!
2019/07/15 职场文书
Nginx URL重写rewrite机制原理及使用实例
2021/04/01 Servers
python Polars库的使用简介
2021/04/21 Python
使用golang编写一个并发工作队列
2021/05/08 Golang
vue Element-ui表格实现树形结构表格
2021/06/07 Vue.js
Python函数中的不定长参数相关知识总结
2021/06/24 Python