Day25.登录功能
1.登录功能_用户视图层(src.py)和逻辑接口层(user_interface.py)
src.py视图层登录功能代码:
# 全局变量,记录用户是否已登录 login_user = None # 2. 登录功能 def login(): while True: # 1) 用户输入用户名和密码 username = input('请输入用户名:').strip() password = input('请输入密码:').strip() # 2) 调用接口层,将数据传给登录接口 # 结果1:(True, '用户:[{}] 登录成功'.format(username)) # 结果2:(return False, '密码错误') # 结果3:(False, '用户不存在,请重新输入') flag, msg = user_interface.login_interface( username, password ) # 如果是flag是True直接打印msg,终止程序 if flag: print(msg) # 全局赋值一个login_user=None,登录成功后,login_user赋值为当前的username,代表已登录状态 global login_user login_user = username break else: print(msg) print('登陆状态(None/username):{}'.format(login_user))
2.登录功能_逻辑接口层(user_interface.py)和数据处理层(db_handler.py)
user_interface.py登录逻辑接口代码:
# 登录接口 def login_interface(username, password): # 1) 先查看当前用户数据是否存在 # {用户数据字典} or None user_dic = db_handler.select(username) # 用于判断用户是否存在 # 2) 判断用户是否存在 if user_dic: # 3) 校验密码是否一致 if password == user_dic.get('password'): # 结果1: return True, '用户:[{}] 登陆成功!'.format(username) else: # 结果2: return False, '密码错误' # 结果3: return False, '用户不存在,请重新输入!'
db_handler.py中查询数据库代码:
import os from ATM.conf import settings import json # 查看数据 def select(username): # 1) 接收接口层传过来的username用户名,拼接用户json文件路径 user_path = os.path.join( settings.USER_DATA_PATH, '{}.json'.format(username) ) # 2) 校验用户json文件是否存在 if os.path.exists(user_path): # 3) 打开数据,并返回分接口层 with open(user_path, 'r', encoding='utf-8') as f: user_dic = json.load(f) return user_dic # 3) 不return, 默认return None
3.登录功能_程序运行结果