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)

TypeError:

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')

問題は、存在しないパラメーターを取得していることです。を使用してインデックスを作成する[]と、結果が得られますKeyErrorが、メソッドが存在しない場合はgetメソッドが返されます。Nonepaginatorが呼び出しint(None)ていますが、失敗します。

メソッドの2番目のパラメーター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 に答える