NoReverseMatch для Django и DjangoCMS App

Я пытаюсь установить некоторые URL для тегов и категорий на форуме. Ссылки выглядят следующим образом

<a href="{% url 'article-list-by-tag' %}{{ tag }}" class="badge badge-info" >{{ tag }}</a>

Шаблон URL article-list-by-tag взят из приложения DjangoCMS под названием AldrynNewsblog. Он может быть найден ЗДЕСЬ и выглядит следующим образом

url(r'^tag/(?P<tag>\w[-\w]*)/',
    TagArticleList.as_view(), name='article-list-by-tag'),

Обратите внимание, что в NewsBlog нет app_name, объявленного в urls.py.

Само приложение является частью более крупного приложения Django под названием DjangoCMS. url-точка входа для последнего объявлена в главной urls.py проекта следующим образом:

path('', include('cms.urls')),

Ошибка, которую я получаю, следующая

Reverse for 'article-list-by-tag' not found. 'article-list-by-tag' is not a valid view function or pattern name.

Что я должен сделать, чтобы решить эту проблему? Я пробовал добавлять пространство имен в различные записи URL, а также app_name в NewsBlog, но безрезультатно. Используемая версия Django - 2.1

Вам необходимо передать .slug из tag в качестве параметра URL, так:

<a href="{% url 'article-list-by-tag' tag=tag.slug %}" class="badge badge-info" >{{ tag }}</a>

Если вы импортируете его с пространством имен, вам нужно префикснуть имя представления этим префиксом, поэтому 'some_namespace:article-list-by-tag'.

Если это кому-то поможет, следующий код сработал для моего случая:

<a href="{% namespace_url 'article-list-by-tag' tag=tag.slug %}" class="badge badge-info" >{{ tag }}</a>

Где namespace_url - это тег шаблона, предоставленный DjangoCMS.

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