zoukankan      html  css  js  c++  java
  • django Rest Framework----序列化

    一、手动序列化

    class BookView(APIView):
        '''
            构建数据结构
            [{"title": "go"}, {"title": "java"}, {"title": "python"}, {"title": "c++"}]
        '''
        def get(self,request):
            book_list = models.Book.objects.all()
            tmp=[]
            for book_obj in book_list:
                tmp.append({
                    'title':book_obj.title
                })
    
            return HttpResponse(json.dumps(tmp))
    
        def post(self,request):
            return HttpResponse('post....')

    model_to_dict():将对象转化成字典的形式:

    [{"id": 1, "title": "go"}, {"id": 2, "title": "java"}, {"id": 3, "title": "python"}, {"id": 4, "title": "c++"}]

    from django.forms.models import model_to_dict
    class BookView(APIView):
        def get(self,request):
            book_list = models.Book.objects.all()
            tmp=[]
            for book_obj in book_list:
                tmp.append(model_to_dict(book_obj))
    
            return HttpResponse(json.dumps(tmp))

    mode_to_dict()还支持一些参数:

    def model_to_dict(instance, fields=None, exclude=None):
        pass
    
    instance:queryset中每一个实例对象
    fields:表示一个可选列表,如果提供则返回的dict中将只包含指定的字段
    exclude:如果提供,则将字段排除在返回的dict中,即使fields包含它

    二、使用django中的serialize

    serialize的优点:它可以对queryset进行序列化。

    序列化后的结果:
    [{"model": "bookmanage.book", "pk": 1, "fields": {"title": "go"}}, {"model": "bookmanage.book", "pk": 2, "fields": {"title": "java"}}, {"model": "bookmanage.book", "pk": 3, "fields": {"title": "python"}}, {"model": "bookmanage.book", "pk": 4, "fields": {"title": "c++"}}]
    from django.shortcuts import render,HttpResponse
    from rest_framework.views import APIView
    from bookmanage import models
    from django.core.serializers import serialize
    
    class BookView(APIView):
    def get(self,request): result = serialize('json',models.Book.objects.all()) return HttpResponse(result)

    serialize:提供了将django模型翻译成其他格式的机制,serialize函数的参数是序列化数据的格式(请参阅序列化格式)和 QuerySet序列化。

    三、使用REST框架序列化

    使用REST框架序列化优点:可以把queryset序列化,也支持反序列化成queryset

    创建Serializer类

    首先我们需要提供一种序列化和反序列化

  • 相关阅读:
    人人学IoT 助学思维导图
    基于netty4.x开发时间服务器
    JAVA实现的截屏程序
    java获取硬盘ID以及MAC地址
    神经网络joone_engin模式识别示范,eclipse
    神经网络/人工智能 开源库
    双目测距
    OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波
    一个java 开源神经网络引擎 joone
    用Java开源项目JOONE实现人工智能编程
  • 原文地址:https://www.cnblogs.com/weihengblog/p/9198220.html
Copyright © 2011-2022 走看看