Воспользовался советом, который дал Origin, и сделал согласно документации.
Переписал функцию в views.py:
def article(request, article_id=1):
comment_form = CommentForm
all_comments = Comments.objects.all()
args = {}
args.update(csrf(request))
args['article'] = Article.objects.get(id=article_id)
page_comments_filter = all_comments.filter(
comments_article_id=article_id)
paginator_comments = Paginator(page_comments_filter, 4) # Show 4 comments
page = request.GET.get('page')
try:
args['comments'] = paginator_comments.page(page)
args['form'] = comment_form
args['username'] = auth.get_user(request).username
except PageNotAnInteger:
# If page is not an integer, deliver first page.
args['comments'] = paginator_comments.page(1)
args['form'] = comment_form
args['username'] = auth.get_user(request).username
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
args['comments'] = paginator_comments.page(paginator_comments.num_pages)
args['form'] = comment_form
args['username'] = auth.get_user(request).username
return render_to_response('article.html', args)
Шаблон переписал так:
<div>
{% for comments in paginator_comments %}
{# Each "comments" is a Contact model object. #}
{{ comments.full_name|upper }}<br />
...
{% endfor %}
<div class="grid-x grid-padding-x">
<div class="large-6 large-offset-1 columns">
<ul class="pagination" role="navigation" aria-label="Pagination">
{% if comments.has_previous %}
<li><a href="?page={{ comments.previous_page_number }}">«</a></li>
{% endif %}
{% for page in comments.paginator.page_range %}
{% if page == comments.number %}
<li class="current"><a href="?page={{ page }}">{{ page }}</a></li>
{% else %}
<li><a href="?page={{ page }}">{{ page }}</a></li>
{% endif %}
{% endfor %}
{% if comments.has_next %}
<li><a href="?page={{ comments.next_page_number }}">»</a></li></ul>
{% endif %}
</div>
</div>
</div>
И, наконец, urls.py:
url(r'^articles/(?P<article_id>\d+)/get/(?P<page>\d+)/$', views.article),