2017-06-21 12 views
0

ジェネリックビューを使った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。次と前は全く動作しません。ジェネリックビューを使用して複数のモデルを単一のテンプレートに渡してページ分割を行うより良い方法を教えてください。

+0

なぜこれを手動で行っていますか? 'get_queryset'メソッド全体を削除し、' model = Articles'を設定してpaginate_byを保つことができます。それは自動的に動作します。 – Melvyn

+0

get_queryset私は1つのテンプレートに2つのモデルを渡しています。私のページングに直面している問題は、htmlテンプレートの次と前のページを表示しません。 – Scofield

+0

しかし、get_queryset()で2つのモデルを作成していません。私を信じて、あなたはget_querysetは必要ありません。それを削除し、モデルを追加し、paginate_byを維持する。その後、それでも動作しないかどうかを確認し、他のすべてが正常に見えるようにします。 – Melvyn

答えて

0

このように、トリムダウン。エラーが発生した場合は投稿してください。

class homeView(generic.ListView): 
    template_name = 'success/home_page.html' 
    context_object_name = "articles" 
    paginate_by = 3 
    model = Articles 

    def get_context_data(self, **kwargs): 
     context = super(homeView, self).get_context_data(**kwargs) 
     context['quote'] = Quotes.objects.order_by('quote') 
     return context 
+0

コードはトリムされていますが、他の3つのオブジェクトを持つ次のページを表示するために、次のボタンを表示せずに表示されるオブジェクトは3つだけです – Scofield

+0

ページに表示されるページの数1の...? – Melvyn

+0

これは空白です!ページのセクションには何も表示されません – Scofield

関連する問題