2014-12-29 2 views
3

Ошибка возникает, когда я пытаюсь кодировать данные в json. Ошибка связана с разбиением на страницы. Я хочу json закодированные данные.Django TypeError <Page 1 of 8> не JSON serializable

Вот код, который я использую для извлечения результатов из БД, а затем кодирования его в 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.get («Макс»), если«Макс»в request.GET еще 1 'следующим образом:' request.GET.get ('max', 1) 'вы можете прочитать больше здесь: https://docs.python.org/2/library/stdtypes.html#dict.get –

ответ

0

Я разобрался с проблемой. Я просто добавил «object_list» при кодировании данных в JSON как это:

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) 
Смежные вопросы