Django URL не совпадает с целевым представлением

У меня проблемы с выяснением того, почему страницы тегов для моего блога пытаются перейти к другому представлению, а не к тому, которое я задумал. Мои /tag/ url'ы должны идти в TagsListView, но вместо этого они идут в PostDetail.

Моя структура url:

app_name = 'blog'

urlpatterns = [
    path('', views.home, name='home'),
    path('search/', SearchResultsView.as_view(), name='search_results'),
    path('tag/<slug:slug>', views.TagsListView.as_view(), name='blog_tag'),
    path('<slug:slug>/', views.CategoriesDetail.as_view(), name='categories_detail'),
    path('<slug:categories_detail>/<slug:slug>/', views.PostDetail.as_view(), name='post_detail'),
    path('<slug:categories_detail>/<slug:slug>/comment',
     views.CommentCreateView.as_view(), name='post_comment_create'),
]

Вид:

class TagsListView(ListView):
    model = Tag
    template_name = 'blog/tags.html'

Шаблон (реализация должна быть динамической):

<a href="/{{ tag.slug }}"><h4><span class="badge badge-primary">{{ tag }}</span></h4></a>

По какой-то причине url, domain.com/tag/tagname пытается совпасть и проходит через представление PostDetail и 404, вместо TagListView. Кажется, что все должно совпадать, поэтому я не уверен, почему он пропускает это.

Кроме того, я полагаю, что мне следует установить модель для TagListView на Post (записи блога), и создать пользовательский набор запросов, который будет фильтровать на основе slug для запрашиваемого тега. Правильно? Или все должно быть наоборот? Я еще не дошел до этого момента, чтобы протестировать, и мне интересно, какой подход будет лучше.

Спасибо.

Вернуться на верх