python实现注册与登录

注:本文仅制作了函数来实现

需要代码的直接翻到最后(看不见的是代码还在审核)


相信大家非常熟悉这个界面:

 这是一个基础的登录界面,当然,对应的还有注册界面:

本文将在服务端的角度解释如何实现这两个功能


注册

想要登录,那就需要先注册。虽然可以肯定的是这两个功能都不是那么简单,但是我会带大家了解如何制作。


创建文件存储密码

在注册时,一定要有一个文件来储存注册信息的文件,这时候就需要json登场了,使用json快速保存与读取数据为各种格式

检测目录下是否有json文件,如果没有则创建

if not os.path.exists('Main.json'):
    data = {
        "Password": {
            "admin": "123456"
        }
    }
    with open('Main.json', 'w') as file:
        json.dump(data, file)
    print('已在当前目录下创建 Main.json 信息储存文件。')

我接下来带大家一句句分析其作用

首先是

if not os.path.exists('Main.json'):

这是一个通用用法,使用os来检测目录下是否有目标文件,这里的意思是如果目录下没有Main.json文件,则。。。

data = { ... } (内容省略)

这一行比较好理解,创建一个字典,并且在字典中创建一个叫做password的字典用来储存密码与账号

with open('Main.json', 'w') as file:
    json.dump(data, file)

这行代码理解起来很方便:打开叫做main.json的文件,打开方式是w,打开后这个写入方式为file

接下来使用json.dump写入data这个数据到main.json当中去

注:打开方式w就是写入方式打开,如果你只是阅读,那就是r


接受参数与处理

首先放上注册模块的完整代码:

def register(message):
    msg_list = json.loads(message)
    new_username, new_password = msg_list[1], msg_list[2]
    with open("Main.json", "r") as f:
        data = json.load(f)
    if new_username in data["Password"]:
        response = "username_taken"
    else:
        data["Password"][new_username] = new_password
        with open("main.json", "w") as f:
            json.dump(data, f)
        response = "success"
    return response

接下来就是一行行的解释:

第一行:def register 相信有经验的诸位已经看出来了,定义了一个函数,叫做register,接受message参数

这个参数的格式是一个string格式的list(具体原因会在下一篇blog中讲到)

不需要的小伙伴可以直接把

msg_list = json.loads(message)

改为

msg_list = message

然后传入参数变为list格式即可

接下来就是从这个list当中读取要注册的用户名和密码

new_username, new_password = msg_list[1], msg_list[2]

因为第一个参数是告诉我们他是干什么的,所以,这里的msg_list的三个参数读取了后两个

注意:list的索引是从0开始的,所以这里读取1和2,就是读取2和3参数

下面就是上面说过的,用r方式读取文件

    with open("Main.json", "r") as f:
        data = json.load(f)

这里就不多说了,直接下一个,不会的可以返回去看或者去我微信群问我

    if new_username in data["Password"]:
        response = "username_taken"

这是一个判断代码,在data中查找password的内容,判断这个用户名是不是以及注册过了,如果注册过了则直接返回参数

username_taken

如果没有注册过:

    else:
        data["Password"][new_username] = new_password
        with open("main.json", "w") as f:
            json.dump(data, f)
        response = "success"

写入用户名和密码,并且返回success

很好,注册已经结束了,那么接下来就是登录!


登录

登录是最为简单的,但也是最复杂的,大家觉得登录需要考察的是什么代码水平呢(投票看不见可能是还在审核)

一样,先放上完整代码

def sigh_in(message):
    msg_list = json.loads(message)
    with open("Main.json", "r") as f:
        data = json.load(f).get("Password")
    username, user_password = msg_list[1], msg_list[2]
    for item in data:
        if item == username:
            if data[item] == user_password:
                response = "success"
            else:
                response = "wrong_password"
            break
    else:
        response = "wrong_name"
    return response

登录的代码的相关知识我在前文都已经大致说过了

这里就不多做解释了,唯一比较难的是这个判断以及报错输出,大家可以试着理解一下,不会的可以加群问我

照常,放出微信群二维码,欢迎大家进群问bug或者参与游戏开发:

放出我的github代码地址(完整的socket连接实现登录与注册)

github地址-点击我查看

那么今天的blog到此结束啦~~~

下次见~

  • 32
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值