• Django REST framework之渲染器组件以及阅读源码流程


    选择方式渲染在页面上显示

    举例说明:

    表设计

     1 from django.db import models
     2 
     3 
     4 class UserGroup(models.Model):
     5     title = models.CharField(max_length=32)
     6 
     7 
     8 class UserInfo(models.Model):
     9     user_type_choices = (
    10         (1, '普通用户'),
    11         (2, 'vip'),
    12         (3, 'svip'),
    13     )
    14     user_type = models.IntegerField(choices=user_type_choices)
    15     username = models.CharField(max_length=32, unique=True)
    16     password = models.CharField(max_length=64)
    17     group = models.ForeignKey('UserGroup', on_delete=models.CASCADE)
    18     roles = models.ManyToManyField('Role')
    19 
    20 
    21 class UserToken(models.Model):
    22     user = models.OneToOneField(to='UserInfo', on_delete=models.CASCADE)
    23     token = models.CharField(max_length=64)
    24 
    25 
    26 class Role(models.Model):
    27     title = models.CharField(max_length=32)

     路由

    1 from django.contrib import admin
    2 from django.urls import path, re_path, include
    3 
    4 urlpatterns = [
    5     path('admin/', admin.site.urls),
    6     re_path('api/', include('api.urls')),
    7 ]

    分发的路由

     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 
     4 from django.urls import path, re_path, include
     5 from api import views
     6 
     7 urlpatterns = [
     8     # 渲染器
     9     re_path('(?P<version>[v1|v2]+)/test/$', views.TestView.as_view()),
    10

    视图:

     1 # #############################渲染器############################
     2 from rest_framework.renderers import JSONRenderer, BrowsableAPIRenderer, AdminRenderer
     3 
     4 
     5 class TestView(APIView):
     6     renderer_classes = [JSONRenderer, BrowsableAPIRenderer, AdminRenderer]
     7 
     8     def get(self, request, *args, **kwargs):
     9         roles = models.Role.objects.all()
    10         pg = MyCursorPagination()
    11         # 在数据库中获取分页的数据
    12         pg_roles = pg.paginate_queryset(queryset=roles, request=request, view=self)
    13         # 对数据序列化
    14         ser = PagerSerializer(instance=pg_roles, many=True)
    15         ret = pg.get_paginated_response(ser.data)
    16         return ret 

    全局配置:

    1 REST_FRAMEWORK = {
    2 # 渲染器
    3     'DEFAULT_RENDERER_CLASSES': ['rest_framework.renderers.JSONRenderer', 
    4                                  'rest_framework.renderers.BrowsableAPIRenderer', 
    5                                  'rest_framework.renderers.AdminRenderer']
    6 
    7 }
  • 相关阅读:
    配置postgres9.3间的fdw——实现不同postgres数据库间的互访问
    linux安装配置postgres及使用dblink
    一次“峰回路转”的troubleshooting经历
    10分钟内把永远跑不完的存储过程变为2秒跑完
    C++ friend关键字
    每天学点Linux命令之 vi 命令
    Shell
    九大排序算法及其实现- 插入.冒泡.选择.归并.快速.堆排序.计数.基数.桶排序.堆排序
    到位
    【LeetCode】-- 260. Single Number III
  • 原文地址:https://www.cnblogs.com/Alexephor/p/11308188.html
Copyright © 2020-2023  润新知