雷林鹏分享:Flask消息闪现

  一个基于GUI好的应用程序需要向用户提供交互的反馈信息。 例如,桌面应用程序使用对话框或消息框,JavaScript使用alert()函数用于类似的目的。

  在Flask Web应用程序中生成这样的信息消息很容易。 Flask框架的闪现系统使得可以在一个视图中创建一个消息并将其呈现在名为next的视图函数中。

  Flask模块包含flash()方法。 它将消息传递给下一个请求,该请求通常是一个模板。

  flash(message, category)

  在这里 -

  message - 参数是要刷新的实际消息。

  category - 参数是可选的。 它可以是’错误’,’信息’或’警告’。

  要从会话中删除消息,模板调用get_flashed_messages()函数。

  get_flashed_messages(with_categories, category_filter)

  两个参数都是可选的。 如果收到的消息具有类别,则第一个参数是元组。 第二个参数对于仅显示特定消息很有用。

  以下闪现模板中收到消息。

  {% with messages = get_flashed_messages() %}

  {% if messages %}

  {% for message in messages %}

  {{ message }}

  {% endfor %}

  {% endif %}

  {% endwith %}

  现在我们来看一个简单的例子,演示Flask中的闪现机制。 在下面的代码中,URL => “/”显示了到登录页面的链接,没有指定要发送的消息。

  @app.route(‘/‘)

  def index():

  return render_template(‘index.html‘)

  该链接引导用户显示登录表单的URL => “/login”。 提交时,login()函数验证用户名和密码,并相应地闪现“成功”或“错误”变量消息。

  @app.route(‘/login‘, methods = [‘GET‘, ‘POST‘])

  def login():

  error = None

  if request.method == ‘POST‘:

  if request.form[‘username‘] != ‘admin‘ or \

  request.form[‘password‘] != ‘admin‘:

  error = ‘Invalid username or password. Please try again!‘

  else:

  flash(‘You were successfully logged in‘)

  return redirect(url_for(‘index‘))

  return render_template(‘login.html‘, error = error)

  如有错误,登录模板将重新显示并显示错误消息。

  模板文件:login.html 代码如下 -

  

  

  

  

  

  

  

登录

  {% if error %}

  

Error: {{ error }}

  {% endif %}

  

  

  

用户名:

  


  

  value = "{{request.form.username }}">

  

  

密码:

  

  

  

  

  

  

  如果登录成功,则在索引模板上闪现成功消息。以下代码保存在文件(index.html) -

  

  

  

  

  

  

  {% with messages = get_flashed_messages() %}

  {% if messages %}

  

  {% for message in messages %}

  

    • {{ message }}

  {% endfor %}

  

  {% endif %}

  {% endwith %}

  

Flask Message Flashing Example

  

您想要

  登录?

  

  

  Flask消息闪现示例的完整代码如下所示 -

  from flask import Flask, flash, redirect, render_template, request, url_for

  app = Flask(__name__)

  app.secret_key = ‘random string‘

  @app.route(‘/‘)

  def index():

  return render_template(‘index.html‘)

  @app.route(‘/login‘, methods = [‘GET‘, ‘POST‘])

  def login():

  error = None

  print(request.method)

  if request.method == ‘POST‘:

  if request.form[‘username‘] != ‘admin‘ or \

  request.form[‘password‘] != ‘admin‘:

  error = ‘Invalid username or password. Please try again!‘

  else:

  #flash(‘您已成功登录‘)

  flash(‘You were successfully logged in‘)

  return redirect(url_for(‘index‘))

  return render_template(‘login.html‘, error = error)

  if __name__ == "__main__":

  app.run(debug = True)

  执行上述代码后,您将看到如下所示的屏幕。

  当点击链接时,将会跳转到登录页面。输入用户名和密码 -

  点击登录按钮。 将显示一条消息“您已成功登录”。

(编辑:雷林鹏 来源:网络 侵删)

原文地址:https://www.cnblogs.com/pengpeng1208/p/11358379.html

时间: 2024-11-07 12:14:02

雷林鹏分享:Flask消息闪现的相关文章

Flask消息闪现

目录 Flask消息闪现 简单的例子 闪现消息的类别 过滤闪现消息 Message Flashing 参考 Flask消息闪现 一个好的应用和用户界面都需要良好的反馈.如果用户得不到足够的反馈,那么应用最终会被用户唾弃. Flask 的闪现系统提供了一个良好的反馈方式. 闪现系统的基本工作方式是: 在且只在下一个请求中访问上一个请求结束时记录的消息. 一般我们 结合布局模板来使用闪现系统. 注意,浏览器会限制 cookie 的大小,有时候网络服 务器也会.这样如果消息比会话 cookie 大的话

