模拟场景如果当用户注册时输入错误而由于form表单是同步提的交跳转到另一个网页时提示注册失败这时用户还需返回注册页面重新填写大大降低了客户体验,消息闪现能伪装成异步(实际还是同步)就是自己提交给自己然后进行验证的,大大提高了用户体验。

普通form:

  py文件

#flask的消息闪现依赖于flask库,用户发送的请求方式存储在request模块中
from flask import Flask,flash,render_template,request,session,redirect
#跳转依赖于redirect模块 app = Flask(__name__) app.config.from_pyfile('config.ini') #登陆成功后跳转
@app.route('/heloo')
def hello():
return "hello 欢迎 %s" %session['name'] #指定请求方式,methods属性
@app.route('/',methods=['GET','POST'])
def index():
#判断client发送的请求类型
#自己请求自己的逻辑中,get只用来解析模板,而post用来判断数据逻辑
if request.method == 'POST':
#使用for属性来接收列表提交过来的数据
username = request.form.get('username')
passwored = request.form.get('password')
passwored1 = request.form.get('password1') #模拟登陆 将用户名密码保存在session
session['name'] = username
session['password'] = passwored #判断数据是否同时存在,判断数据是否为空
if not all([username,passwored,passwored1]):
#利用闪现消息来提醒用户
flash('参数不足')
elif passwored != passwored1:
flash("两次密码不一致")
else:
flash("注册成功")
#第一种直接跳转网址
return redirect('http://127.0.0.1:5000/heloo')
#将定义好的表单类传递给模板,进行方法设置
return render_template('day4_wtform.html',form = RegistefForm()) if __name__ == "__main__":
app.run()

  html文件

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Flask普通表单提交数据,使用flask消息闪现来将反馈显示给用户</title>
</head>
<body>
<h1>用户注册</h1><br><br>
{# action属性,如果不写,默认提交给自己,method属性,指定该表单的提交方式 #}
<form method="POST">
<label for="">用户名</label>
<input type="text" name="username" placeholder="用户名">
<br>
<label for="">密码</label>
<input type="password" name="password">
<br>
<label for="">确认密码</label>
<input type="password" name="password1">
<br> {# 将flash消息闪现和后台联系起来 #}
{# 将消息闪现里面的所有消息遍历,取出需要返回给用户信息 #}
{% for message in get_flashed_messages() %}
{{message}}
{% endfor %} <input type="submit" value="注册">
</form>
</body>
</html>

 flask form扩展wtforms库

  py文件:

#flask的消息闪现依赖于flask库,用户发送的请求方式存储在request模块中,跳转依赖于redirect模块,render_template模板模块,session
from flask import Flask,render_template,request,flash,session,redirect
#导入wtf扩展的表单类
from flask_wtf import FlaskForm
#导入需要的字段
from wtforms import SubmitField,StringField,PasswordField app = Flask(__name__) app.config.from_pyfile('config.ini')
#定义一个类
class my_from(FlaskForm):
#写好需要的form内需要的属性
username = StringField('用户名')
password = PasswordField('密码')
password1 = PasswordField('确认密码')
submit = SubmitField('注册')
#注册成功跳转的页面
@app.route('/showlogin')
def indexx():
#给模板传入参数
return render_template('day4练习2.html',username = session['username'],password = session['password']) #指定请求方式,methods属性
@app.route('/',methods=['POST','GET'])
def index():
#判断请求
if request.method == 'POST':
# 获取form表单数据
username = request.form.get('username')
password = request.form.get('password')
password1 = request.form.get('password1')
#判断数据是否为空
if not all([username,password,password1]):
flash('信息部完整')
#判断两次密码是否一致
elif password != password1:
flash('两次密码不一致') else:
# 成功后给session加入数据
session['username'] = username
session['password'] = password
flash('注册成功')
#跳转页面
return redirect('/showlogin')
#导入模板和定义wtform属性的整个类
return render_template('day4练习.html',my_from = my_from()) if __name__ == "__main__":
app.run()

  html文件:

  wtform库数据的传入

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
   #指定请求方式 
<form method="POST">
{{my_from.username.label}}:{{my_from.username}}<br>
{{my_from.password.label}}:{{my_from.password}}<br>
{{my_from.password1.label}}:{{my_from.password1}}<br>
{% for i in get_flashed_messages() %}
{{i}}
{% endfor %}
{{my_from.submit}}
</form>
</body>
</html>

  显示注册好的账号和密码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
用户名:{{username}}<br>
密码:{{password}}
</body>
</html>

Flask form前后端交互消息闪现的更多相关文章

  1. 编写一个简单的flask的前后端交互的网页(flask简单知识的讲解)

    实验原理: 1.什么是flask Flask是一个使用Python编写的轻量级Web应用框架,其WSGI工具采用Werkzeng,模板引擎使用Jinja2.Flask与 Django之间的区别就是Dj ...

  2. 类Flask实现前后端交互之代码聊天室

    前言 框架 项目目录及各自功能 流程图 后端 server backend exector 前端 ajax 页面更新 演示 简易应答模式 代理模式处理外部请求 后台日志 总结 前言 这两天老是做梦,全 ...

  3. Flask + vue 前后端分离的 二手书App

    一个Flask + vue 前后端分离的 二手书App 效果展示: https://blog.csdn.net/qq_42239520/article/details/88534955 所用技术清单 ...

  4. ajax学习----json,前后端交互,ajax

    json <script> var obj = {"name": "xiaopo","age": 18,"gender ...

  5. content-type常见类型辨析(以ajax与springmvc前后端交互为例)

    博客搬家: content-type常见类型辨析(以ajax与springmvc前后端交互为例) 在http报文的首部中,有一个字段Content-type,表示请求体(entity body)中的数 ...

  6. 三、vue前后端交互(轻松入门vue)

    轻松入门vue系列 Vue前后端交互 六.Vue前后端交互 1. 前后端交互模式 2. Promise的相关概念和用法 Promise基本用法 then参数中的函数返回值 基于Promise处理多个A ...

  7. 2、前端--初见前后端交互、CSS简介、基本选择器、组合选择器、属性选择器、分组与嵌套、伪类选择器

    今日内容概要 初窥后端框架 css简介 css选择器 今日内容详细 初次体验前后端交互 # 代码无需掌握 只看效果即可 """后端框架:可以简单的理解为别人写好的一个非常 ...

  8. springboot+mybatis+thymeleaf项目搭建及前后端交互

    前言 spring boot简化了spring的开发, 开发人员在开发过程中省去了大量的配置, 方便开发人员后期维护. 使用spring boot可以快速的开发出restful风格微服务架构. 本文将 ...

  9. 百度ueditor的图片上传,前后端交互使用

    百度ueditor的使用 一个文本编辑器,看了网上很多文档写的很乱,这里拾人牙慧,整理下怎么使用. 这个东西如果不涉及到图片附件上传,其实很简单,就是几个前端文件,直接引用,然后配置下ueditor. ...

随机推荐

  1. Git使用:Linux(Ubuntu 14.04 x64)下安装Git并配置连接GitHub

    github是一个非常好的网络代码托管仓库,知晓许久,但是一直没有用起来,最近才开始使用git管理自己的文档和代码. Git是非常强大的版本管理工具,今天就告诉大家,如何在Linux下安装GIt,并且 ...

  2. PDO连接mysql数据库加载慢

    今天在使用PDO连接mysql操作数据库的时候,发现速度特别慢,都1~2s的时间,不知道怎么回事,后来一步一步排除到new PDO 导致过慢的原因, 这个尴尬了...,调试了半天都没想到问下度娘,才知 ...

  3. QTP 自动货测试桌面程序-笔记-运行结果中添加截图

    3种方法: 方法1:使用设置:SnapshotReportMode oldMode = Setting("SnapshotReportMode") Setting("Sn ...

  4. Lodop提示安装或升级的注意事项

    LODOP的LodopFuncs.js文件里,自动判断浏览器类型提示下载哪个,根据版本号比较判断提示升级.此文章是以前写的,图示可能过旧,新版提示不同,但是LodopFuncs.js里各个方面变动不大 ...

  5. SSH整合Maven教程

    http://www.cnblogs.com/xdp-gacl/p/4239501.html

  6. JQuery invoke remote webservice

    Sending the Access-Control-Allow-Origin header allows basic cross-origin access, but calling ASP.NET ...

  7. python之旅六【第七篇】面向对象

    面向对象三大特性 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强... 面向对象编程 ...

  8. [Codeforces741D]Arpa's letter-marked tree and Mehrdad's Dokhtar-kosh paths——dsu on tree

    题目链接: Codeforces741D 题目大意:给出一棵树,根为$1$,每条边有一个$a-v$的小写字母,求每个点子树中的一条最长的简单路径使得这条路径上的边上的字母重排后是一个回文串. 显然如果 ...

  9. Spring模块介绍

    GroupId ArtifactId 说明 org.springframework spring-beans Beans 支持,包含 Groovy org.springframework spring ...

  10. 【XSY1098】第k小 可持久化trie

    题目描述 给你一个长度为\(n\)数列\(a\),有\(m\)次操作: \(1~x\):把所有数异或\(x\) \(2~x\):把所有数与\(x\) \(3~x\):把所有数或\(x\) \(4~l~ ...