Теги на русском django taggit

Мне нужно, чтобы при нажатии на тег - отображался список по этому тегу. Я уже сделал поиск по тегу, но он работает только на тегах на английском языке. Если писать теги на русском выходит ошибка NoReverseMatch. Использую django-taggit. Показал не весь, чтобы не загромождать

models.y

class Anime(models.Model):
    tags = TaggableManager()

views.py

def animes(request, tag_slug=None):
    """Выводит списко аниме"""
    animes = Anime.objects.all()
    tag = None

    if tag_slug:
        tag = get_object_or_404(Tag, slug=tag_slug)
        animes = animes.filter(tags__in=[tag])
    
    context = {'animes': animes, 'tag': tag}
    return render(request, 'sugar_p/animes.html', context)

urls.py

urlpatterns = [
    # Домашняя страница
    path('', views.index, name='index'),
    # Страница со списком аниме.
    path('animes/', views.animes, name='animes'),
    # Поиск по тегу
    path('animes/tag/<slug:tag_slug>/', views.animes, name='animes_by_tag'),
]

animes.html

        {% for tag in anime.tags.all %}  
            <a href="{% url 'sugar_p:animes_by_tag' tag.slug %}">  
                    {{ tag.name }}  
            </a>  
            {% if not forloop.last %}, {% endif %}  
        {% endfor %} 

Я тоже столкнулся с этой проблемой, но решил немного по-другому. Сперва думал, может с самой либой что-то не так, ну не может в кириллицу, бывает, но проблема оказалась в другом месте.

Всё дело в конвертере пути slug. Как оказалось, он может только в ASCII-символы, а кириллицу туда не завезли, только латиницу. Поэтому я поменял конвертер slug на str, и всё заработало.

На примере приведённого в посте маршрута будет так (меняем конвертер slug на str):

path('animes/tag/<str:tag_slug>/', views.animes, name='animes_by_tag')
Вернуться на верх