Ошибка NoReverseMatch при использовании символов юникода в URL-адресе

Вот моя модель:

class Post(models.Model):
    STATUS_CHOICES = (('draft', 'Draft'), ('published', 'Published'))
    title = models.CharField(max_length=100)
    slug = models.SlugField(max_length=100, allow_unicode=True)
    author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='blog_posts')
    lead = RichTextField(config_name='lead')
    body = RichTextUploadingField(config_name='body')
    created_on = models.DateTimeField(auto_now_add=True)
    published_on = models.DateTimeField(default=timezone.now)
    updated_on = models.DateTimeField(auto_now=True)
    status = models.CharField(max_length=10, choices=STATUS_CHOICES, default='draft')
    is_featured = models.BooleanField(default=False, verbose_name='Featured Post')

    objects = models.Manager()
    published = PublishedManager()
    featured = FeaturedManager()

    class Meta:
        ordering = ('-published_on',)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('blog:post_detail', args=[self.slug])

Проект urls.py:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', include('blog.urls', namespace='blog')),
]

и app's urls.py:


app_name = 'blog'

urlpatterns = [
    path('', views.PostListView.as_view(), name='post_list'),
    path('<slug:slug>/', views.PostDetailView.as_view(), name='post_detail'),
]

А мои взгляды:

class PostListView(ListView):
    model = Post


class PostDetailView(DetailView):
    model = Post

Вот шаблон:

{% for post in object_list %}
    <p><a href="{{ post.get_absolute_url }}">{{ post.title }}</a></p>
{% endfor %}

И я получаю следующее:

Reverse for 'post_detail' with arguments '('فایل-gitignore-برای-پروژههای-جنگو',)' not found. 1 pattern(s) tried: ['blog/(?P<slug>[-a-zA-Z0-9_]+)/\\Z']

при просмотре blog/.

Что я здесь упускаю? Это на ранней стадии разработки и впервые я работаю с юникодными символами в slug.

Это Django 4.0.3.

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