Как сделать обратный URL с аргументом ключевого слова в Jinja2?
В функции представления мы можем сделать следующее:
from django.http import HttpResponseRedirect
from django.urls import reverse
def SomeView(request):
return HttpResponseRedirect(
reverse('blog:specific-topic', kwargs={'topic':'python'})
)
В шаблоне, без аргумента ключевого слова, мы можем сделать следующее:
<a href="{{ url('home-page') }}">Home Page</a>
Но как сделать обратный URL в Jinja2 с аргументами ключевых слов?
Я разрабатываю блог о программировании, поэтому мне нужно организовать статьи по темам, включая Python, Dajngo, Jinja2, проектирование реляционных баз данных и так далее. Я написал следующее:
<a href="{{ url('blog:specific-topic', topic.slug) }}" class="topic">{{ topic.name }}</a>
Но это не сработало.
Я нашел, как это сделать. Сначала создайте словарь и добавьте в него пары ключ-значение, как в синтаксисе Python:
{% set kwargs_ = dict(topic_slug=article.topic.slug, article_slug=article.slug) %}
Затем передайте этот словарь в аргумент kwargs функции reverse (в Jinja2 обычно url):
<a href="{{ url('blog:specific-topic', kwargs=kwargs_) }}" class="topic">{{ topic.name }}</a>
И это работает.