• Django中如何让DRF的接口针对前后台返回不同的字段


      在Django中,使用Django Rest Framework(DRF)时,可以通过序列化器(Serializer)和视图(View)的组合来实现前后台返回不同的字段。这通常是因为前后台对数据的需求不同,或者出于安全性的考虑,不希望将所有字段都暴露给前端。

    1.定义两个Serializer类,分别用于前台和后台返回的字段

    from rest_framework import serializers
    
    class BackendSerializer(serializers.ModelSerializer):
        class Meta:
            model = YourModel
            fields = ('backend_field1', 'backend_field2', ...)
    
    class FrontendSerializer(serializers.ModelSerializer):
        class Meta:
            model = YourModel
            fields = ('frontend_field1', 'frontend_field2', ...)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

      在这里,BackendSerializer 包含了后台需要的字段,而 FrontendSerializer包含了前台需要的字段

    2.在视图中根据需要判断当前用户的角色,选择使用哪个Serializer

    from rest_framework.generics import ListAPIView
    from .serializers import BackendSerializer, FrontendSerializer
    from .models import YourModel
    
    class YourModelListView(ListAPIView):
        def get_serializer_class(self):
            if self.request.user.is_authenticated:  # 根据实际情况判断用户是否为后台用户
                return BackendSerializer
            return FrontendSerializer
    
        queryset = YourModel.objects.all()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

      在这里,通过 get_serializer_class方法动态选择使用哪个序列化器。如果用户是后台用户,使用 BackendSerializer,否则使用 FrontendSerializer

    3.绑定视图

      在Django中,将视图与路由进行绑定通常使用urls.py文件。在这里,你可以使用Djangopathre_path函数,将视图与相应的URL模式进行关联。

    # your_app/urls.py
    
    from django.urls import path
    from .views import YourModelListView
    
    urlpatterns = [
        path('your-model-list/', YourModelListView.as_view(), name='your-model-list'),
        # Add other URLs as needed
    ]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    jupyter中配置多种虚拟环境
    免费享受企业级安全:雷池社区版WAF,高效专业的Web安全的方案
    Linux-基础知识(黑马学习笔记)
    ThreadLocal的应用及原理
    网络编程——BIO与NIO介绍与底层原理
    专利交易常见的五大问题。
    .c文件怎么变成可执行的应用程序的?
    Vue-05-计算属性、内容分发、自定义事件
    精心制作的小游戏,没有人玩,失落......
    557、Vue 3 学习笔记 -【常用Composition API(六)】 2023.09.05
  • 原文地址:https://blog.csdn.net/Snailandfish/article/details/134340243