flask(七)注册用户

实现了登录,注册就很简单了
在登录页面放注册的入口:

<div class="row cl">
    <div class="formControls col-xs-8 col-xs-offset-3" style="margin-left: 65%">
        <label for="online">
            <a href="/admin/register/">注册用户</a>
        </label>
    </div>
</div>

添加模板文件register.html

<!DOCTYPE HTML>
<html lang="zh">
<head>
    <meta charset="utf-8">
    <meta name="renderer" content="webkit|ie-comp|ie-stand">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
    <meta http-equiv="Cache-Control" content="no-siteapp" />

    <!--[if lt IE 9]>
    <script type="text/javascript" src="{{url_for('static',filename='lib/html5shiv.js')}}"></script>
    <script type="text/javascript" src="{{url_for('static',filename='lib/respond.min.js')}}"></script>
    <![endif]-->
    <link rel="stylesheet" href="{{url_for('static',filename='static/h-ui/css/H-ui.min.css')}}">
    <link rel="stylesheet" href="{{url_for('static',filename='static/h-ui.admin/css/H-ui.login.css')}}">
    <link rel="stylesheet" href="{{url_for('static',filename='static/h-ui.admin/css/style.css')}}">
    <link rel="stylesheet" href="{{url_for('static',filename='lib/Hui-iconfont/1.0.8/iconfont.css')}}">
    <!--[if IE 6]>
    <script type="text/javascript" src="{{url_for('static',filename='lib/DD_belatedPNG_0.0.8a-min.js')}}"></script>
    <script>DD_belatedPNG.fix('*');</script>
    <![endif]-->

    <title>注册 </title>
    <meta name="keywords" content="后台注册">
    <meta name="description" content="后台注册">
</head>
<body>
<input type="hidden" id="TenantId" name="TenantId" value="" />
<div class="header"></div>
<div class="loginWraper">
    <div id="registerform" class="loginBox" style="height: 360px">
        <form class="form form-horizontal" action="" method="post">
            <div class="row cl">
                <div class="formControls col-xs-8 col-xs-offset-3" style="margin-left: 65%">
                    <label for="online">
                        <a href="/admin/login/">已有账号,去登录</a>
                    </label>
                </div>
            </div>
            <div class="row cl">
                <label class="form-label col-xs-3"><i class="Hui-iconfont">&#xe60d;</i></label>
                <div class="formControls col-xs-8">
                  <input id="username" name="username" type="text" placeholder="用户名" class="input-text size-L">
                </div>
            </div>
            <div class="row cl">
                <label class="form-label col-xs-3"><i class="Hui-iconfont">&#xe60e;</i></label>
                <div class="formControls col-xs-8">
                  <input id="password" name="password" type="password" placeholder="密码" class="input-text size-L">
                </div>
            </div>
            <div class="row cl">
                <label class="form-label col-xs-3"><i class="Hui-iconfont">&#xe60e;</i></label>
                <div class="formControls col-xs-8">
                  <input id="password_confirm" name="password_confirm" type="password" placeholder="确认密码" class="input-text size-L">
                </div>
            </div>
            <div class="row cl">
                <label class="form-label col-xs-3"><i class="Hui-iconfont">&#xe687;</i></label>
                <div class="formControls col-xs-8">
                  <input id="email" name="email" type="text" placeholder="邮箱" class="input-text size-L">
                </div>
            </div>
            <div class="row cl">
                <div class="formControls col-xs-8 col-xs-offset-3">
                  <input name="" type="submit" class="btn btn-success radius size-L" value="&nbsp;注&nbsp;&nbsp;&nbsp;&nbsp;册&nbsp;">
                  {% if  message %}
                    <p style="color:red">{{ message }} </p>
                  {% endif %}
                </div>
            </div>
        </form>

  </div>
</div>
<div class="footer"></div>

<script type="text/javascript" src="{{url_for('static',filename='lib/jquery/1.9.1/jquery.min.js')}}"></script>
<script type="text/javascript" src="{{url_for('static',filename='static/h-ui/js/H-ui.min.js')}}"></script>

</body>
</html>

admin/forms.py添加代码:

class RegisterForm(Form):
    username = StringField(
        label='用户名',
        validators=[
            InputRequired('用户名为必填项'),
            Length(4,20,'用户名长度为4到20')
        ]
    )
    password = StringField(
        label='密码',
        validators=[
            InputRequired('密码为必填项'),
            Length(6,9,'密码长度为6到9')
        ]
    )
    password_confirm = PasswordField(
        label='重复密码',
        validators=[
            InputRequired(message='重复密码不能为空'),
            EqualTo('password', message="两次密码输入不一致")
        ],
    )
    email = EmailField(
        label='邮箱',
        validators=[
            InputRequired(message='邮箱不能为空.'),
            Email(message='邮箱格式错误')
        ],
    )

admin/views.py添加代码:

@bp.route("/register/",methods=['GET','POST'])
def register():
    error = None
    if request.method == 'GET':
        return render_template('admin/register.html')
    else:
        form=RegisterForm(request.form)
        if form.validate():
            user = request.form.get('username')
            pwd = request.form.get('password')
            pwd_c = request.form.get('password_confirm')
            email = request.form.get('email')
            users = Users.query.filter_by(username=user).first()
            emails = Users.query.filter_by(email=email).first()
            if users:
                error = "用户名已存在"
                return render_template('admin/register.html', message=error)
            elif emails:
                error = "邮箱已存在"
                return render_template('admin/register.html', message=error)
            else:
                add_obj = Users(username=user, password=pwd, email=email)  # 增加的内容
                try:
                    db.session.add(add_obj)
                    db.session.commit()
                    return redirect(url_for('admin.index'))
                except Exception as e:
                    error = "注册失败,请重新提交"
                    return render_template('admin/register.html', message=error)
        else:
            return render_template('admin/register.html', message=form.errors)
posted @ 2022-01-24 15:31  、阿红吖  阅读(159)  评论(0)    收藏  举报