首页 > 解决方案 > 如何从 Paginator 的页面返回 JsonResponse?Page 类型的对象不是 JSON 可序列化的

问题描述

(这是我的第一个 stackoverflow 问题)

我想从字典“上下文”(似乎是一个分页器页面)中返回 JsonResponse,如下所示:

myposts = userposts.all().values()
myfollowers = userfollowers.ffollowers.all()
myfollowings = userfollowers.ffollowings.all()

context = {"posts": page_obj,
    "loops": range(1, totalpages + 1),
    "user": uprofile.username,
    "myposts": list(myposts),
    "mypostsnum": len(userposts.all()),
    "myfollowers": list(myfollowers),
    "myfollowersnum": len(userfollowers.ffollowers.all()),
    "myfollowings": list(myfollowings),
    "myfollowingsnum": len(userfollowers.ffollowings.all())
}

这是我使用的回报:

return JsonResponse(context, safe=False)

结果我得到:

Object of type Page is not JSON serializable

我的问题是如何从“上下文”中获取 JsonResponse?

标签: pythonjsondjangojsonresponse

解决方案


问题出在"posts": page_obj. page_obj是模型的一个实例。喜欢page_obj = Post.objects.get(pk=1)

JsonResponse将调用json.dumps()您的上下文并失败,因为它不知道如何处理对象。

我建议您为此使用Django 休息框架。序列化程序仅用于此问题。


推荐阅读