diff options
author | Dan McGee <dan@archlinux.org> | 2010-09-08 07:46:04 +0200 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2010-09-08 07:46:08 +0200 |
commit | 8117e9b8779eeba45399162be03bc2aab7580ca7 (patch) | |
tree | 1911cd809c255202e89b4f9c33685edb3c27c7f5 | |
parent | f637a1eb67ed906b936ef70c0c1d8572edfe5bd7 (diff) | |
download | archweb-8117e9b8779eeba45399162be03bc2aab7580ca7.tar.gz archweb-8117e9b8779eeba45399162be03bc2aab7580ca7.tar.xz |
Paginate the news list view
This view was getting huge with ~500 items on it, and most people are not
really interested in seeing every single news item. Use the drop in
pagination and add some controls that still allow browsing to any page of
the list.
Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r-- | media/archweb.css | 4 | ||||
-rw-r--r-- | news/views.py | 1 | ||||
-rw-r--r-- | templates/news/list.html | 4 | ||||
-rw-r--r-- | templates/news/paginator.html | 22 |
4 files changed, 31 insertions, 0 deletions
diff --git a/media/archweb.css b/media/archweb.css index f417e5e..e662c67 100644 --- a/media/archweb.css +++ b/media/archweb.css @@ -142,6 +142,10 @@ div.widget { margin-bottom: 1.5em; } #artwork img.inverted { background: #333; padding: 0; } #artwork div.imagelist img { display: inline; margin: 0.75em; } +/* news: article list */ +.news-nav { float: right; margin-top: -2.2em; } +.news-nav .prev, .news-nav .next { margin-left: 1em; margin-right: 1em; } + /* news: article pages */ div.news-article .article-info { margin: 0; color: #999; } diff --git a/news/views.py b/news/views.py index 3747211..cc16981 100644 --- a/news/views.py +++ b/news/views.py @@ -19,6 +19,7 @@ def view(request, newsid): def list(request): return list_detail.object_list(request, News.objects.all().select_related('author').defer('content'), + paginate_by=50, template_name="news/list.html", template_object_name="news") diff --git a/templates/news/list.html b/templates/news/list.html index cadc24a..258456a 100644 --- a/templates/news/list.html +++ b/templates/news/list.html @@ -12,6 +12,8 @@ </ul> {% endif %} + {% include "news/paginator.html" %} + <table id="article-list" class="results"> <thead> <tr> @@ -45,5 +47,7 @@ </tbody> </table> + {% include "news/paginator.html" %} + </div> {% endblock %} diff --git a/templates/news/paginator.html b/templates/news/paginator.html new file mode 100644 index 0000000..fbd0546 --- /dev/null +++ b/templates/news/paginator.html @@ -0,0 +1,22 @@ +{% if is_paginated %} +<div class="pagination"> + <p>{{paginator.count}} news items, viewing page {{page_obj.number}} of {{paginator.num_pages}}.</p> + <p class="news-nav"> + {% if page_obj.has_previous %} + <a class="prev" href="?page={{page_obj.previous_page_number}}" + title="Go to previous page">< Prev</a> + {% endif %} + {% for num in paginator.page_range %} + {% ifequal num page_obj.number %} + <span>{{num}}</span> + {% else %} + <a href="?page={{num}}" title="Go to page {{num}}">{{num}}</a> + {% endifequal %} + {% endfor %} + {% if page_obj.has_next %} + <a class="next" href="?page={{page_obj.next_page_number}}" + title="Go to next page">Next ></a> + {% endif %} + </p> +</div> +{% endif %} |