Я видел, что на многих веб-сайтах (включая stackoverflow) заголовок вопросов / статей в URL будет иметь дефисы, и я пытаюсь добиться того же для небольшого блогового приложения, использующего Django, однако до сих пор У меня 0 успехов.
Мой models.py
выглядит следующим образом:
class Post(models.Model):
title = models.CharField(max_length=255, unique=True)
author = models.ForeignKey(User, on_delete=models.CASCADE)
body = models.TextField()
def __str__(self):
return self.title + '|' + str(self.author)
Определение URL как:
urlpatterns = [
# re_path(r'^post/(?P<title>[\w\-]+)/$', PostView.as_view(), name='post_details'),
path('post/<slug:title>', PostView.as_view(), name='post_details'),
]
и добавление следующего к views.py
:
class PostView(DetailView):
model = Post
slug_field = slugify('title')
slug_url_kwarg = slugify('title')
template_name = 'post_details.html'
не увенчался успехом, поскольку заголовки с дефисами дают Страница не найдена (404) . Как видно из urls.py
, я пытался использовать как регулярное выражение, так и более новый синтаксис Django 2.0+, и оба приводили к одному и тому же результату.
Моя ошибка в определении URL или я не представляю слизняк правильно для вида?