我正在尝试使用包含在标准分发版本 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)
之前有人目睹过这个错误和/或知道如何纠正它吗?
最佳答案
尝试改变这一行:
page = request.GET.get('page')
对此:
page = request.GET.get('page', '1')
问题是您获得了一个不存在的参数。使用 []
进行索引会导致 KeyError
,但 get
方法如果不存在则返回 None
.分页器正在调用 int(None)
,但失败了。
get
方法的第二个参数是在键不存在时返回的默认值,而不是 None
。我传递了 '1'
,int
不应失败。
关于python - Django 分页器引发 TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8089916/