标签:序列化 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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。