• 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 }
  • 相关阅读:
    ESAPI = Enterprise Security API
    WingIDE中调试GAE(google app engine)
    C# 发送Http请求 WebClient类
    [转]使用Google App Engine Helper for Django
    装上Window7
    最近遇到个关于接口的奇怪的问题
    JNDI概述(转载)
    Google App Engine 中通过自定义Django的filter解决时区问题
    C# string与byte[]互转
    Python天天美味(33) 五分钟理解元类(Metaclasses)[转]
  • 原文地址:https://www.cnblogs.com/Alexephor/p/11308188.html
Copyright © 2020-2023  润新知