【问题标题】:How to generate absolute urls in Django 2 templates如何在 Django 2 模板中生成绝对 URL
【发布时间】:2019-02-11 01:43:52
【问题描述】:

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

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

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

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

我读了这个 SO 线程

还有一些最初的谷歌搜索结果,但它们似乎都很旧,对我不起作用。

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

【问题讨论】:

    标签: python django django-2.1


    【解决方案1】:

    您可以使用其他线程中引用的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 %}
    

    【讨论】:

    猜你喜欢
    • 2013-10-02
    • 1970-01-01
    • 2015-06-03
    • 2011-07-29
    • 1970-01-01
    • 2011-02-06
    • 2010-09-07
    • 2014-04-11
    • 1970-01-01
    相关资源
    最近更新 更多