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( ...
随机推荐
- centos7系统下,配置学校客户端网络记录
存在的情况 1.学校的网络客户端绑定了个人的电脑MAC地址.绑定了IP地址. 2.我有两台笔记本,一台用了4年多,想用这台(B)直接装centos7系统,然后新买的笔记本(A)做为经常用的,系统为wi ...
- linq转载
在说LINQ之前必须先说说几个重要的C#语言特性 一:与LINQ有关的语言特性 1.隐式类型 (1)源起 在隐式类型出现之前, 我们在声明一个变量的时候, 总是要为一个变量指定他的类型 甚至在fore ...
- java之LinkedList详细介绍
1 LinkedList介绍 LinkedList简介 LinkedList 是一个继承于AbstractSequentialList的双向链表.它也可以被当作堆栈.队列或双端队列进行操作.Linke ...
- web API简介(一):API,Ajax和Fetch
概述 今天逛MDN,无意中看到了web API简介,觉得挺有意思的,就认真读了一下. 下面是我在读的时候对感兴趣的东西的总结,供自己开发时参考,相信对其他人也有用. 什么是API API (Appli ...
- python中匿名函数lambda
简单来说,编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命 名一个函数的场合下使用,也就是指匿名函数. 先看它的几个用法: map( lambda x: x*x, [y f ...
- iOS开发笔记(Swift)-通用App安装引导页的实现
之前一直做的项目都是基于OC开发的,最近开始尝试使用Swift语言来重写整个项目. 本篇文章主要是讲述如何使用Swift来实现常见的通用App安装引导界面. 效果预览: 实现思路: 主要是采用了UIS ...
- win10 + gtx1060 + cuda8.0 + caffe + vs2013 + Tensorflow + PyTorch
一. 安装cuda8.0 1)先去官网下载cuda8.0 https://developer.nvidia.com/cuda-toolkit 2)下载完之后进行安装,安装时间有点长,请耐心等待,默认 ...
- python之使用PIL模块制作随机验证码
制作随机验证码,需要如下知识点: 1.随机验证码的制作(这里用的是random模块随机产生字符) 2.图片的制作 3.随机直线干扰项 4.其他随机干扰项 代码如下: from PIL import I ...
- 如何在Mac下配置Github和Bitbucket的SSH
--- title: 如何在Mac下配置Github和Bitbucket的SSH date: 2017-12-23 21:10:30 tags: - Mac - Git - Github catego ...
- Google Optimization Tools实现加工车间任务规划【Python版】
上一篇介绍了<使用.NET Core与Google Optimization Tools实现加工车间任务规划>,这次将Google官方文档python实现的版本的完整源码献出来,以满足喜爱 ...