Задать вопрос
Xobb
@Xobb

Reverse() функция или тэг шаблонов url?

Здравствуйте,


Упражняюсь с раутингом в Джанго. Есть файл weblog/urls.py следующего содержания:

from django.conf.urls import patterns, include, url

urlpatterns = patterns('',
    url(r'^(?P<year>\d{4}/)?((?P<month>\d{2})/)?(page/(?P<page>\d+)/)?$', 'weblog.views.posts', name='home'),
)



Когда загружаю страницу /, то попадаю на нужный мне view, тоесть раут работает.


В шаблоне есть следующий код:

<a href="{% url home page=posts.next_page_number %}">Next</a>



Который, как я вижу по стактрейсу поднимает exception следующего содержания:

Reverse for 'home' with arguments '()' and keyword arguments '{'page': 2}' not found.



Прочитав про урлы у меня сложилось впечатление что программисты Джанго предпочитают использовать несколько отдельный раутов вместо моего одного. Но тогда получается нужно писать 6 вариантов раута. Есть ли возможность этого избежать и, если есть, как бы сделать так, чтобы тэг шаблона url формировал корректный url?
  • Вопрос задан
  • 3985 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
bobry
@bobry
Есть подозрение что в pattern нужно передать все параметры, т. е.

<a href="{% url home year=... month=... page=posts.next_page_number %}">Next</a>
Ответ написан
Bahusss
@Bahusss
Python Master
А у вас во вью weblog.views.posts параметры year, month, page — указаны как аргументы?
Ответ написан
@Progrik
а в шаблоне юзайте это:
{% load url from future %}

? Есть подозрение, что именно из-за этого такая штука.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы