lee: atm三层结构/加密加盐/登录装饰器
1\用户视图层 -> 逻辑处理层 ->数据处理层,不能越级处理问题.
2\core--src.py
创建功能字典--func_dic
def run():while True:打印功能字典列表
if choice in func_dic 则开始执行各个功能函数
定义各个功能函数,def register():pass
定义login_user = None,写完登录函数后,global = login_user/ = username
3\根目录 start.py
import os sys from core import src
设置sys.path.append(os.path.dirname(file))环境变量
main--->src.run()
4\conf--settings设置BASE_PATH USER_DATA_PATH常量
5\db--handler写def select(username)取出字典
def save(user_dic) 按字典格式保存
6\lib--commcon公共方法
密码加密加盐
# 密码加密加盐
import hashlib
def get_pwd_md5(password):
m = hashlib.md5()
m.update(password.encode('utf-8'))
salt = '12345.md5'
m.update(salt.encode("utf-8'))
res = m.hexdigest()
return res
登录认证装饰器:
# 登录认证装饰器:
def log_auth(func):
from *modul import *.py # 导入主程序,login_user = ""的文件
def inner(*args, **kwargs):
if *.py.global_login_user != "":
res = func(*args, **kwargs)
return res
else:
*.py.login()
return inner
装饰器的功能:
1\调原函数:--首先要在装饰器里面执行一遍原来的程序.
2\增加新功能:--语法糖下边的程序就不执行了.去执行装饰器,执行装饰器后, 在原程序的前或后,加上新的功能. e.g. 登录认证,就是典型的装饰器,只要点击任何功能,先由装饰器检测login_user="",只要为空,那就重新执行login().