Как сделать обратный 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>

И это работает.

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