Изучаю книжку "Django by Example".
Имеется:
views.py...
def post_list(request, tag_slug=None):
object_list = Post.publiched.all()
#код taggit
tag = None
if tag_slug:
tag = get_object_or_404(Tag, slug=tag_slug)
object_list = object_list.filter(tags__in=[tag])
#end код taggit
paginator = Paginator(object_list, 2)# выводить по 2 результата
page = request.GET.get('page')
try:
posts = paginator.page(page)
except PageNotAnInteger:
posts = paginator.page(1)
except EmptyPage:
posts = paginator.page(paginator.num_pages)
return render(request, 'list.html', {'posts' : posts, 'page': page, 'tag': tag})
list.html - шаблон
{% if tag %}
Смотреть сообщения с тегами "{{ tag.name }}"
{% endif %}
{% for post in posts %}
<a href="{{ post.get_absolute_url }}">{{ post.title }}</a>
<!--taggit-->
<p class="tags">Выбрать записи по меткам:
{% for tag in post.tags.all %}
<a href="{% url "blog:post_list_by_tag" tag.slug %}">
{{ tag.name }}
</a>
{% if not forloop.last %}, {% endif %}
{% empty %}
Нет тегов.
{% endfor %}
</p>
<!--end taggit-->
<p class="date">
Опубликовано {{post.publich }} от {{ post.author }}
{{ post.body|truncatewords:7|linebreaks }}
</p>
{% endfor %}
{% include 'pagination.html' with page=posts %}
urls.py...
urlpatterns = [
url(r'^$', views.post_list, name='post_list'),
url(r'^tag/(?P<tag_slug>[-\w]+)/$', views.post_list, name='post_list_by_tag'),
url(r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/(?P<post>[-\w]+)/$',
views.post_detail,
name='post_detail'),
url(r'^(\d+)/share/$', views.post_share, name='post_share'),
]
при добавлении в шаблон блока внутри <!--taggit-->Выбрать записи по меткам: <!--end taggit-->
при запуске приложения выдает ошибку:
Reverse for 'post_list_by_tag' with arguments '('',)' not found. 1 pattern(s) tried: ['blog/tag/(?P<tag_slug>[-\w]+)/$']
В чём ошибка? Без этого блока пагинатор размещает статьи на страницы нормально. Почему обрабатывается этот URL, вместо первого?
Updated 2 May 2018, 6:50 by dron5.