码迷,mamicode.com
首页 > 其他好文 > 详细

模拟论坛登录

时间:2020-04-22 16:46:21      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:rgs   strip()   成功   状态   common   rom   set   art   path   

结构

技术图片

 

 starts.py

# Author:Winter Liu is coming!
# 启动文件
import os
import sys
import json

BASE_PATH = os.path.dirname(os.path.dirname(__file__))
sys.path.append(BASE_PATH)

from conf import settings
from core import src

# 创建用户登录信息文件
with open(settings.STATUS_PATH, "w") as fp:
    json.dump({"status": False, "username": "", "userpwd": ""}, fp)

# 监测用户信息文件是否存在,不存在则使用json模式创建一个
if not os.path.exists(settings.USER_PATH):
    with open(settings.USER_PATH, "w") as fp:
        json.dump({}, fp)

# 只能本模块启动
if __name__ == __main__:
    src.start()

settings.py

import os

BASE_PATH = os.path.dirname(os.path.dirname(__file__))
STATUS_PATH = BASE_PATH + "/" + "db" + "/" + "status"
USER_PATH = BASE_PATH+"/"+"db"+"/"+"user_data"

src.py

# Author:Winter Liu is coming!
# 主逻辑
import json
from lib import common
from conf import settings


def start():
    while True:
        print("""请输入数字1-8:
        1. #### 登录
        2. #### 注册账号
        3. #### 文章
        4. #### 评论
        5. #### 日记
        6. #### 收藏
        7. #### 注销
        8. #### 退出""")
        choice = input(">>>").strip()
        if choice == "1":
            login()
        elif choice == "2":
            register()
        elif choice == 3:
            article()
        elif choice == 4:
            comment()
        elif choice == 5:
            diary()
        elif choice == "6":
            favorite()
        elif choice == "7":
            log_out()
        elif choice == 8:
            break


@common.auth
def login():
    pass


def register():
    with open(settings.USER_PATH, "r") as f:
        data = json.load(f)
    while True:
        print("开始注册,用户名由数字和字母组成,密码长度为6—14位!")
        username = input("请输入用户名:").strip()
        if not username.isalnum():
            continue
        if username in data:
            print("用户名已存在!")
            continue
        userpwd = input("请输入密码:").strip()
        if len(userpwd) < 4 or 14 < len(userpwd):
            continue
        print("用户加入前:", data)
        data[username] = userpwd
        print("用户加入后:", data)
        # 注意,重写用户文件
        with open(settings.USER_PATH, "w") as f:
            json.dump(data, f)
        break
    f.close()

    print("注册完成")


@common.auth
def article():
    print("欢迎访问文章页面!")

@common.auth
def comment():
    print("欢迎访问评论页面!")

@common.auth
def diary():
    print("欢迎访问日记页面!")

@common.auth
def favorite():
    print("欢迎访问收藏页面!")

def log_out():
    with open(settings.STATUS_PATH, "w") as fp:
        json.dump({"status": False, "username": "", "userpwd": ""}, fp)
    print("退出登录!")

common.py

# Author:Winter Liu is coming!
import json
from conf import settings


# 装饰器,登录和登录监测,通过文件检测登录状态和用户名正确状况
def auth(f):
    def inner(*arg, **kwargs):
        with open(settings.STATUS_PATH, "r") as fps:
            status_dict = json.load(fps)
        if status_dict["status"]:
            print("已登录")
            ret = f(*arg, **kwargs)
            return ret
        else:
            if user_login():
                ret = f(*arg, **kwargs)
                return ret
            else:
                print("用户名或密码错误三次!")

    return inner


# 登录
def user_login():
    with open(settings.USER_PATH, "r") as fp:
        user_data = json.load(fp)
    for i in range(3):  # 三次输入限制
        username = input("请输入用户名:").strip()
        userpwd = input("请输入密码:").strip()
        if username in user_data and user_data[username] == userpwd:
            print("登录成功")
            status_dict = {"status":True}
            status_dict["username"] = username
            status_dict["userpwd"] = userpwd
            with open(settings.STATUS_PATH, "w") as fp:
                json.dump(status_dict, fp)
            return True
        else:
            print("用户名或者密码错误!")
    else:
        return False

 

模拟论坛登录

标签:rgs   strip()   成功   状态   common   rom   set   art   path   

原文地址:https://www.cnblogs.com/nmucomputer/p/12752581.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!