首页 > 其他分享 >drf之认证组件

drf之认证组件

时间:2023-02-06 22:11:46浏览次数:42  
标签:username 登录 models 认证 token user 组件 password drf

目录

认证组件

访问某个接口,需要登录后才能访问

编写模型表

class User(models.Model):
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=32)
    user = models.OneToOneField(to='UserToken', on_delete=models.CASCADE, null=True)


class UserToken(models.Model):  # 跟User是一对一
    token = models.CharField(max_length=32)
    # user :反向,表名小写,所有有user字段

登录接口

路由

router.register('user', views.UserView, 'user')  # /api/v1/user/login     post 

视图类

from .models import User, UserToken
import uuid

#  登录接口  自动生成路由+由于登录功能,不用序列化,继承ViewSet
class UserView(ViewSet):
    @action(methods=['POST'],detail=False)
    def login(self, request):
        print(request.data)
        username = request.data.get('username')
        password = request.data.get('password')
        user = User.objects.filter(username=username, password=password).first()
        print(user)
        if user:

            # 用户存在,登录成功
            # 生成一个随机字符串---uuid
            token = str(uuid.uuid4())  # 生成一个永不重复的随机字符串
            """
            # 在userToken表中存储一下,
            1.从未登录过>>插入一条数据   新增
            2.登录过>>修改数据    可用if判断
            根据kwargs,传入的东西查找,能找到就使用defaults的更新,否则就新增一条          
            """
            UserToken.objects.update_or_create(user=user, defaults={'token': token})
            return Response({'code': '100', 'msg': '登录成功', 'token': token})
        else:
            return Response({'code': '101', 'msg': '用户名或密码错误'})

认证功能

标签:username,登录,models,认证,token,user,组件,password,drf
From: https://www.cnblogs.com/zhanglanhua/p/17096860.html

相关文章

  • 9 个视图子类、视图集、路由系统、认证组件
    9个视图子类、视图集、路由系统、认证组件9个视图子类#两个视图基类APIViewGenericAPIView1.APIView执行流程:新的request,三大认证,全局异常重写了as_vi......
  • drf-视图集、路由系统、action装饰器
    1.9个视图扩展类1.两个视图基类:APIView、GenricAPIView2.5个视图扩展类:CreateModelMixin,UpdateModelMixin,RetrieveModelMixin,ListModelMixin,DestroyModelMixin3.9......
  • DRF06
    9个视图子类 之前学的是:有两个视图基类,5个扩展类今天学的是:9个是视图子类:他就是真的视图类,就不需要继承GenerricAPIView,只要继承者9个中的其中一个,就会有某个,或者......
  • drf6
    今日内容概要9个视图子类视图集路由系统认证组件今日内容详细9个视图子类fromrest_framework.genericsimportCreateAPIView,ListAPIView,UpdateAPIView,Ret......
  • DRF - 视图组件
    视图组件drf的视图,视图类学过APIViewdrf的基类,drf提供的最顶层的类0、APIView与Django原生的View类的区别1.APIView中传入视图方法中的Request对象是RESTframework......
  • drf 自动生成路由
    目录drf路由系统SimpleRouter与DefaultRouteraction装饰器扩展测试伪代码drf路由系统由于继承了ViewSetMinxin类路由的写法变了,有三种写法。需要学习一下原生写法pa......
  • def 认证组件
    目录drf认证组件登录接口viewsmodelsurlsdrf认证组件登录接口viewsfromrest_framework.viewsetsimportViewSetfromrest_framework.decoratorsimportactionfr......
  • 视图组件与路由组件
    9个视图子类两个视图基类(是视图类):APIView,GenericAPIView五个视图扩展类(不是视图类,需要配合使用):CreateModelMixin,ListModelMixin,RetrieveModelMixin,UpdateMod......
  • 认证组件
    认证组件#访问某个接口:需要登录后才能访问#第一步:先写个登录功能,用户表 -User表-UserToken表:存储用户登录状态[这个表可以没有,如果没有,把字段直接写在User......
  • drf视图类 视图基类、视图扩展类、视图子类、视图集以及路由类
    drf视图类视图基类、视图扩展类、视图子类、视图集两个视图基类APIView这个视图类在前文已经介绍过了,web常见5个接口--APIView的最后有提到:APIView也是继承了django......