【问题标题】:Dynamically replace all urls to full absolute url in template将模板中的所有 url 动态替换为完整的绝对 url
【发布时间】:2019-06-17 10:57:12
【问题描述】:

我有一个要作为电子邮件发送的模板。
因此我需要有绝对完整的 url(连同协议和域名)而不是相对的。

电子邮件中的内容将动态来自数据库(使用 ckeditor 输入,所以我不能执行类似 {{ protocol }}{{ domain_name }}{% static '' % }. 这仅适用于静态文件。但是通过 ckeditor 上传的媒体内容将在媒体文件中重新定位,我完全无法控制它。

我也不能使用 javascript,因为它是一个电子邮件模板。

目前我已经构建了一个 python 函数,它在渲染后扫描整个模板,并将协议和域名添加到 img 标记中的每个 src 属性和所有 href 属性。

我想知道是否有更好的方法

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    您可以使用request.build_absolute_uri 并制作自定义模板标签,以便在呈现邮件模板时使用。

    示例

    #templatetags/url_helper.py
    @register.simple_tag()
    def full_uri(request, relative_url):
        return request.build_absolute_uri(realtive_url)
    

    然后……

    {# Some template.html #}
    {% full_uri request some_img.url as full_img_url %}
    
    <img src={{ full_img_url }} />
    

    【讨论】:

    • 这就是问题所在。我不能做 因为那部分是从ckeditor自动渲染的。我所拥有的只是一个内容变量。我做 {{ content|safe }} 它会呈现 html 内容以及图像标签
    猜你喜欢
    • 2018-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-09
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    相关资源
    最近更新 更多