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.登录功能_程序运行结果

 

posted on 2024-06-11 18:08  与太阳肩并肩  阅读(2)  评论(0编辑  收藏  举报

导航