我对Django-Taggit波斯语[波斯语-法]有意见

xxhby3vn  于 2023-04-13  发布在  Go
关注(0)|答案(1)|浏览(141)

当我在Django管理面板中放置波斯语标签时,我遇到了一个问题,我在模板中得到了这个错误:

Reverse for 'post_tag' with arguments '('',)' not found. 1 pattern(s) tried: ['tags/(?P<tag_slug>[-a-zA-Z0-9_]+)/\\Z']

**注意:**当我把英语和其他语言标记我没有得到这个错误,它的作品真.
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(tags__slug=self.kwargs.get('tag_slug'))

url.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 %}

 ...

enter image description here
我将django-taggit版本更改为最新版本bun不工作。我现在使用3.1.0版本。我该怎么办?有什么解决方案吗?

mrphzbgm

mrphzbgm1#

我在尝试使用cyrillic标签时也遇到过类似的错误。问题原来不是在django-taggit本身,而是在路径转换器中。就像你一样,我在我的urlpatterns中使用了slug,它只适用于拉丁字母,每当我切换到cyrillic时,都会出现'Reverse not found'错误。
这里的问题是,slug路径转换器只理解ASCII符号,它只包含拉丁字母。我把它改为str路径转换器,'tags/<str:tag_slug>',它可以很好地处理西里尔标记,所以也许它也可以为你工作。

相关问题