码迷,mamicode.com
首页 > 其他好文 > 详细

序列化组件

时间:2018-10-11 22:04:44      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:.post   ice   false   work   span   nbsp   imp   toolbar   object   

 

序列化组件

把后端的数据对象序列化成json格式的字符串传到前端

一  Django内置的serializers(把对象序列化成json字符串)

from django.core import serializers
from django.core import serializers
def test(request):
    book_list = Book.objects.all()    
    ret = serializers.serialize("json", book_list)
    return HttpResponse(ret)

###

二 rest-framework序列化之Serializer

models部分:

技术分享图片
from django.db import models

# Create your models here.


class Book(models.Model):
    title=models.CharField(max_length=32)
    price=models.IntegerField()
    pub_date=models.DateField()
    publish=models.ForeignKey("Publish")
    authors=models.ManyToManyField("Author")
    def __str__(self):
        return self.title

class Publish(models.Model):
    name=models.CharField(max_length=32)
    email=models.EmailField()
    def __str__(self):
        return self.name

class Author(models.Model):
    name=models.CharField(max_length=32)
    age=models.IntegerField()
    def __str__(self):
        return self.name
技术分享图片

view部分:

from django.shortcuts import render,HttpResponse
# Create your views here.
from api import models
from rest_framework.views import  APIView #API
from rest_framework import serializers #序列化
from rest_framework.response import Response #前端有样式

# 如果要用rest_framework的序列化,必须写一个类
class BookSerializer(serializers.Serializer):
    # 如果想重命名,指定source
    xx=serializers.CharField(source=title)
    price=serializers.CharField()
    pub_date=serializers.DateField()
    publish=serializers.CharField(source=publish.email) #这个拿到的是publish表里的email字段值
    # publish=serializers.CharField() #外键,这个拿到的是对象


class Book(APIView):
    def get(self,request):
        # request.data

        ret=models.Book.objects.all()
        # ret 是queryset对象,many=True代表序列化多条,many=False 代表序列化一条
        book_ser=BookSerializer(ret,many=True)
        print(book_ser.data) #序列化完成后的字典
        return Response(book_ser.data) #带样式
        # return HttpResponse(json.dumps(book_ser.data))
    def post(self,request):
        print(request.data)
        print(request.POST)
        return HttpResponse(ok)

 

序列化组件

标签:.post   ice   false   work   span   nbsp   imp   toolbar   object   

原文地址:https://www.cnblogs.com/xujinjin18/p/9774743.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!