2014-12-29 67 views
3

當我試圖將數據編碼到json中時發生錯誤。錯誤是由於分頁。我想要json編碼的數據。Django TypeError <Page 1 of 8>不是JSON可序列化

下面是我使用的用於提取從數據庫的結果,然後將其編碼爲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) 

任何幫助將是非常讚賞的代碼。

謝謝

+0

在其他request.GET中1,你可以重新寫這行'request.GET.get(「最大」),如果「最大」 ',如下所示:'request.GET.get('max',1)'你可以在這裏閱讀更多關於:https://docs.python.org/2/library/stdtypes.html#dict.get –

回答

0

我已經整理出了問題。而在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) 
相關問題