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

网友投稿 334 2022-08-22


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

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

一、处理登录、登出请求

from django.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路由

但是这不是 登录 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 函数处理。

三、测试我们的代码

这样我们后端的登录请求处理的代码已经完成了。那么,怎么测试是否正确呢?

3.1测试登录信息

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

import requests,pprint payload = { 'username': 'byhy', 'aabbcc': '88888888' } response = requests.post('http://localhost/api/mgr/signin', data=payload) pprint.pprint(response.json())

3.2测试用户信息

# @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())


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:HttpClient连接池及重试机制解析
下一篇:Python文件操作与面向对象(python中的面向对象详解)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~