加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Django中的小知识点

发布时间:2020-12-20 11:01:46 所属栏目:Python 来源:网络整理
导读:在返回json对象的几种方式: 1 from django.shortcuts import render,HttpResponse # Create your views here. from django.views import View from app01 import models import json class BookListView(View): """ 使用json进行json序列化 """ def get(sel

在返回json对象的几种方式:

1

from django.shortcuts import render,HttpResponse

# Create your views here.
from django.views import View
from app01 import models
import json
class BookListView(View):
    """使用json进行json序列化"""

    def get(self,request):
        """以json形式返回书籍的列表"""
        # 1. 获取所有的书籍对象
        # models.Book.objects.all() queryset 类型的对象,不能直接json
        queryset = models.Book.objects.all().values(id,title,)
        # 2. 将数据序列化成json格式   date类型的数据不能直接系列化 ensure_ascii=False 修改乱码的现象
        ret = json.dumps(list(queryset),ensure_ascii=False)
        # 3. 返回
        return HttpResponse(ret)

2 使用JsonResponse返回数据。实现简单的序列化

from django.http.response import JsonResponse


class BookListView(View):
    """使用JsonResponse进行json序列化"""

    def get(self,request):
        """以json形式返回书籍的列表"""
        # 1. 获取所有的书籍对象
        queryset = models.Book.objects.all()
     ret = [] for book in queryset: tmp = {} tmp[id] = book.pk tmp[title] = book.title tmp[pub_date] = book.pub_date # 时间类型的有问题,这里没有修改 tmp[publisher] = book.publisher_id tmp[authors] = [i.pk for i in book.authors.all()] ret.append(tmp) print(ret) return JsonResponse(list(queryset),safe=False,json_dumps_params={ensure_ascii: False})

?

?3 用django内置的进行json序列化

from django.core import serializers
class BookListView(View):
    """使用django内置的进行json序列化"""

    def get(self,request):
        """以json形式返回书籍的列表"""
        # 1. 获取所有的书籍对象
        queryset = models.Book.objects.all()
        # 2. 将数据序列化成json格式
        data = serializers.serialize(json,queryset=queryset)
        # 3. 返回
        return HttpResponse(data)

4使用djangorestful进行json序列化

class BookSerializer(serializers.Serializer):
    id = serializers.IntegerField(required=False)
    title = serializers.CharField()
    pub_date = serializers.DateField()


#python -m pip install djangorestframework
# 在setting.py中 将rest_framework 写下 INSTALLED_APPS列表中
from rest_framework.views import APIView
from rest_framework.response import Responseclass BookListView(APIView):
    """使用djangorestful进行json序列化"""
    def get(self,request):
        """以json形式返回书籍的列表"""
        # 1. 获取所有的书籍对象
        queryset = models.Book.objects.all()
        # 2. 将数据序列化成json格式,many=True将数据一个一个的循环
        ser_obj = BookSerializer(queryset,many=True)
        # 3. 返回
        return Response(ser_obj.data)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读