#flask的消息闪现依赖于flash库,用户发送的请求方式存储在request模块中
#跳转依赖于redirect模块,还可以通过url_for方法来进行方法上的寻址
from flask import Flask,flash,render_template,request,session,redirect,url_for
#导入wtf扩展的表单类
from flask_wtf import FlaskForm
#导入自定义表单需要用到的字段类型
from wtforms import SubmitField,StringField,PasswordField
#新建一个表单类
class RegisterForm(FlaskForm):
username = StringField('用户名')
password = PasswordField('密码')
password1 = PasswordField('确认密码')
submit = SubmitField('注册')
#建立对象
app = Flask(__name__)
#载入配置文件
app.config.from_pyfile('config.ini')
#登陆成功后跳转的页面
@app.route("/hello")
def hello():
return ' hello 欢迎 %s ' % session['username']
 
#指定请求方式,使用methods属性
@app.route('/',methods=['GET','POST'])
def index():
#判断client发送的请求类型
#自己请求自己的逻辑中,GET只用来解析模板,而POST用来判断数据逻辑
if request.method == "POST":
#使用form属性来接收表单提交过来的数据
username = request.form.get("username")
password = request.form.get("password")
password1 = request.form.get("password1")
 
#判断数据是否同时存在
#等同于 if username == '' or password == '' or password1 == ''
if not all([username,password,password1]):
#利用闪现消息来提醒用户
flash("参数不足")
elif password != password1:
flash("两次密码不一致")
else:
#模拟登录 将用户名和密码存到session中
session['username'] = username
session['password'] = password
flash("注册成功")
#第一种直接跳转网址
#return redirect('http://localhost:5000/hello')
#第二种通过url_for方法跳转
return redirect(url_for(hello))
#将定义好的表单类传递给模板,进行方法化设置
return render_template('day04_wtform.html',form=RegisterForm())
if __name__ == "__main__":
app.run()
 
 
模板页(day04_wtform.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>wtfrom</title>
</head>
<body>
<form method='POST'>
{#所有通过调用出来的值必须要和后台表单类定义的变量一致#}
{{ form.username.label}}:{{form.username}}
{{ form.password.label}}:{{form.password}}
{{ form.password1.label}}:{{form.password1}}
{# 将flash消息闪现和后台联系起来 #}
{# 将消息闪现里面的所有消息遍历,取出需要返回给用户的信息 #}
{% for message in get_flashed_messages() %}
{{message}}
{%endfor%}
{{form.submit}}
</form>
</body>
</html>

flask之表单验证 2018.12.23的更多相关文章

  1. flask提交表单验证不通过,以及CSRF攻击原理

    学习表单的问题1. 提交表单时怎么都无法验证通过 记录一下,自己的学习bug,主要是因为在模板中书写渲染的语句时,把CSRF的字段名写错了. 因为在模板中书写一些语句是没有提示的,自己手动敲代码容易出 ...

  2. flask 后台表单验证模块

    我不想直接用flask的wtf模块,太大,功能太多,用不了.但后台也不能不做验证吧,我比较懒,不想一行一行写代码验证,所以就写了一个验证模块,对于小项目也够用了 # encoding=utf-8 # ...

  3. flask form表单验证

    新建forms.py文件 #!/usr/bin/env python #-*-coding:utf--*- #导入模块 from flask_wtf import FlaskForm #FlaskFo ...

  4. flask web 表单验证 WTForms

    简介 WTForms 是一个flask集成框架,或者说是库,用于处理浏览器表单提交的数据,它在flask-WTF的基础上扩展并添加了一些随手可得的精巧帮助函数,这些函数将会是在flask里使用表单更加 ...

  5. Flask wtforms 表单验证使用

    目录 wtforms 使用1(简单版): 使用2(复杂版): wtforms 安装:pip3 install wtforms 使用1(简单版): from flask import Flask, re ...

  6. JS表单验证-12个常用的JS表单验证

    JS表单验证-12个常用的JS表单验证 最近有个项目用到了表单验证,小编在项目完结后的这段时间把常用的JS表单验证demo整理了一下,和大家一起分享~~~ 1. 长度限制 <p>1. 长度 ...

  7. flask框架(八)—自定义命令flask-script、多app应用、wtforms表单验证、SQLAIchemy

    自定义命令flask-script 用于实现类似于django中 python3 manage.py runserver ...类似的命令,用命令行启动项目 首先安装:pip3 install fla ...

  8. JavaScript---网络编程(12)--DHTML技术演示(5)-form表单验证技术(正则)

    这里不进行很复杂的后台验证以及JavaScript的正则表达式,只是简单的介绍下这个技术,简单的后台接收与跳转,大概了解怎么验证的就可以.具体的技术,我后面还会继续写博客的.本人也还在学习中. 表单验 ...

  9. 2018.7.6 js实现点击事件---点击小图出现大图---时间定时器----注册表单验证

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. str.split()与re.split()的区别

    str.split(): >>>'hello, world'.split() >>>['hello,','world'] >>>'hello, w ...

  2. 转载linux性能调优工具

    Linux 大牛,Netflix 高级性能架构师 Brendan Gregg 更新 Linux 性能调优工具,各种资源应有尽有,大量干货,强烈建议收藏.

  3. composer 更新指定包

    1)网上搜了大半天都不知道怎么更新 componser 包,update upgrade 命令根本不知道怎么用!! 2)其实用 require 命令就可以更新包(它会判断包存不存在,不存在就安装,存在 ...

  4. 执行RF设置顶层测试套件的描述说明

    场景1:通过pybot命令更新套件层描述 命令:pybot -D 套件层描述 -D --doc documentation 设置顶层测试套件的描述说明.说明中下划线将转换为空格, 并且他可能包含简单的 ...

  5. 与MQ通讯的完整JAVA程序

    该程序实现了发送消息与读取消息的功能,见其中的 send***与get***方法.这只适合于测试,因为环境中的程序还需要对此有稍微的更改,在真实的环境中肯定是在while(true){...} 的无限 ...

  6. codeforces水题100道 第十九题 Codeforces Round #109 (Div. 2) A. I_love_%username% (brute force)

    题目链接:http://www.codeforces.com/problemset/problem/155/A题意:找到当前最大值或者最小值出现的次数.“当前”的意思差不多是a[i]大于所有a[j]( ...

  7. 【python3】爬取新浪的栏目分类

    目标地址: http://www.sina.com.cn/ 查看源代码,分析: 1 整个分类 在 div main-nav 里边包含 2 分组情况:1,4一组 . 2,3一组 . 5 一组 .6一组 ...

  8. Qt编写输入法终极版V2018

    输入法是很多Qt+嵌入式linux开发的同学的痛,自从5.7自带了输入法后,这个痛终于缓解了不少,不过还有大量的嵌入式linux程序停留在qt4时代,为此特意选择了QWidget来写这个输入法,为了兼 ...

  9. vue案例 - 使用vue实现自定义多选与单选的答题功能

    4月底立得flag,五月底插上小旗,结果拖到六月底七月初才来执行.说什么工作忙都是借口,就是睡的比猪早,起的比猪晚. 本来实现多选单选这个功能,vue组件中在表单方面提供了一个v-model指令,非常 ...

  10. 转载:C/C++关于string.h头文件和string类

    学习C语言时,用字符串的函数例如stpcpy().strcat().strcmp()等,要包含头文件string.h 学习C++后,C++有字符串的标准类string,string类也有很多方法,用s ...