当前位置: 首页 > news >正文

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

在这里插入图片描述

前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、 计算机视觉、机器学习、神经网络以及人工智能相关知识,成为学习学习和学业的先行者!
欢迎大家订阅专栏:零基础学Python:Python从0到100最新最全教程!

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 JsonResponsefrom 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_outurlpatterns = [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, pprintpayload = {'username': 'byhy','password': '88888888'
}response = requests.post('http://localhost/api/mgr/signin',data=payload)pprint.pprint(response.json())

在这里插入图片描述

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

3.2 测试用户信息

在这里插入图片描述

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

import requests, pprintpayload = {'action': 'list_customer'
}response = requests.get('http://127.0.0.1:8080/api/mgr/customers', params=payload)pprint.pprint(response.json())

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

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Vue--解决error:0308010C:digital envelope routines::unsupported
  • CTF ssti零基础(一) 模块注入的payload
  • 【大数据专题】Flink题库
  • unplugin-vue-components 的作用是什么
  • 数据结构——栈(顺序结构)
  • Visual Studio Code + vue快速安装配置Node.js+Vue+webpack+vscode
  • 【Java25】内部类
  • Ubuntu20.04安装Elasticsearch
  • 【STM32 HAL库】ADC
  • 古籍双层PDF制作教程:保姆级古籍数字化教程
  • 掌握互联网路由选择协议:从基础入门到实战
  • ESP8266用AT指令实现连接MQTT
  • 时间序列预测领域公开数据集数据集下载
  • react 样式管理方案除了 styled-components,还有什么推荐的
  • 黑马微服务拆分2 (路由 登录 配置)
  • Android优雅地处理按钮重复点击
  • Android组件 - 收藏集 - 掘金
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • Magento 1.x 中文订单打印乱码
  • Python十分钟制作属于你自己的个性logo
  • react-native 安卓真机环境搭建
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • vue 配置sass、scss全局变量
  • 前端代码风格自动化系列(二)之Commitlint
  • 前端技术周刊 2019-02-11 Serverless
  • 深度学习在携程攻略社区的应用
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • AI算硅基生命吗,为什么?
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • Mac 上flink的安装与启动
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (Python第六天)文件处理
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (分布式缓存)Redis哨兵
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (接口自动化)Python3操作MySQL数据库
  • (面试必看!)锁策略
  • (算法)求1到1亿间的质数或素数
  • (一)SvelteKit教程:hello world
  • (一)基于IDEA的JAVA基础12
  • (一)为什么要选择C++
  • (转)【Hibernate总结系列】使用举例
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转)一些感悟
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET Core 中插件式开发实现
  • .Net Core与存储过程(一)
  • .NET gRPC 和RESTful简单对比
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET4.0并行计算技术基础(1)
  • .NET的微型Web框架 Nancy
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2