• python Django rest-framework 序列化步骤


    django-rest-framework,是一套基于Django 的 REST 框架,是一个强大灵活的构建 Web API 的工具包。本文介绍一下 django-rest-framework 的简单使用。示例代码地址:https://github.com/jhhnjhhn/drf-test
    环境
    Python (3.6.2)
    Django (1.11.5)
    djangorestframework (3.6.4)
    使用
    1、创建项目
    mkdir drf-test
    
    cd drf-test
    
    django-admin.py startproject drfTest
    
    cd drfTest/
    
    python manage.py startapp api
    2、修改配置文件
    编辑 drtTest/setting.py 文件,在 INSTALLED_APPS 添加新应用。
    INSTALLED_APPS = (
        ...
        'rest_framework',
        'api.apps.ApiConfig',
    )
    3、创建模型和数据库
    打开 drtTest/models.py 文件,创建一个简单 Product 模型,字段包括 created、name、describe、price、isDelete。
    class Product(models.Model):
        created = models.DateTimeField(auto_now_add=True)
        name = models.CharField(max_length=100, default='')
        describe = models.CharField(max_length=500, default='')
        price = models.FloatField()
        isDelete = models.BooleanField(default=False)
    
        class Meta:
            ordering = ('created',)
    模型迁移,并同步数据库。
    python manage.py makemigrations api
    python manage.py migrate
    4、创建序列化器
    序列化器可以把模型转换成需要返回的 json、xml 类型数据。在 api 文件下创建 serializers.py 文件。
    from rest_framework import serializers
    from snippets.models import Product
    
    class ProductSerializer(serializers.ModelSerializer):
        class Meta:
            model = Product
            fields = ('id', 'created', 'name', 'describe', 'price', 'isDelete')
    5、url配置
    创建 api/urls.py 文件,用 Router 自动处理 url 和 view 的连接。
    from django.conf.urls import url, include
    from api import views
    
    # api url 配置
    urlpatterns = [
    
    ]
    在 drtTest/urls.py 中链接 api 应用程序的 url。
    from django.conf.urls import url, include
    from api import views
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^', include('api.urls')),
    ]
    6、编写视图
    编写视图有很多种方式,下面使用比较简单的两种:
    1.使用 APIView
    from rest_framework.views import APIView
    from django.http import JsonResponse
    
    # Create your views here.
    class GetMessageView(APIView):
        # get 请求
        def get(self, request):
            # 获取参数数据
            get = request.GET
            # 获取参数 a
            a = get.get('a')
            print(a)
            # 返回信息
            d = {
                'status': 1,
                'message': 'success',
                }
            return JsonResponse(d)
    api/urls.py 中配置 url
    urlpatterns = [
          url(r'^test/$', views.GetMessageView.as_view()),
    ]
    终端输入命令,开启服务。
    python manage.py runserver
    打开浏览器访问 http://127.0.0.1:8000/test/?a=100 接口返回
    {"status": 1, "message": "success"}
    终端输出
    100
    [15/Sep/2017 02:39:55] "GET /test/?a=100 HTTP/1.1" 200 35
    2.使用 viewsets
    from rest_framework import viewsets
    from rest_framework.response import Response
    from rest_framework.decorators import detail_route, list_route
    from api.serializers import ProductSerializer
    from api.models import Product
    
    class ProductViewSet(viewsets.ModelViewSet):
        queryset = Product.objects.all()
        serializer_class = ProductSerializer
    
        @detail_route()
        def changeName(self, request, *args, **kwargs):
            get = request.GET
            product = self.get_object()
            product.name = get.get('newName')
            product.save()
    
            return Response(product.name)
    
        @list_route()
        def filterProducts(self, request):
            products = Product.objects.filter(id__in=range(3))
            serializer = ProductSerializer(products, many=True)
    
            return Response(serializer.data)
    api/urls.py 配置 url,使用 Router 自动处理 url 和 view 的连接。
    from rest_framework.routers import DefaultRouter
    from api.views import ProductViewSet
    
    router = DefaultRouter()
    router.register(r'product', views.ProductViewSet)
    
    # api url 配置
    urlpatterns = [
        url(r'^', include(router.urls)),
        url(r'^test/$', views.GetMessageView.as_view()),
    ]
    终端输入命令,开启服务。
    python manage.py runserver
  • 相关阅读:
    Android之旅十六 android中各种资源的使用
    XTU OJ 1207 Welcome to XTCPC (字符串签到题)
    scala并发编程原生线程Actor、Case Class下的消息传递和偏函数实战
    【云图】怎样设置支付宝里的家乐福全国连锁店地图?
    怎样在QML中使用multitouch
    软件project师周兆熊给IT学子的倾情奉献
    Linux系统下怎样配置SSH?怎样开启SSH?
    数学之路-python计算实战(4)-Lempel-Ziv压缩(2)
    Day5上午解题报告
    一份只有巨佬才能看懂的代码
  • 原文地址:https://www.cnblogs.com/duanlinxiao/p/9881939.html
Copyright © 2020-2023  润新知