3

我正在尝试使用标准发行版 1.3 中的 django 分页模块。

尝试加载当前由分页控制的页面时,如果我在 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)

类型错误:

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

上述代码的第 3 行出现了错误:

mails = paginator.page(page)

任何人之前都目睹过这个错误和/或知道如何纠正它?

4

2 回答 2

6

尝试更改此行:

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

对此:

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

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

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

于 2011-11-11T05:06:45.753 回答
-1
get = self.request.GET
page = int(get.get('page'))

您必须将字符串转换为 int 或

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

你能行的。两人都跑。

于 2012-12-12T12:40:38.117 回答