我正在尝试使用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)
类型错误:
int() argument must be a string or a number, not 'NoneType'
错误来自上述代码的第3行:
mails = paginator.page(page)
之前有人目睹过这个错误和/或知道如何纠正错误吗?
答案 0 :(得分:5)
尝试更改此行:
page = request.GET.get('page')
对此:
page = request.GET.get('page', '1')
问题是你得到的参数不存在。使用[]
建立索引会产生KeyError
,但get
方法会返回None
(如果不存在)。分页器正在调用int(None)
,但失败了。
如果密钥不存在而不是get
,则None
方法的第二个参数是默认返回。我通过'1'
int
不应该失败。
答案 1 :(得分:-1)
get = self.request.GET
page = int(get.get('page'))
您必须将字符串转换为int 或
page = int(request.GET.get('page'))
你可以做到。他们都跑了。