ジェネリックビューを使ったdjangoページネーションで多少の問題に直面しています。ページャはテンプレートの次のページを表示しませんが、1ページだけを生成します。ジェネリックビューを使用したdjangoページネーションの作成
以下は私のコードです:
views.py:
class homeView(generic.ListView):
template_name = 'success/home_page.html'
context_object_name="articles"
paginate_by = 3
def get_queryset(self):
articles =Articles.objects.order_by('article_title')
paginator = Paginator(articles,self.paginate_by)
page = self.request.GET.get('page')
try:
articles = paginator.page(page)
except PageNotAnInteger:
articles = paginator.page(1)
except EmptyPage:
articles = paginator.page(paginator.num_pages)
return articles
def get_context_data(self,**kwargs):
context = super(homeView, self).get_context_data(**kwargs)
context['quote'] = Quotes.objects.order_by('quote')
return context
テンプレート:私のページ分割ページショーの
{% for article in articles %}
{{ article.article_title}}
{{ article.aticle_hit}}
{% endfor % %}
<div class="pagination">
{% if articles.has_previous %}
<a class="navlink" href="?page={{articles.previous_page_number}}">Prev</a>
{% endif %}
Page {{articles.number}} of {{articles.paginator.num_pages}}
{% if articles.has_next %}
<a class="navlink" href="?page={{articles.next_page_number}}">next</a>
{% endif %}
</div>
だけのページ1。次と前は全く動作しません。ジェネリックビューを使用して複数のモデルを単一のテンプレートに渡してページ分割を行うより良い方法を教えてください。
なぜこれを手動で行っていますか? 'get_queryset'メソッド全体を削除し、' model = Articles'を設定してpaginate_byを保つことができます。それは自動的に動作します。 – Melvyn
get_queryset私は1つのテンプレートに2つのモデルを渡しています。私のページングに直面している問題は、htmlテンプレートの次と前のページを表示しません。 – Scofield
しかし、get_queryset()で2つのモデルを作成していません。私を信じて、あなたはget_querysetは必要ありません。それを削除し、モデルを追加し、paginate_byを維持する。その後、それでも動作しないかどうかを確認し、他のすべてが正常に見えるようにします。 – Melvyn