目录结构

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

相关文章:

  • 2022-12-23
  • 2021-11-27
  • 2022-12-23
  • 2021-11-30
  • 2022-01-01
  • 2021-12-29
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-01-08
  • 2022-12-23
  • 2022-12-23
  • 2021-10-09
  • 2021-12-19
  • 2022-12-23
  • 2021-12-20
相关资源
相似解决方案