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

标签 python django django-2.1

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

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

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

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

enter image description here

我读了这个帖子

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

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

最佳答案

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

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))

更多关于在哪里以及如何做到这一点的信息in the docs .

然后您可以在模板中使用该标记,如下所示:

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

关于python - 如何在 Django 2 模板中生成绝对 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52193142/

相关文章:

python - 使用 python 发送请求

python - 如何替换所有出现的正则表达式,就像重复应用替换一样

使用 ElementTree 解析 Python XML 返回 None

python - Django 模型字段默认基于同一模型中的另一个字段

python - 基于query_params的列表方法中的Django rest框架缓存响应

python - django.db.utils.ProgrammingError : syntax error at or near "WITH ORDINALITY" LINE 6:

bash (Linux) 中的 Python3.4 不提供文本着色

python - 在 Django 中提供文件而不暴露目录结构

python - 使用 mandrill 和 django 进行电子邮件转发和跟踪

django - 如何使用 django-rest-framework 保存外键