序列化组件
把后端的数据对象序列化成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)
###
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‘)
原文:https://www.cnblogs.com/xujinjin18/p/9774743.html