首页 > 解决方案 > 如何在 Django 2 模板中生成绝对 URL

问题描述

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

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

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

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

在此处输入图像描述

我读了这个 SO 线程

和一些最初的谷歌结果,但所有这些似乎都很旧,不适合我。

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

标签: pythondjangodjango-2.1

解决方案


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

from django import template
from django.shortcuts import reverse

register = template.Library()

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

更多关于在哪里以及如何在文档中做到这一点。

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

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

推荐阅读