Estoy intentando configurar algunas URL para etiquetas y categorías en un foro. Los enlaces se ven así
<a href="{% url 'article-list-by-tag' %}{{ tag }}" class="badge badge-info" >{{ tag }}</a> El patrón de URL article-list-by-tag proviene de una aplicación de DjangoCMS llamada AldrynNewsblog. Se puede encontrar AQUÍ y se ve así
url(r'^tag/(?P<tag>\w[-\w]*)/', TagArticleList.as_view(), name='article-list-by-tag'), Tenga en cuenta que NewsBlog no tiene app_name declarado en su urls.py .
La aplicación en sí es parte de una aplicación Django más grande llamada DjangoCMS. El punto de entrada de la url para este último se declara en el urls.py principal del proyecto de la siguiente manera:
path('', include('cms.urls')),el error que me sale es
Reverse for 'article-list-by-tag' not found. 'article-list-by-tag' is not a valid view function or pattern name. ¿Qué debo hacer para resolver esto? Intenté agregar espacio de nombres a varias entradas de URL, así como app_name a NewsBlog sin éxito. La versión de Django que se utiliza es 2.1
Debe pasar el .slug de la tag como parámetro de la URL, entonces:
<a href="{% url 'article-list-by-tag' tag=tag.slug %}" class="badge badge-info" >{{ tag }}</a> Si lo importa con un espacio de nombres, debe anteponer el nombre de la vista con ese prefijo, por lo que ' some_namespace: article-list-by-tag' .
En caso de que ayude a alguien, el siguiente código funcionó para mi caso de uso:
<a href="{% namespace_url 'article-list-by-tag' tag=tag.slug %}" class="badge badge-info" >{{ tag }}</a>
Donde namespace_url es una etiqueta de plantilla proporcionada por DjangoCMS.