首页 > 其他分享 >Day31.管理员登录功能

Day31.管理员登录功能

时间:2024-07-01 15:32:36浏览次数:17  
标签:username obj 登录 admin Day31 管理员 user path todo

1.管理员登录功能_代码导入及执行流程

2.管理员登录功能_视图层admin.py功能

# todo 管理员登录
def login():
    while True:
        admin_username = input('请输入用户名:').strip()
        admin_password = input('请输入密码:').strip()
        # todo 1. 调用管理员登录接口
        flag, msg = admin_interface.admin_login_interface(
            admin_username, admin_password
        )
        if flag:
            # todo 在全局定义字典user_info, 记录当前用户登录状态, 修改其中字典状态
            user_info['user'] = admin_username
            print(admin_username, msg)
            break
        
        else:
            print(msg)

3.管理员登录功能_管理员登录接口admin_interface.py

# todo 管理员登录接口
def admin_login_interface(admin_username, admin_password):
    # todo 1. 判断用户是否存在
    admin_obj = models.Admin.select(admin_username)

    # todo 2. 若不存在,则证明用户不存在并返回给视图层
    if not admin_obj:
        return False, '用户不存在'

    # todo 3. 若存在,则校验密码
    else:
        if admin_password == admin_obj.pwd:
            return True, '用户登录成功'
        else:
            return False, '密码错误'

4.管理员登录功能_models.py存放各种类,其中Admin类调用db_handler.py中的方法

'''用于存放类的
学校类、学员类、课程类、讲师类、管理员类
'''
from db import db_handler


class Admin:
    # todo 调用类的时候触发
    # todo admin_username, admin_password
    def __init__(self, user, pwd):
        self.user = user
        self.pwd = pwd
    
    # todo 定义一个数据保存方法
    def save(self):
        # todo 调用db_handler中的save方法,并且需要对其中的方法做传值,即添加self
        # todo 让db_handler中的save_data进行保存对象数据
        db_handler.save_data(self)

    # todo 定义一个数据查找方法
    @classmethod
    def select(cls, username):      # 接收到Admin和username
        # todo obj: 对象 OR None
        obj = db_handler.select_data(
            cls, username)
        return obj

5.管理员登录功能_db_handler.py存放操作数据保存和查询的功能代码

'''
用于保存对象与获取对象
'''
import os
from conf import settings
import pickle

# todo 保存数据
def save_data(obj):
    # todo 1. 获取对象的保存文件夹路径
    # todo 以类名 当作 文件夹的名字
    # todo obj.__class__:获取当前对象的类,即models.py中调用该方法的类
    # todo obj.__class__.__name__:获取当前类的名字,即models.py中调用该方法的类名
    class_name = obj.__class__.__name__
    user_dir_path = os.path.join(
        settings.DB_PATH, class_name
    )
    
    # todo 2.判断文件夹是否存在,不存在则创建文件夹
    if not os.path.exists(user_dir_path):
        os.mkdir(user_dir_path)

    # todo 3.拼接当前用户的pickle文件路径,以用户作为文件名
    user_path = os.path.join(
        user_dir_path, obj.user     # 当前用户名字
    )

    # todo 4.打开文件,保存对象,通过pickle
    with open(user_path, 'wb') as f:
        pickle.dump(obj, f)
    
# todo 查看数据
def select_data(cls, username):  # 拿到models.py中刚传过来的类名(即文件夹名称)和username,
    # todo 有cls获取类名
    class_name = cls.__name__
    user_dir_path = os.path.join(
        settings.DB_PATH, class_name
    )
    # todo 2.判断文件夹是否存在,不存在则创建文件夹
    if not os.path.exists(user_dir_path):
        os.mkdir(user_dir_path)

    # todo 3.拼接当前用户的pickle文件路径,以用户作为文件名
    user_path = os.path.join(
        user_dir_path, username     # 当前用户名字
    )

    # todo 4.判断文件如果存在,再打开,并返回,若不存在,则代表用户不存在
    if os.path.exists(user_path):
        # todo 5.打开文件,获取对象
        with open(user_path, 'rb') as f:
            obj = pickle.load(f)
            return obj
    else:
        return None

