本节开始,全文仅对会员开放。
若点赞和收藏数量超过100,全文将免费开放。
此项目采用 Django 框架的 5.0.7 版本进行开发。
Django 5.0 支持的 Python 版本为 3.10、3.11 和 3.12。
OA 系统系列文章将持续更新,直至项目的 Docker 部署阶段。
专栏链接: ~快捷传送门: 留个赞再走呗! ~
个人博客: ~所有文章尽在简客免费阅读~
目录
Django5+Vue3系列文章
前言
文章目录
一、登录验证流程:使用Views视图函数进行数据校验
打开apps/oaauth/views.py,定义视图函数
二、数据验证自动化:Serializer序列化器的应用
1.定义LoginSerializer并对validate方法进行重写
2.序列化模型定义与模型嵌套
三、JWT Token权限认证
创建apps\oaauth\authentications.py文件
四、路由映射
1.创建\apps\oaauth\urls.py文件
2.项目根目录添加子路由
五、Postman测试
1.验证:失败情况示例
2.验证:成功情况示例
总结
代码如下(示例):
from django.shortcuts import render
from rest_framework.views import APIView
from apps.oaauth.serializers import LoginSerializer, UserSerializer
from datetime import datetime
from .authentications import generate_jwt
from rest_framework import status
from rest_framework.response import Response
# Create your views here.
class LoginView(APIView):
# 登录只能用post方法向服务端发送请求
def post(self,request):
# 1.验证数据是否可用,在此使用序列化校验数据库与客户端发送到数据
serializer = LoginSerializer(data=request.data)
# 如果验证成功
if serializer.is_valid():
# 间接获取数据库数据(attrs['user'] = user)
user = serializer.validated_data.get('user')
# 记录上次登陆的时间
user.last_login = datetime.now()
user.save()
# 登陆成功,生成并返回JWT Token
token = generate_jwt(user)
return Response({'token': token, 'user': UserSerializer(user).data})
# 身份验证失败
else:
print(serializer.errors)
return Response({"message": "参数验证失败!"}, status=status.HTTP_400_BAD_REQUEST)
在定义登录的视图函数时,身份验证是一个关键步骤,通常我们会使用序列化器来处理数据。为此,我们需要创建一个专门的序列化器来进行身份验证。
序列化器: 通过定义数据模型的规则和验证逻辑,确保接收到的数据符合预期格式并进行安全检查。
创建apps/oaauth/serializers.py文件