zoukankan      html  css  js  c++  java
  • DRF

    urls.py:

    from django.urls import path, re_path
    from drf import views
    
    urlpatterns = [
        path('render/', views.RenderView.as_view()),
    ]
    

    views.py:

    from rest_framework import serializers
    from rest_framework.views import APIView
    from rest_framework.pagination import PageNumberPagination
    from drf import models
    from rest_framework.response import Response
    
    
    class PagerSerializer(serializers.ModelSerializer):
        class Meta:
            model = models.Role
            fields = "__all__"
    
    
    class RenderView(APIView):
        def get(self, request, *args, **kwargs):
            # 获取 Role 表中的所有数据
            role_obj = models.Role.objects.all()
            # 创建分页对象
            page_obj = PageNumberPagination()
            # 将从数据库中获取的数据进行分页
            role_page = page_obj.paginate_queryset(
                queryset=role_obj,
                request=request,
                view=self,
            )
            # 对数据序列化
            ser = PagerSerializer(instance=role_page, many=True)
            # 使用 rest framework 的 Response 进行返回
            return Response(ser.data)
    

    访问 /render/

    将渲染修改为 json

    from rest_framework import serializers
    from rest_framework.views import APIView
    from rest_framework.pagination import PageNumberPagination
    from drf import models
    from rest_framework.response import Response
    from rest_framework.renderers import JSONRenderer
    
    
    class PagerSerializer(serializers.ModelSerializer):
        class Meta:
            model = models.Role
            fields = "__all__"
    
    
    class RenderView(APIView):
    
        # 修改渲染为 json
        renderer_classes = [JSONRenderer, ]
        
        def get(self, request, *args, **kwargs):
            # 获取 Role 表中的所有数据
            role_obj = models.Role.objects.all()
            # 创建分页对象
            page_obj = PageNumberPagination()
            # 将从数据库中获取的数据进行分页
            role_page = page_obj.paginate_queryset(
                queryset=role_obj,
                request=request,
                view=self,
            )
            # 对数据序列化
            ser = PagerSerializer(instance=role_page, many=True)
            # 使用 rest framework 的 Response 进行返回
            return Response(ser.data)
    

    访问 /render/

    如果想要原先的效果,则设置为 BrowsableAPIRenderer

    from rest_framework import serializers
    from rest_framework.views import APIView
    from rest_framework.pagination import PageNumberPagination
    from drf import models
    from rest_framework.response import Response
    from rest_framework.renderers import JSONRenderer, BrowsableAPIRenderer
    
    
    class PagerSerializer(serializers.ModelSerializer):
        class Meta:
            model = models.Role
            fields = "__all__"
    
    
    class RenderView(APIView):
        renderer_classes = [JSONRenderer, BrowsableAPIRenderer, ]
        def get(self, request, *args, **kwargs):
            # 获取 Role 表中的所有数据
            role_obj = models.Role.objects.all()
            # 创建分页对象
            page_obj = PageNumberPagination()
            # 将从数据库中获取的数据进行分页
            role_page = page_obj.paginate_queryset(
                queryset=role_obj,
                request=request,
                view=self,
            )
            # 对数据序列化
            ser = PagerSerializer(instance=role_page, many=True)
            # 使用 rest framework 的 Response 进行返回
            return Response(ser.data)
    

    访问 /render/

    还有其它一下渲染选项,可参考源码

    另外也可以在 settings.py 中进行设置

  • 相关阅读:
    样式问题
    布局
    通用模板实现可变参数函数
    使用单例模式实习string类
    动态生成一维数组和二维数组
    自定义的类传数据到主窗口控件上的方法
    使用TableView
    G480折腾上了黑苹果,完美了,哈哈
    error C2383: 此符号中不允许有默认参数
    动态链接库的隐式动态链接和显示动态链接
  • 原文地址:https://www.cnblogs.com/sch01ar/p/14305523.html
Copyright © 2011-2022 走看看