【问题标题】:Django TypeError <Page 1 of 8> is not JSON serializableDjango TypeError <Page 1 of 8> 不是 JSON 可序列化的
【发布时间】:2015-02-25 08:53:19
【问题描述】:

当我尝试将数据编码为 json 时发生错误。错误是由于分页造成的。我想要json编码的数据。

这是我用于从 db 获取结果然后将其编码为 json 的代码

views.py

def pagination(obj, request):
    max = request.GET.get('max') if 'max' in request.GET else 1
    paginator = Paginator(obj, max)  # Show 25 contacts per page
    page = request.GET.get('page')
    try:
        return paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        return paginator.page(1)
    except EmptyPage:
        return ""

def folder_list(request):
    folders = UserFolder.objects.filter(creator=request.user).order_by('-modified_date')
    folders_dict = []
    for folder in folders:
        d = {}
        for k, v in folder.__dict__.items():
            d[k] = str(v)
        d["creator__first_name"] = folder.creator.first_name
        folders_dict.append(d)
    folders = Common.pagination(folders_dict, request)
    folders = json.dumps(folders)
    return HttpResponse(folders)

任何帮助将不胜感激。

谢谢

【问题讨论】:

标签: python json django pagination


【解决方案1】:

我已经解决了这个问题。我刚刚在 json 中编码数据时添加了“object_list”:

def folder_list(request):
    folders = UserFolder.objects.filter(creator=request.user).order_by('-modified_date')
    folders_dict = []
    for folder in folders:
        d = {}
        for k, v in folder.__dict__.items():
            d[k] = str(v)
        d["creator__first_name"] = folder.creator.first_name
        folders_dict.append(d)
    folders = Common.pagination(folders_dict, request)
    folders = json.dumps(folders.object_list) #added .object_list
    return HttpResponse(folders)

【讨论】:

  • 不是 JSON 可序列化的
猜你喜欢
  • 2014-08-13
  • 1970-01-01
  • 2011-01-15
  • 1970-01-01
  • 2017-10-24
  • 2016-08-02
  • 2019-02-08
  • 2013-05-11
  • 2020-12-13
相关资源
最近更新 更多