ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Django之rest_framework

2021-05-30 12:33:34  阅读:159  来源: 互联网

标签:序列化 models rest Django framework urls import django


引子:

  最近在公司的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能使代码风格更加的简洁

标签:序列化,models,rest,Django,framework,urls,import,django
来源: https://www.cnblogs.com/yuan-x/p/14827649.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有