为什么要序列化组件

前后端分离,数据交互一般都是Json格式, Json是一个较为轻量级的数据交互格式,

给前端的数据都要成Json格式,需要我们对数据库中的数据进行序列化

下面是Django序列化和rest_framework序列化的对比

Django的序列化方法

class BooksView(View):
    def get(self, request):
        book_list = Book.objects.values("id", "title", "chapter", "pub_time", "publisher")
        book_list = list(book_list)
        # 如果我们需要取外键关联的字段信息 需要循环获取外键 再去数据库查然后拼接成我们想要的
        ret = []
        for book in book_list:
            pub_dict = {}
            pub_obj = Publish.objects.filter(pk=book["publisher"]).first()
            pub_dict["id"] = pub_obj.pk
            pub_dict["title"] = pub_obj.title
            book["publisher"] = pub_dict
            ret.append(book)
        ret = json.dumps(book_list, ensure_ascii=False, cls=MyJson)
        return HttpResponse(ret)


# json.JSONEncoder.default()
# 解决json不能序列化时间字段的问题
class MyJson(json.JSONEncoder):
    def default(self, field):
        if isinstance(field, datetime.datetime):
            return field.strftime('%Y-%m-%d %H:%M:%S')
        elif isinstance(field, datetime.date):
            return field.strftime('%Y-%m-%d')
        else:
            return json.JSONEncoder.default(self, field)

.values 序列化结果
.values 序列化结果

相关文章:

  • 2021-08-16
  • 2022-12-23
  • 2022-12-23
  • 2022-03-01
  • 2022-12-23
  • 2022-12-23
  • 2021-05-16
  • 2020-06-19
猜你喜欢
  • 2020-02-19
  • 2022-03-04
  • 2022-12-23
  • 2022-12-23
  • 2020-06-19
  • 2021-12-22
相关资源
相似解决方案