前提・実現したいこと
Djangoでget_context_data
内でPaginator
クラスをインスタンス化する方法でページネーションを実装したいです。
該当のソースコード
python
1# views.py(一部) 2from django.core.paginator import ( 3 Paginator, 4 EmptyPage, 5 PageNotAnInteger 6) 7 8class HogeListView(ListView): 9 template_name = 'app/list.html' 10 model = HogeModel 11 12 def get_context_data(self, **kwargs): 13 context = super().get_context_data(**kwargs) 14 15 queryset = HogeModel.objects.all() 16 paginator = Paginator(queryset, 5) 17 page_num = self.request.GET.get('page', 1) 18 19 try: 20 pages = paginator.page(page_num) 21 except PageNotAnInteger: 22 pages = paginator.page(1) 23 print("PageNotAnInteger") 24 except EmptyPage: 25 pages = paginator.page(1) 26 print("EmptyPage") 27 28 context['hoge_model'] = pages.object_list 29 context['page_obj'] = pages 30 return context
というコードで、page=hoge
のようにページを表すクエリ文字列に整数値以外を渡したり、存在しないページ数を渡しても、except PageNotAnInteger
やexcept EmptyPage
内のブロックが実行されません(各ブロック内にあるprint
で出力されるはずの文字列がコンソールに出力されない)。
これらのexcept文の中で処理を行いたいのですが、どのようにすれば良いですか?
補足情報(FW/ツールのバージョンなど)
Django: 3.1.3
python: 3.8.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/09 04:03