Django-rest framework框架的三大认证组件

源码分析:三大认证组件的封装

组件的认证配置:

模型层:models.py

class User(BaseModel):
    username = models.CharField(verbose_name='用户名', max_length=32)
    password = models.CharField(verbose_name='密码', max_length=64)


class Car(BaseModel):
    name = models.CharField(verbose_name='汽车品牌', max_length=32)
    price = models.DecimalField(verbose_name='价格', max_digits=11, decimal_places=2, default=1.00)

 序列化层:serializer.py

复制代码
from rest_framework import serializers
from . import models
class UsersModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.User
        fields = ('username', 'password')
        extra_kwargs = {}

class CarsModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.Car
        fields = ('name', 'price')
        extra_kwargs = {}
复制代码

 

路由层:urls,.py

from django.conf.urls import url, include
from . import views
urlpatterns = [
    url(r'^users/(?P<pk>\d+)/', views.UsersRetrieveAPIView.as_view()),

    url(r'^cars/$', views.CarsGenericViewSet.as_view({'get': 'list'})),
    url(r'^cars/(?P<pk>\d+)/', views.CarsGenericViewSet.as_view({'get': 'retrieve'})),
]

视图层:views.py

复制代码
from rest_framework import generics, viewsets, mixins
from . import models, serializers


# 局部禁用:视图类中 authentication_classes 字段可以完成局部控制
class UsersRetrieveAPIView(generics.RetrieveAPIView):
    # 局部解除认证
    authentication_classes = ()
    queryset = models.User.objects.filter(is_delete=False)
    serializer_class = serializers.UsersModelSerializer

from . import authentication
class CarsGenericViewSet(mixins.RetrieveModelMixin, mixins.ListModelMixin, viewsets.GenericViewSet):
    # 局部完成禁用
    authentication_classes = (authentication.TokenAuthentication, )
    queryset = models.Car.objects.filter(is_delete=False)
    serializer_class = serializers.CarsModelSerializer
复制代码

 

posted @   游走De提莫  阅读(328)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示