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 中进行设置

  • 相关阅读:
    Pycharm 设置python文件自动生成头部信息模板
    Python3.0 调用HTMLTestRunner生成的报告中不能显示用例中print函数的输出
    Python3.0 操作MySQL数据库执行SQL语句
    js时间戳转为日期格式
    Vue脚手架(vue-cli)安装总结
    Vue的生命周期
    常用的ES6语法
    学习python登录demo
    CSS的垂直居中和水平居中总结
    CSS清除浮动方法总结
  • 原文地址:https://www.cnblogs.com/sch01ar/p/14305523.html
Copyright © 2011-2022 走看看