from flaskr.views import bp
from flask import (
flash, redirect, render_template, request, url_for
)
from flaskr.biz import user_service
# @bp.route 关联了URL /register和register视图函数。当Flask收到一个指向
# /auth/register的请求时就会调用register视图并把其返回值作为响应
@bp.route('/register', methods=('GET', 'POST'))
def register():
# 如果用户提交了表单,那么request.method将会是'POST'。这种情况下就会开始
# 验证用户的输入内容。
if request.method == 'POST':
# request.form是一个特殊类型的dict,其映射了提交表单的键和值。
# 表单中,用户将会输入其 username 和 password 。
username = request.form['username']
password = request.form['password']
error = None
if not username:
error = '用户名必填'
elif not password:
error = '密码必填'
elif user_service.query_user_by_username(username, password) is not None:
error = '用户名 {} 已经被注册'.format(username)
if error is None:
user_service.insert_user(username, password)
# 用户数据保存后将转到登录页面,url_for()根据登录视图的名称生成相应的URL
# 与写固定的URL相比,这样做的好处是如果以后需要修改该试图相应的URL,那么不用修改所有涉及到 URL 的代码。
# redirect() 为生成的 URL 生成一个重定向响应。
return redirect(url_for('auth.login'))
flash(error)
return render_template('auth/register.html')