6.管理员登录功能_登录功能运行结果

 

标签:username,obj,登录,admin,Day31,管理员,user,path,todo
From: https://www.cnblogs.com/vless/p/18278150

相关文章

  • java简单版学生管理系统(无登录,注册界面)
    学生管理系统按照要求定义学生类属性:id,姓名,年龄,家庭住址publicclassstudent{privateStringid;privateStringname;privateintage;privateStringaddress; //以下内容在IDEA中可以使用快捷键ALT+INSEATpublicstudent(){}......
  • uniapp+thinkphp5实现微信登录
    前言之前做了微信登录,所以总结一下微信授权登录并获取用户信息这个功能的开发流程。配置1.首先得在微信公众平台申请一下微信小程序账号并获取到小程序的AppID和AppSecrethttps://mp.weixin.qq.com/cgi-bin/loginpage?url=%2Fwxamp%2Fwacodepage%2Fgetcodepage%3Ftoken%3D4180......
  • Vue登录界面设计开发
    目录前言图示详细代码前言  市面上大多的软件,在登录的时候给用户提供了超过一种的登录方式,常见的有手机短信登录、账号密码登录、app扫码登录,要想将这些功能组合在一起,就需要实现表单的切换功能,下面我将为你展示功能具体实现过程。图示详细代码template部分......
  • C# Process 以管理员身份运行 bat 批处理
    使用C#中的Process类以管理员身份运行批处理(.bat)文件的步骤与运行其他应用程序类似。你需要设置ProcessStartInfo的Verb属性为"runas"。下面是一个示例代码,展示了如何实现这一点:usingSystem;usingSystem.Diagnostics;classProgram{staticvoidMain(){......
  • centos7禁止 SSH 登录失败超过30次的IP
    使用firewalld禁止SSH登录失败超过30次的IP概述在CentOS7中,一般默认安装了firewalld动态添加失败登录超过30次的IP地址到防火墙规则中,禁止这些IP的访问。编写和使用脚本,通过firewalld来实现;注意iptables不适用,但大差不差。步骤1.安装firewalld确保firewalld已......
  • 使用 localStorage 持久化用户登录状态
    在现代Web应用中,保持用户的登录状态是一个非常重要的功能。本文将介绍如何使用localStorage和Vuex在用户登录后持久化登录状态,并在页面刷新后保持用户的登录状态。1.store/index.jsimportVuefrom'vue';importVuexfrom'vuex';Vue.use(Vuex);exportdefaultnewV......
  • Ubuntu 24.04 LTS 开启 ssh 免密登录
    参考https://zhuanlan.zhihu.com/p/146976128https://www.myfreax.com/how-to-set-up-ssh-keys-on-ubuntu-20-04/https://www.cnblogs.com/deepinnet/p/13663534.htmlhttps://blog.csdn.net/counsellor/article/details/81182567环境环境版本说明UbuntuUbuntu......
  • 【阿里云服务器】【弹性云服务ECS】通过ssh登录远程服务器
    一、操作系统使用Windows11主机上的Ubuntu子系统,如下图所示:二、云服务器登录方法需知道:服务器ip地址、登录名和自己设置的登录密码:上述系统用户名为root,需要在Ubuntu子系统中同样切换至root用户,才能正常登录:登录命令:sshxx.xx.xx.xx(服务器ip地址)然后按照提示输......
  • 记某模版菠菜管理后台登录思路
    1.前言由于小程序的便捷性,越来越多的应用迁移到了了小程序上,由此伴随着小程序上线前的日常渗透测试工作也开始增加。但小程序的测试中经常会遇到数据包被加密了,导致无法进行改包测试。和测试网页数据包加密一样,就需要找到小程序前端相应的加解密方法进行加解密数据包改包测......
  • 登录系统
    1usingSystem;2usingSystem.Collections.Generic;3usingSystem.ComponentModel;4usingSystem.Data;5usingSystem.Drawing;6usingSystem.Linq;7usingSystem.Text;8usingSystem.Windows.Forms;910namespace_1211{12publicpartial......