Итак, вот что происходит:
Я могу получить сообщение в своем приложении Django 2.1 в своем блоге по первичному ключу. Тем не менее, по требованию маркетинговой команды меня попросили добавить ссылку на URL, поэтому вместо /blog/1
я должен получить /blog/my-blog-post-title
.
Таким образом, все еще используя значение pk для получения В блоге мне просто нужно, чтобы URL работал так, как я намереваюсь.
URL:
path('<slug:slug>/', blog_views.blog_single, name='blog-single')
В HTML я всегда называю эту страницу следующим образом:
href="{% url 'blog-single' pk=blogPost.id slug=blogPost.get_slug %}"
, так что я получаю и pk, и slug, который получается методом get_slug()
, объявленным в модели блога.
Представление здесь:
def blog_single(request, pk, slug):
context = {}
context['blogPost'] = blogPost.objects.get(id=pk)
...
return render(request, 'blog/blog-single.html', context)
Тем не менее, на любой странице, которая ссылается на blog-single
в href
, я получаю следующую ошибку:
Reverse for 'blog-single' with keyword arguments '{'pk': 2, 'slug': 'my-blog-post-title'}' not found. 1 pattern(s) tried: ['blog\\/(?P<slug>[-a-zA-Z0-9_]+)\\/$']
Я пробовал так много разных ответов, которые нашел в Inte rnet, и внимательно прочитайте ответ на этот пост, но я просто не могу понять, что не работает: Что такое ошибка NoReverseMatch и как ее исправить?
Есть предложения?