Day25.拆分版注册功能
1.拆分版注册功能_第一层:用户视图层(src.py)和第二层:逻辑接口层(user_interface.py)

第一层:用户视图层(src.py)_注册功能:
# 注册功能_分层版 def register(): while True: # 1) 让用户输入用户名和密码进行校验 username = input('请输入用户名:').strip() password = input('请输入密码:').strip() re_password = input('请确认输入密码:').strip() # 小逻辑:比如两次密码是否一致 if password == re_password: # 逻辑接口层代码存在:interface/user_interface.py # 2) 调用接口层的注册接口,将用户名和密码交给接口层来进行处理 # res -----> (# return (False, '用户名已存在!')) # res = user_interface.register_interface() # flag, msg -----> (flag ---> False, msg ---> '用户名已存在') # (True, 用户注册成功), (False, 注册失败) from ATM.interface import user_interface flag, msg = user_interface.register_interface(username, password) # 数据处理层代码存在:db/db_handler.py # 3) 根据flag判断用户注册是否成功,flag(True or False)用于控制break if flag: print(msg) break else: print(msg)
第二层:逻辑接口层(user_interface.py)_注册功能:
from ATM.db import db_handler # 注册接口 def register_interface(username, password, balance=15000): # 2) 查看用户是否存在 # 2.1) 调用数据处理层中的select函数,会返回 用户字典 或 None user_dic = db_handler.select(username) # {user:user, pwd:pwd...} or None # 若用户存在,则return,告诉用户重新输入 if user_dic: return False, '用户名已存在!' # 3) 若用户不存在,则保存用户数据 # 3.1) 组织用户数据的字典信息 user_dic = { 'username': username, 'password': password, 'balance': balance, # 余额 'flow': [], # 用于记录用户流水的列表 'shop_car': {}, # 用于记录用户购物车 'locked': False # 用于记录用户是否被冻结,Flase:未冻结,True:已冻结 } # 3.2) 保存数据 db_handler.save(user_dic) return True, '{}注册成功'.format(username)
2.拆分版注册功能_第二层:逻辑接口层(user_interface.py)和第三层:数据处理层(db_handler.py)

第三层:数据处理层(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 # 保存数据 def save(user_dic): # 1) 拼接用户的数据字典 username = user_dic.get('username') user_path = os.path.join( settings.USER_DATA_PATH, '{}.json'.format(username) ) print('user_path:{}'.format(user_path)) # 2) 保存用户数据 with open(user_path, 'w', encoding='utf-8') as f: # ensure_ascii=False 让文件中的中文数据,显示更美观 json.dump(user_dic, f, ensure_ascii=False) print('用户`{}`注册成功'.format(username))
3.拆分版注册功能_程序运行结果:

浙公网安备 33010602011771号