Flask wtforms实现简单的登录注册
目录结构

视图
# -*- coding:utf-8 -*-
# Author : Niuli
# Data : 2019-02-27 19:26 from flask import render_template
from flask import request
from flask import session
from flask import views
from flask import Blueprint
from wtforms import Form,validators,widgets
from wtforms.fields import simple,core user_bp = Blueprint('user_bp',__name__) #
class User(views.MethodView): def get(self):
return 'hello' user_bp.add_url_rule('/', view_func=User.as_view(name='index')) class LoginForm(Form):
username = simple.StringField(
label='用户名:',
validators=[
validators.DataRequired(message='用户名不能为空'),
validators.Length(min=4,max=8,message='用户名不符合规定(大于4位且小于8位)'),
]
) password = simple.PasswordField(
label='密码:',
validators=[
validators.Length(min=3,max=8,message='密码不能小于3位或大于8位'),
validators.DataRequired(message='密码不能为空!')
]
) class Login(views.MethodView): def get(self):
login_form = LoginForm()
return render_template('login.html', loginform=login_form) def post(self):
# 校验
user_info = LoginForm(request.form)
# 如果校验成功
if user_info.validate():
session['user'] = user_info.data.get('username')
return str(session['user']) return render_template('login.html',loginform=user_info) user_bp.add_url_rule('/login', view_func=Login.as_view(name='login')) class RegForm(Form): username = simple.StringField(
label='用户名: ',
validators=[
validators.DataRequired(message='用户名不能为空'),
],
render_kw={'class': 'my_class'} # 更改标签class
) pwd = simple.PasswordField(
label='密码: ',
validators=[
validators.DataRequired(message='密码不能为空'),
validators.Length(min=4,max=8)
]
) repwd = simple.PasswordField(
label='确认密码: ',
validators=[
validators.EqualTo('pwd',message='两次密码不一致')
]
) gender = core.SelectField(
label='性别: ',
choices=(
(1,'男'),
(2,'女')
),
default=1,
coerce=int
) email = simple.StringField(
label='邮箱: ',
validators=[
validators.Email(message='邮箱格式有误!')
]
) hobby = core.SelectMultipleField(
label='爱好: ',
choices=(
(1,'吃'),
(2,'喝'),
(3,'玩'),
(4,'乐')
),
coerce=int,
default=(1,2)
) class Regist(views.MethodView): def get(self):
reg_info = RegForm()
print('*'*88)
return render_template('reg.html',re=reg_info) def post(self):
reg_info = RegForm(request.form)
if reg_info.validate():
return '注册成功!' return render_template('reg.html',re=reg_info) user_bp.add_url_rule('/reg',view_func=Regist.as_view(name='reg'))
users
模板
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta http-equiv="content-Type" charset="UTF-8">
<meta http-equiv="x-ua-compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1"> <title>Title</title> </head>
<body> <div id="app"> <form action="" method="post" novalidate>
<p>{{ loginform.username.label }}{{ loginform.username }}{{ loginform.username.errors[0] }}</p> <p>{{ loginform.password.label }}{{ loginform.password }}{{ loginform.password.errors.0 }}</p>
<button>18Flask wtforms实现简单的登录注册的更多相关文章
- Angular之简单的登录注册
使用Angular实现了一个简单的登录注册的功能........ 涉及到的Angular知识点很少 主要是这个功能的实现...(*^__^*) 嘻嘻…… 里面涉及到的知识点记录: 1.本地存储的操作 ...
- Python 实现简单的登录注册界面
Python 实现简单的登录注册界面 注意:编写代码之前需要导入很重要的包 import tkinter as tk import pickle from tkinter import message ...
- 7. Swift 基于Xmpp和openfire实现一个简单的登录注册
1. 基本步骤:首先导入Xmpp框架,配置环境 ->由于我们使用的是OC的Xmpp框架,再进行Swift开发时需要进行桥接. 具体方法就是创建一个基于c的.h的头文件,然后将我们需要编译OC的语 ...
- node.js实现简单的登录注册页面
首先需要新建四个文件 一个服务器js 一个保存数据的txt 一个登陆.一个注册页面html 1.注册页面 <!DOCTYPE html> <html lang="en&qu ...
- spring boot1.1 idea + springboot + mybatis(mybatis-generator) +mysql +html实现简单的登录注册
前言 这两年springboot比较火,而我平时的工作中不怎么使用spring boot,所以工作之余就自己写写项目练练手,也跟大家一起学习. 打算从最开始的搭架子,登录注册,到后台管理的增删改查,业 ...
- go语言实现一个简单的登录注册web小程序
最近学习golang也有一段时间了,基础差不多学了个大概,因为本人是java程序员,所以对web更感兴趣.根据<go web编程>中的例子改编一个更简单的例子,供新手参考,废话不多说,上菜 ...
- Python简单的登录注册代码
#-*- coding: utf-8 -*- import hashlib # 定义数据库(声明字典) #注册登录的简单hash处理 db={} def get_md5(password): md5= ...
- PHP 链接数据库1(连接数据库&简单的登录注册)
对 解析变量的理解 数据库的名称和表的名称不能重复 从结果中取出的数据 都是以数组的形式取出的 1.PHP查询数据库中的某条信息 //PHP链接数据库 /*1.造链接对象 IP地址 用户名 密码 ...
- java web 简单的登录注册
--sql文件 create database studentgouse studentgocreate table stuinfo(--stuid int primary key identity( ...
随机推荐
- 通过MFC设计一个简单的计价程序
1.实验目的 掌握使用MFC应用程序向导创建应用程序的方法. 掌握新建对话框资源的方法. 掌握生成对话框的方法. 2.实验内容 用应用程序创建一个默认的对话框应用程序,在对话框中能进入下一个对话框,在 ...
- 2019-4-25 html学习笔记
一.概念 文本 用于储存和记录文字信息的载体 html 超文本标记语言(本质就是给文本增加语义 如<h1></h1>就是给文字添加一级标题的语义) 注:互联网三大基石 有 ...
- 二进制加法Java实现
二进制整数的Java实现 任意两个二进制数(不论在什么位置)相加,只可能出现4种情况.它们是: 0+0=0 1+0=0+1=1 1+1=10=0+向高一位的进位1 1+1+1=11=1+向高一位的进位 ...
- Java 中 & | ^ 运算符的简单使用
背景 今天碰到了代码中的按位与运算,复习一下,先列一个各个进制数据表. 顺便复习一下十进制转二进制的计算方式: 接下来解释下这三个运算符: & 按位与,都转为二进制的情况下,同为1则为1,否则 ...
- Typescript 学习笔记三:函数
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- 简介 - RESTful
RESTful REST(Representational State Transfer,表现层状态转化),可以简单理解为"资源在网络中以某种表现形式进行状态转移" Resourc ...
- Spring Boot Tomcat配置详解
参数配置容器 server.xx开头的是所有servlet容器通用的配置,server.tomcat.xx开头的是tomcat特有的参数,其它类似. 所有参数绑定配置类:org.springframe ...
- 记Booking.com iOS开发岗位线上笔试
今晚参加了Booking的iOS职位线上笔试,结束后方能简单归纳一下. 关于测试内容: Booking采用了HackerRank作为测试平台,测试总时长为75分钟,总计4道题. 测试之前我很紧张,因为 ...
- Screen会话命令 Linux
由于经常在服务器上运行程序,本地不可能一直和服务器保持连接,而且如果本地和服务器的连接断开,在服务器上运行的程序将会终止,为了,查找了一些网络资料,发现screen 会话命令可以保持本地和服务器断开后 ...
- 第二章 微服务构建:Spring Boot
此处介绍Spring Boot的目的除了它是Spring Cloud的基础外,也由于其自身的各项优点,如自动化配置.快速开发.轻松部署等,非常适合用作微服务架构中各项具体微服务的开发框架. 本章内容: ...