2016-06-12 45 views
0

我正在使用Django構建一個簡單的博客應用程序。 這個程序有一個主模板blog.html必須在以下視圖之間共享:在Django中爲不同視圖分享相同的分頁代碼

  • 博客(網址:/blog/[page number]
    博客的主頁,顯示上次的文章

  • 搜索(url:/search/<query>/[page number]
    將顯示與查詢匹配的文章

  • 類別(URL:/category/<category name>/[page number]
    將每次使用函數Paginator用不同的顯示從所述給定的類別

每一個該視圖提供了模板blog.html與物體page獲得的製品對象列表(取決於視圖)。

這裏是我的問題:
模板blog.html包含尋呼機

<ul class="pager"> 
    {% if page.has_previous %} 
     <li class="previous"> 
      <a href="{{ url_previous_page }}" class="btn btn-primary" >&larr; Older</a> 
     </li> 
    {% endif %} 

    {% if page.has_next %} 
     <li class="next"> 
      <a href="{{ url_next_page }}" class="btn btn-primary" >Newer &rarr;</a> 
     </li> 
    {% endif %} 
</ul> 

我如何定義在一個優雅的方式url_next_pageurl_previous_page在所有視圖中的值?

回答

0

你不應該真的需要爲下一個和上一個按鈕提供鏈接。我建議改變你的分頁代碼是這樣的:

<div class="pagination-wrap"> 
    <span class="pagination-links"> 
     {% if page_obj.has_previous %} 
      <a href="?page={{ page_obj.previous_page_number }}" class="pagination-nav previous"></a> 
     {% endif %} 
     <span class="current"> 
      {{ page_obj.number }} of {{ page_obj.paginator.num_pages }} 
     </span> 
     {% if page_obj.has_next %} 
      <a href="?page={{ page_obj.next_page_number }}" class="pagination-nav next"></a> 
     {% endif %} 
    </span> 
    <div>{{ page_obj.start_index }} to {{ page_obj.end_index }} of {{ page_obj.paginator.count }}</div> 
</div> 

在你的意見,你需要指定是paginate_by = 15進行分頁的對象的數量。

如果你真的想,你可以創建一個mixin爲你的列表視圖使用,它有一個方法可以返回你想要的url。

+0

謝謝。問題在於該頁面沒有被指定爲查詢參數,而是作爲url的一部分(例如:/ category/mycategory/3) – TTK

相關問題