Django Paginator提出了TypeError

Nei*_*man 2 python django django-models django-pagination

我正在尝试使用django分页模块,包括标准分发版本1.3.

当试图加载当前由分页控制的页面时,如果我在uri上没有包含?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)
Run Code Online (Sandbox Code Playgroud)

类型错误:

int() argument must be a string or a number, not 'NoneType'
Run Code Online (Sandbox Code Playgroud)

错误从上面代码的第3行显示:

mails = paginator.page(page)
Run Code Online (Sandbox Code Playgroud)

有人在此之前见过这个错误和/或知道如何纠正它吗?

ick*_*fay 5

尝试更改此行:

page = request.GET.get('page')
Run Code Online (Sandbox Code Playgroud)

对此:

page = request.GET.get('page', '1')
Run Code Online (Sandbox Code Playgroud)

问题是你得到的参数不存在.使用索引[]会导致a KeyError,但如果该get方法None不存在,则返回该方法.分页器正在调用int(None),但失败了.

get如果密钥不存在而不是,则该方法的第二个参数是默认返回None.我通过了'1'哪个int不应该失败.