12.4.3 注册

用户注册和登录比较类似,首先是一个html文件register.html:
<!DOCTYPE html>
<html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>
    注册
    </title>
    </head>
    <body>
        <form action="/postRegister" method="post">
        用户名
        <input type="text" name="username"/>
        <br/>
        密码
        <input type="password" name="psw"/>
        <br/>
        确认密码
        <input type="password" name="psw2"/>
        <br/>
        昵称
        <input type="text" name="nickname"/>
        <br/>
        <input type="submit" value="提交"/>
        </form>
    </body>
</html>
这是一个纯html文件,没有任何参数,首先要呈现这个网页,要在app.py添加处理函数:
@app 
.route('/register')
def register():
    return render_template("register.html")
启动后尝试访问http://127.0.0.1:5000/register
填入数据后提交将提交到/postRegister,这个需要在app.py中添加处理函数,这里是post方式提交,处理也是post方式:
@app .route('/postRegister', methods=['post'])
def postRegister():
    username = request.form.get('username')
    password = request.form.get('psw')
    password2 = request.form.get('psw2')
    nickname = request.form.get("nickname")
    if password != password2:
        response = make_response("两个密码不一致")
        return response
    
    sql.insert_user(username, password, nickname)
    response = make_response("注册成功")
    return response
post提交的数据,服务器端取出数据需要用request.form.get
简单对比两个密码后就调用数据库的插入函数insert_user,此函数位于sql.py,代码如下:
def insert_user(username, password, nickname):
    conn = get_conn()
    cursor = conn.cursor()
    t = int(time.time())
    timeStruct = time.localtime(t)
    createDate = time.strftime("%Y-%m-%d %H:%M:%S", timeStruct)
    sql = "insert into `user`(`username`,`password`,`nickname`,`create_date`) values (%s,%s,%s,%s)"
    cursor.execute(sql, (username, password, nickname, createDate))
    conn.commit() #提交执行sql事务,在insert、delete、update中需要
    conn.close() #关闭连接
    return