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.