Создание более SEO-дружественных урлов в Django

У меня есть поле slug для моей модели статьи:

class Article(models.Model):
    Title = models.CharField(max_length=100, blank=False, null=False)
    Hero_image = models.ImageField(upload_to='hero-images/', blank= False, null=False)
    Image_caption = models.CharField(max_length=50, blank=False, null=False, default=" ")
    Content = tinymce_models.HTMLField(null=False, blank=False)
    Category = models.ManyToManyField(ArticleCategory,blank=False,related_name="articles")
    Published_date = models.DateTimeField(auto_now_add=True)
    Last_modified = models.DateField(auto_now=True)
    slug = models.SlugField(null=False, unique=True)

    def get_absolute_url(self):
        return reverse('blog-details', kwargs={"slug": self.slug})

    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = slugify(self.Title)
        return super().save(*args, **kwargs)

А вот blog-details вид:

def blog_details(request, slug):
    Articles = Article.objects.get(slug=slug)

    context = {
        "Articles": Articles,
        }
    return render(request, "blog-details.html", context)

Путь URL для blog-details таков :

path('(?P<slug>[-a-zA-Z0-9_]+)/', views.blog_details, name='blog-details'),

что дает мне такие URL, как : http://127.0.0.1:8000/blogs/(%3FPkonstantin-the-guy-who-whatevers%5B-a-zA-Z0-9_%5D+)/ Интересно, является ли этот формат URL дружественным для SEO, и могу ли я сделать его более человекочитаемым .т.е: http://127.0.0.1:8000/blogs/konstantin-the-guy-who-whatevers/

Вы оставили регулярные выражения, когда вы просто хотите использовать slug

path('(?P<slug>[-a-zA-Z0-9_]+)/', views.blog_details, name='blog-details'),

может быть просто

path('<slug: slug>', views.blog_details, name='blog-details'),

смотрите docs для получения дополнительной информации

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