Пагинация комментариев Django не работает

есть проблема, я новичок в django, и есть проблема, которую я не могу понять,

есть вид:

def article(request, article_id = 1, comments_page_number = 1):
    all_comments = Comments.objects.filter(comments_article_id = article_id)
    paginator = Paginator(all_comments, 2)
    comment_form = CommentForm
    args = {}
    args.update(csrf(request))
    args['article'] = Article.objects.get(id = article_id)
    args['comments'] =  paginator.page(comments_page_number)
    args['form'] = comment_form
    args['username'] = auth.get_user(request).username
    return render_to_response('article.html', args)

есть шаблон article.html

{% extends 'main.html' %}

{% block article %}
<h4>{{article.article_date}}</h4>
<h2>{{article.article_title}}</h2>
<p> {{article.article_body}}</p>
<hr>

<div class="large-offset-1 large-8 columns">
<p>Комментарии: </p>
{% for comment in comments %}
    <p>{{comment.comments_text}}</p>
    <hr>
{% endfor %}
    {% if username %}
    <form action="/articles/addcomment/{{article.id}}/" method="POST" >
        {% csrf_token %}
        {{form }}
        <input type="submit" class="button" value="Add comment">
    </form>
    {% endif %}
</div>
    <div class="row">
        <div class="large-3 large-offset-5 columns">
            <ul class="pagination">
                {% if comments.has_previous %}
                    <li class="arrow"><a href="/articles/get/{{article.id}}/comments/{{ comments.previous_page_number }}">&laquo;</a></li>
                {% else %}
                    <li class="arrow unavailable"><a href="">&laquo;</a></li>
                {% endif %}
                {% for page in comments.paginator.page_range %}
                    {% if page == comments.number %}
                        <li class="current"><a href="/articles/get/{{article.id}}/comments/{{ page }}/">{{ page }}</a></li>
                    {% else %}
                        <li><a href="/articles/get/{{article.id}}/comments/{{ page }}/">{{ page }}</a></li>
                    {% endif %}
                {% endfor %}
                {% if comments.has_next %}
                    <li class="arrow"><a href="/articles/get/{{article.id}}/comments/{{ comments.next_page_number }}/">&raquo;</a></li>
                {% else %}
                    <li class="arrow unavailable"><a href="">&raquo;</a></li>
                {% endif %}
            </ul>
        </div>
    </div>

{% endblock %}

это моя статья/urls.py

urlpatterns = patterns('',
    url(r'^articles/get/(?P<article_id>\d+)/$','article.views.article'),
    url(r'^articles/get/(?P<article_id>\d+)/comments/(\d+)/$', 'article.views.article'),
)

после этого на моей странице статьи появилась нумерация страниц, но когда я нажимаю, например, на вторую страницу, она просто меняет мой URL, но новые комментарии не появляются, только старые.

Что я должен сделать, чтобы сделать это правильно? Большое спасибо!


person alohamaloha    schedule 03.06.2014    source источник
comment
Мы в средневековье или почему вы создаете URL-адреса вручную, а не используете тег шаблона {% url %}? .)   -  person yedpodtrzitko    schedule 03.06.2014
comment
напечатайте свою переменную comments_page_number в функции, чтобы увидеть, что это не всегда 1. Если это так, назовите свой второй параметр в маршруте URL-адреса, чтобы он соответствовал имени этой переменной.   -  person yedpodtrzitko    schedule 03.06.2014
comment
@yedpodtrzitko Ты гений, я добавил это в URL, и это сработало! Благодарю вас! Что вы сказали о теге шаблона {% url %}...?   -  person alohamaloha    schedule 03.06.2014
comment
тег шаблона объявления {% url %}: вы можете использовать его вместо создания URL-адресов вручную в шаблоне (см. документы docs.djangoproject.com/en/dev/ref/templates/builtins/#url ). Это поможет вам, например. если вы измените структуру своих URL-адресов в urls.py, это не нарушит ваши ссылки в шаблонах.   -  person yedpodtrzitko    schedule 03.06.2014


Ответы (2)


Ваше имя переменной comments_page_number всегда использует значение по умолчанию. Назовите свой второй параметр в маршруте URL-адреса, чтобы он соответствовал имени этой переменной.

person yedpodtrzitko    schedule 03.06.2014

тебе нужно :

url(r'^articles/get/(?P<article_id>\d+)/comments/(?P<comments_page_number>\d+)/$', 'article.views.this_article'),
person Roman Zhuravskiy    schedule 02.09.2015