提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
经过了差不多两个月时间,断断续续的学习,让我对Flask又更加深入的了解了一点点,话不多说,上实例《点击进入上一篇文章》
—
name = get_data.get('user')
password = get_data.get('password')
return_dict = {}
if name is None:
return_dict['return_code'] = '404'
return_dict['return_info'] = '请求错误'
return json.dumps(return_dict, ensure_ascii=False)
elif password is None:
return_dict['return_code'] = '404'
return_dict['return_info'] = '请求错误'
return json.dumps(return_dict, ensure_ascii=False)
elif len(request.args) == 0:
return_dict['return_code'] = '403'
return_dict['return_info'] = '参数请求为空'
return json.dumps(return_dict, ensure_ascii=False)
elif len(request.args) > 2:
return_dict['return_code'] = '404'
return_dict['return_info'] = '请求错误'
return json.dumps(return_dict, ensure_ascii=False)
if len(request.args) == 2:
return_dict = {'return_code': '200', 'return_info': '处理成功',
'result': "用户 %s 登录成功" % name,
"login_time": datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
"token": token(),
"data": Select_Sql().api_select(name, password)
}
now_token = return_dict["token"]
Inset_Sql().token_data(now_token, name)
# initialization_token(name) # TODO 定时清空TOKEN
if return_dict["data"] == {"code": 402, "result": "账号或密码错误"}:
return {"code": 402, "result": "账号或密码错误"}
return json.dumps(return_dict, ensure_ascii=False)
else:
return jsonify({"code": 500, "result": "服务器错误"})
对比上一次登录接口进行了更严谨的判断,以及数据库判断,以及登录后会生成一个token,通过user和token来判断是不是同一个用户
def api_select(self, user, psd):
"""登录"""
md5_psd = global_setting.Md5_token(psd)
self.cursor.execute(
"select * from users where user = '{}' and md5password = '{}'".format(user, md5_psd))
cur_data = self.cursor.fetchall()
if len(cur_data) == 0:
return {"code": 402, "result": "账号或密码错误"}
if cur_data is not None:
sql_data = cur_data[0]
values = sql_data["user"]
values1 = sql_data["md5password"]
if user == values and md5_psd == values1:
self.cursor.execute(
"select news.name,users.uid, users.phone,news.age,news.sex, news.character "
"from users INNER JOIN news on users.user = %s where users.uid = news.uid",
user)
relust = self.cursor.fetchall()
relust = relust[0]
return relust
else:
return {"code": "402", "result": "账号或密码错误"}
def token_data(self, token, user):
"""储存token"""
try:
self.cursor.execute("update users inner join news on users.uid = news.uid "
"set users.token = %s,news.token = %s where user = %s ", (token, token, user))
self.connect.commit()
except Exception as e:
return e
finally:
self.cursor.close()
self.connect.close()
至于我数据库为啥不用flask_sqlalchemy.SQLAlchemy 原因是我太久没看代码的话SQLAlchemy 容易忘记看不懂写的啥了
2.下一步计划
1.我在想怎么样用定时器去给token做定时删除
2.对文件和图片进行上传
3.优化数据库的表关联
总结
没有很系统的去学,只能用平时零散的时间去研究,根基太差,自学进度好慢啊