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"></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"></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"></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"></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=" 注 册 ">
{% 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)

浙公网安备 33010602011771号