13.3 登录的改进

上一节的登录成功的json如下:
{
    "code":"200",
    "info":"",
    "data":{
        "course":"1",
        "user":{
            "username":"abc",
            "role":"9",
            "nickname":"java",
            "createDate":"2020-09-16 16:44:32",
            "isValid":"1",
            "wxOpenid":"otByv5rZF8zHch3HI5FVZ5dCw8CY"
        },
        "url":"main"
    }
}
为了方便起见,最方便的做法,就是查询数据库的时候,就返回json的格式,而恰好字典就是json格式,下面是修改后的pymysql.py,第6行代码cursorclass=pymysql.cursors.DictCursor设定返回类型是字典:
import pymysql
def get_conn():
    conn = pymysql.connect(host="119.23.27.100", port=3306, user='tester', password="codessp", database="develop",
                           cursorclass=pymysql.cursors.DictCursor)
    return conn
def find_user(username):
    conn = get_conn()
    cursor = conn.cursor()
    sql1 = "select * from user where username=%s"
    cursor.execute(sql1, username)
    result = cursor.fetchone()
    conn.close()  # 关闭连接
    return result
if __name__ == '__main__':
    # 测试
    res = find_user("abcd")
    print(res)
于是应答登录的函数在app.py中,可能是这样构建json的:
@app .route('/login', methods=['Post'])
def login():
    #前面省略
    #如果账号和密码匹配:
    #删掉密码,防止一起发送到网页泄露
    del user['password'
    data = {
        "code""200",
        "info""",
        "data": {
            "course""1",
            "user": user,
            "url""main"
        }
    }
    #密码错误和用户不存在的处理自行补充
    return Response(
        json.dumps(data, ensure_ascii=False),  # 关键参数,防止中文乱码
        mimetype='application/json'
    )