У меня проблема с django-taggit persian[farsi-fa].
У меня проблема, когда я ставлю персидские теги в админ панели Django, я получаю эту ошибку в шаблоне:
Reverse for 'post_tag' with arguments '('',)' not found. 1 pattern(s) tried: ['tags/(?P<tag_slug>[-a-zA-Z0-9_]+)/\\Z']
Примечание: когда я ставлю тег английского и других языков, я не получаю эту ошибку, и она работает True.
models.py
from django.db import model
from taggit.managers import TaggableManager
class Article(models.Model):
...
tags = TaggableManager()
views.py
from django.views.generic import ListView
class ArticleTagList(ListView):
model = Article
template_name = 'blog/list.html'
def get_queryset(self):
return Article.objects.filter(tag__slug=self.kwargs.get('tag_slug'))
urls.py
from django.url import path
from .views import ArticleTagList
app_name = 'blog'
urlpatterns = [
...
path("tags/<slug:tag_slug>/", ArticleTagList.as_view(), name='post_tag'),
...
]
blog/list.html
...
{% for tag in article.tags.all %}
<a href="{% url 'blog:post_tag' tag.slug %}">{{ tag.name }}</a>
{% endfor %}
...
введите описание изображения здесь
Я изменил версию django-taggit на последнюю версию, но булочка не работает. Сейчас я использую версию 3.1.0. Что я могу сделать? Есть ли какое-нибудь решение для этой проблемы?
Я столкнулся с подобной ошибкой при попытке работы с кириллическими тегами. Оказалось, что проблема не в самом django-taggit, а в конвертере путей. Как и вы, я использовал slug в своих urlpatterns, и он работал только с латинскими буквами, выдавая ошибку 'Reverse not found' всякий раз, когда я переключался на кириллицу.
Проблема в том, что конвертер slug path понимает только символы ASCII, которые содержат только латинские буквы. Я заменил его на str path converter, 'tags/<str:tag_slug>'
, и он прекрасно работает с кириллическими тегами, так что, возможно, он подойдет и вам.