У меня проблема с 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>', и он прекрасно работает с кириллическими тегами, так что, возможно, он подойдет и вам.

Вернуться на верх