如何在 Jinja2 中使用关键字参数进行反向 URL?

How to do reverse URL with keyword argument in 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>

但是如何在 Jinja2 中使用关键字参数进行反向 URL?

我正在开发一个编程博客,所以我需要将文章组织成主题,包括 Python、Dajngo、Jinja2、设计关系数据库等。我写了以下内容:

<a href="{{ url('blog:specific-topic', topic.slug) }}" class="topic">{{ topic.name }}</a>

但是没有用。

我找到了方法。首先创建一个字典并向其中添加 key-value 对,如 Python 语法:

{% set kwargs_ = dict(topic_slug=article.topic.slug, article_slug=article.slug) %}

然后将这个字典传递给反向的 kwargs 参数(在 Jinja2 通常 url)函数:

<a href="{{ url('blog:specific-topic', kwargs=kwargs_) }}" class="topic">{{ topic.name }}</a>

而且有效。