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 pymysqldef get_conn(): conn = pymysql.connect(host="119.23.27.100", port=3306, user='tester', password="codessp", database="develop", cursorclass=pymysql.cursors.DictCursor) return conndef 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 resultif __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' )