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 для запрашиваемого тега. Правильно? Или все должно быть наоборот? Я еще не дошел до этого момента, чтобы протестировать, и мне интересно, какой подход будет лучше.
Спасибо.