如何在 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>
而且有效。
在视图函数中我们可以做以下事情:
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>
而且有效。