Python从0到100(四十六):实现管理员登录及测试功能

举报
是Dream呀 发表于 2024/07/26 11:31:52 2024/07/26
【摘要】 Python Web开发:实现管理员登录功能在之前的开发过程中,我们已经实现了服务端管理员的一些基本操作,如增删改查。然而,管理员登录功能尚未实现。本文将详细介绍如何在Python Web应用中实现管理员登录功能。 一、处理登录、登出请求为了处理管理员的登录和登出请求,我们可以在mgr目录中创建一个名为sign_in_out.py的文件。这个文件将负责处理相关的API请求。 登录请求处理管...

Python Web开发:实现管理员登录功能

在之前的开发过程中,我们已经实现了服务端管理员的一些基本操作,如增删改查。然而,管理员登录功能尚未实现。本文将详细介绍如何在Python Web应用中实现管理员登录功能。

一、处理登录、登出请求

为了处理管理员的登录和登出请求,我们可以在mgr目录中创建一个名为sign_in_out.py的文件。这个文件将负责处理相关的API请求。

登录请求处理

管理员登录的核心在于验证用户名和密码。我们可以通过以下步骤实现:

  1. 获取请求参数:从HTTP POST请求中提取用户名和密码。
  2. 验证用户名和密码:使用Django内置的django.contrib.auth应用进行验证。
  3. 登录用户:如果验证通过,使用login方法登录用户。
  4. 返回响应:根据验证结果返回相应的JSON响应。

Django中有个内置app 名为 django.contrib.auth ,缺省包含在项目Installed App设置中。
这个app 的 models 定义中包含了一张 用户表,名为 auth_user 。
当我们执行 migrate 创建数据库表时,根据,就会为我们创建 用户表 auth_user,如下所示:
在这里插入图片描述
Django的django.contrib.auth应用为我们提供了丰富的用户认证功能,包括用户登录、登出、密码重置等。以下是具体的实现代码:

from django.http import JsonResponse

from django.contrib.auth import authenticate, login, logout

# 登录处理
def signin( request):
    # 从 HTTP POST 请求中获取用户名、密码参数
    userName = request.POST.get('username')
    passWord = request.POST.get('password')

    # 使用 Django auth 库里面的 方法校验用户名、密码
    user = authenticate(username=userName, password=passWord)
    
    # 如果能找到用户,并且密码正确
    if user is not None:
        if user.is_active:
            if user.is_superuser:
                login(request, user)
                # 在session中存入用户类型
                request.session['usertype'] = 'mgr'

                return JsonResponse({'ret': 0})
            else:
                return JsonResponse({'ret': 1, 'msg': '请使用管理员账户登录'})
        else:
            return JsonResponse({'ret': 0, 'msg': '用户已经被禁用'})
        
    # 否则就是用户名、密码有误
    else:
        return JsonResponse({'ret': 1, 'msg': '用户名或者密码错误'})

# 登出处理
def signout( request):
    # 使用登出方法
    logout(request)
    return JsonResponse({'ret': 0})

二、创建 URL 路由

Bysms系统,浏览器登陆登录页面的url是http://127.0.0.1:8080/mgr/sign.html
在这里插入图片描述
为了使登录和登出功能能够通过HTTP请求触发,我们需要在Django的URL路由系统中注册相应的路径。以下是如何在mgr目录下的urls.py文件中添加路由:

from django.urls import path
from mgr import sign_in_out

urlpatterns = [
    path('signin', sign_in_out.signin),
    path('signout', sign_in_out.signout),
]

这样,当有HTTP请求到达/api/mgr/signin时,将由signin函数处理;当请求到达/api/mgr/signout时,将由signout函数处理。

三、测试我们的代码

开发完成后,测试是必不可少的一步。以下是如何测试管理员登录功能:

3.1 测试登录信息

我们可以使用requests库构建登录请求,并检查响应,以验证登录是否成功。以下是一个简单的测试脚本:

import requests, pprint

payload = {
    'username': 'byhy',
    'password': '88888888'
}

response = requests.post('http://localhost/api/mgr/signin',
                          data=payload)

pprint.pprint(response.json())

在这里插入图片描述

运行一下,大家看看,是不是可以返回这样的结果呢?
在这里插入图片描述
根据接口文档,如果ret值为0,则表示登录接口调用成功。

3.2 测试用户信息

在这里插入图片描述

在用户登录成功后,我们还可以测试获取用户信息的功能。以下是一个测试脚本:

import requests, pprint

payload = {
    'action': 'list_customer'
}

response = requests.get('http://127.0.0.1:8080/api/mgr/customers', 
                          params=payload)

pprint.pprint(response.json())

运行这个脚本,我们可以看到用户信息是否正确返回。

通过以上步骤,我们不仅实现了管理员的登录和登出功能,还通过测试验证了其正确性。这为后续的权限管理和用户操作提供了基础。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。