Python Web开发(七):登录实现及功能测试

Python Web开发(七):登录实现及功能测试

前面我们 实现了 服务端 管理员 的一些增删改查操作,但是,我们还没有实现管理员 登录的功能呢。 现在我们来根据,API接口文档,实现 管理员登录 功能。

一、处理登录、登出请求

Python Web开发(七):登录实现及功能测试
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路由

Python Web开发(七):登录实现及功能测试

但是这不是 登录 API接口的url路径。 根据接口,管理员登录的API 路径是 /api/mgr/signin 前面的课程, 我们已经在总路由文件 bysms/urls.py 中 添加了如下路由记录:

    # 凡是 url 以 api/mgr  开头的,
    # 都根据 mgr.urls 里面的 子路由表进行路由
    path('api/mgr/', include('mgr.urls')),

现在,我们只需要 在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请求 url是 /api/mgr/signin 就由 sign_in_out.py 里面的signin 函数处理, 如果有HTTP请求 url是 /api/mgr/signout 就由 sign_in_out.py 里面的signout 函数处理。

三、测试我们的代码

至此,我们的后端登录请求处理代码已经完成。那么,如何检验它是否正确呢?

[En]

So our back-end login request processing code has been completed. So, how to test whether it is correct?

3.1测试登录信息

还是可以 使用 requests库构建 登录请求 http消息, 并且检查响应,看看是否能登录成功。 非常简单,如下代码即可:

import  requests,pprint

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

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

pprint.pprint(response.json())

Python Web开发(七):登录实现及功能测试

Python Web开发(七):登录实现及功能测试

3.2测试用户信息

Python Web开发(七):登录实现及功能测试
@Time : 2022/7/11 20:31
@Author : 是Dream呀
@File : test.py
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())

Python Web开发(七):登录实现及功能测试

Original: https://blog.51cto.com/u_15492594/5589216
Author: 是Dream呀
Title: Python Web开发(七):登录实现及功能测试

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/500659/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球