Ошибка 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.