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
本文来自博客园,作者:游走De提莫,转载请注明原文链接:https://www.cnblogs.com/Gaimo/p/11704625.html
分类:
DRF框架
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律