如何在Django 2模板中生成绝对URL

时间:2018-09-05 20:44:46

标签: python django django-2.1

我有一个html模板,用于呈现电子邮件,在该模板中,我想附加验证链接。

我正在使用以下代码来生成链接

{% url 'verify_email' token=token email=email %}

,但是这会生成以下URL,而不是绝对URL。

enter image description here

我读了这个SO线程

和一些最初的google结果,但它们似乎都旧了,无法为我工作。

TLDR:如何在Django2模板文件中生成绝对URL

1 个答案:

答案 0 :(得分:2)

您可以使用其他线程中引用的build_absolute_uri()并注册自定义模板标签。只要在模板上下文处理器中包含takes_context,请求就会在上下文中提供(通过django.template.context_processors.request启用)。

from django.shortcuts import reverse

@register.simple_tag(takes_context=True)
def absolute_url(view_name, *args, **kwargs):
    request = context['request']
    return request.build_absolute_uri(reverse(view_name, args=args, kwargs=kwargs))

有关在何处以及如何执行此操作的更多信息in the docs

然后您可以像这样在模板中使用标记:

{% absolute_url 'verify_email' token=token email=email %}