引子:
最近在公司的gitlab上看到其他的测试工具,其中一套数据工程是依赖django的 rest_framework 实现的,自己写了个demo玩了一把,扩展一下。
目录结构:

代码:
models.py
from django.db import models
# Create your models here.
class UserInfo(models.Model):
#id = models.AutoField(primary_key=True)
name = models.CharField(max_length=255)
sex = models.IntegerField()
level = models.IntegerField()
weight = models.IntegerField()
class Meta:
db_table = ‘user_info‘
serializers.py 在models层和views层中间加了个序列化器,作用呢就是把views获取的数据序列化成model实例,然后呢再把models反序列化成数据给用户
from rest_framework import serializers
from app01.models import UserInfo
class UserInfoSerializer(serializers.ModelSerializer):
"""序列化器"""
class Meta:
model = UserInfo
fields = ‘__all__‘
views.py 依赖于django的cbv实现
继承的父类 ModelViewSet ,这个类又继承了 GenericAPIView 然而 GenericAPIView 又继承了 views.APIView
from rest_framework.viewsets import ModelViewSet
from app01.serializers import UserInfoSerializer,UserInfo
class UserInfoView(ModelViewSet):
# queryset 想想 django orm返回的数据结构
# 这里存储所有的数据库查询之后的返回
queryset = UserInfo.objects.all()
# 制定在当前视图中 进行序列化以及反向序列化使用的序列化器
serializer_class = UserInfoSerializer
urls.py
这里的urls 是 django的根路由,当然可以用二级路由
from django.contrib import admin
from django.urls import path,include
from app01 import urls as app01_urls
from rest_framework.routers import DefaultRouter
from app01 import views
router=DefaultRouter()
router.register(r‘users‘,views.UserInfoView,base_name=‘userss‘)# 在路由器专用注册视图
print(router.urls)
urlpatterns = [
#path(‘admin/‘, admin.site.urls),
path(‘‘, include(router.urls)),
]
效果:

总结 :
1、rest风格的接口,确实能减少代码量,达到快速开发的目的
2、serializers 序列化器的使用,能快速达到数据转换的目的
3、rest能使代码风格更加的简洁
原文:https://www.cnblogs.com/yuan-x/p/14827649.html