Sigo recibiendo este mensaje de error:
Inverso para 'etiquetado' con argumentos '('',)' no encontrado. 1 patrón probado: ['\^tag/\(\?P(?P[^/]+)\[\-\\w\]\+\)/\$$']
al intentar cargar mi base.html, debido a una etiqueta de anclaje. He mirado otras publicaciones con el mismo problema, pero todavía no sé dónde me estoy equivocando.
vistas.py
class TagIndexView(TagMixin, ListView): template_name = 'post/index.html' model = Post paginate_by = '10' context_object_name = 'posts' def get_queryset(self): return Post.objects.filter(tags__slug=self.kwargs.get('slug')) def tagged(request): return render(request, 'blog/tagged.html', {'title': 'Tagged'})urls.py
path(r'^tag/(?P<slug>[-\w]+)/$',TagIndexView.as_view, name='tagged') base.html
La etiqueta de anclaje:
<li class="list-group-item"><a href="{% url 'tagged' tag.slug %}">Tags</a></li>Pero sigo recibiendo un NoReverseMatch. En la etiqueta de anclaje he probado "tag.slug", "tag.id", "tag.pk" y algunos otros.
Use re_path() en lugar de path() para expresiones regulares.
Referencia: https://docs.djangoproject.com/en/3.2/topics/http/urls/#using-regular-expressions
Use [-\w]* (0 o más) en lugar de [-\w]+ (1 o más) para permitir una cadena vacía ('',) .
Llame a .as_view con .as_view() para crear la función de vista.
# path(r'^tag/(?P<slug>[-\w]+)/$', TagIndexView.as_view, name='tagged') re_path(r'^tag/(?P<slug>[-\w]*)/$', TagIndexView.as_view(), name='tagged')