雷林鹏分享:Flask应用程序

要测试Flask安装是否成功,在编辑器中输入以下代码,并保存到文件:Hello.py 中. from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World' if __name__ == '__main__': app.run() 在项目中导入Flask模块是强制性的. Flask类的一个对象是WSGI应用程序. Flask构造函数将当前模块的名称(__nam

雷林鹏分享:Flask HTTP方法

Http协议是万维网数据通信的基础. 它协议定义了从指定URL中检索不同数据的方法. 下表概括了不同的http方法 - 编号方法描述 1GET将数据以未加密的形式发送到服务器,这最常用的方法. 2HEAD与GET相同,但没有响应主体 3POST用于将HTML表单数据发送到服务器.通过POST方法接收的数据不会被服务器缓存. 4PUT用上传的内容替换目标资源的所有当前表示. 5DELETE删除由URL给出的所有目标资源的所有表示 默认情况下,Flask路由响应GET请求. 但是,可以通过为rout

雷林鹏分享:Flask开发环境安装配置

安装Flask通常需要Python 2.6或更高版本. 尽管Flask及其依赖与Python 3(Python 3.3以上版本)配合良好,但许多Flask扩展并不能正确支持它. 因此,但是官方建议在Python 3.6+ 以上安装Flask. 安装virtualenv virtualenv是一个虚拟的Python环境构建器. 它可以帮助用户并行创建多个Python环境. 因此,它可以避免不同版本的库之间的兼容性问题. 使用虚拟环境在开发和生产中管理项目的依赖关系. 虚拟环境解决什么问题? 您拥有

雷林鹏分享:Flask URL构建

url_for()函数对于动态构建特定函数的URL非常有用. 该函数接受函数的名称作为第一个参数,并接受一个或多个关键字参数,每个参数对应于URL的变量部分. 以下脚本演示了使用url_for()函数. from flask import Flask, redirect, url_for app = Flask(__name__) @app.route('/admin') def hello_admin(): return 'Hello Admin' @app.route('/guest/')

雷林鹏分享:Ruby 异常

Ruby 异常 异常和执行总是被联系在一起.如果您打开一个不存在的文件,且没有恰当地处理这种情况,那么您的程序则被认为是低质量的. 如果异常发生,则程序停止.异常用于处理各种类型的错误,这些错误可能在程序执行期间发生,所以要采取适当的行动,而不至于让程序完全停止. Ruby 提供了一个完美的处理异常的机制.我们可以在 begin/end 块中附上可能抛出异常的代码,并使用 rescue 子句告诉 Ruby 完美要处理的异常类型. 语法 begin # - rescue OneTypeOfExce

雷林鹏分享jQuery EasyUI 布局 - 在面板中创建复杂布局

面板(Panel)允许您创建用于多种用途的自定义布局.在本实例中,我们使用面板(panel)和布局(layout)插件来创建一个 msn 消息框. 我们在区域面板中使用多个布局(layout).在消息框的顶部我们放置一个查询输入框,同时在右边放置一个人物图片.在中间的区域我们通过设置 split 属性为 true,把这部分切割为两部分,允许用户改变区域面板的尺寸大小. 以下就是所有代码: Search: Hi,I am easyui. 我们不需要写任何的 javascript 代码,它自己有非常

雷林鹏分享:JSP 简介

JSP 简介 什么是Java Server Pages? JSP全称Java Server Pages,是一种动态网页开发技术.它使用JSP标签在HTML网页中插入Java代码.标签通常以<%开头以%>结束. JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分.网页开发者们通过结合HTML代码.XHTML代码.XML元素以及嵌入JSP操作和命令来编写JSP. JSP通过网页表单获取用户输入数据.访问数据库及其他数据源,然后动态地创建网页. JSP标签有多种

雷林鹏分享:Ruby 多线程

Ruby 多线程 每个正在系统上运行的程序都是一个进程.每个进程包含一到多个线程. 线程是程序中一个单一的顺序控制流程,在单个程序中同时运行多个线程完成不同的工作,称为多线程. Ruby 中我们可以通过 Thread 类来创建多线程,Ruby的线程是一个轻量级的,可以以高效的方式来实现并行的代码. 创建 Ruby 线程 要启动一个新的线程,只需要调用 Thread.new 即可: # 线程 #1 代码部分 Thread.new { # 线程 #2 执行代码 } # 线程 #1 执行代码 实例 以