Джанго Пагинатор поднимает TypeError - PullRequest
2 голосов
/ 11 ноября 2011

Я пытаюсь использовать модуль разбиения на страницы django, в том числе в стандартной версии дистрибутива 1.3.

При попытке загрузить страницу, которая в настоящее время управляется нумерацией страниц, если я не включаю? Page = наУри, он выдает ошибку TypeError.У меня никогда не возникало подобной ситуации раньше, и я не вижу причин для ее возникновения.

Вот мой текущий взгляд:

paginator = Paginator(mails_list, 25) # Shows 25 mails per page

page = request.GET.get('page')
try:
    mails = paginator.page(page)
except PageNotAnInteger:
    # If page is not an integer, deliver the first page.
    mails = paginator.page(1)
except EmptyPage:
    # If page is out of range (e.g. 9999), deliver last page of results
    mails = paginator.page(paginator.num_pages)

TypeError:

int() argument must be a string or a number, not 'NoneType'

Ошибка отображается в строке 3 приведенного выше кода:

mails = paginator.page(page)

Кто-нибудь видел эту ошибку раньше и / или знает, как ее исправить?

Ответы [ 2 ]

5 голосов
/ 11 ноября 2011

Попробуйте изменить эту строку:

page = request.GET.get('page')

К этому:

page = request.GET.get('page', '1')

Проблема в том, что вы получаете параметр, который не существует. Индексирование с использованием [] приведет к KeyError, но метод get возвращает None, если он не существует. Пагинатор звонит int(None), что не получается.

Второй параметр метода get - это значение по умолчанию, которое возвращается, если ключ не существует, а не None. Я прошел '1', который int не должен завершиться неудачей.

0 голосов
/ 12 декабря 2012
get = self.request.GET
page = int(get.get('page'))

вы должны преобразовать строку в int или

 page = int(request.GET.get('page'))

ты можешь сделать это. Оба они бегут.

...