【问题标题】:django static files not served to HTML-EMail templatedjango 静态文件未提供给 HTML-EMail 模板
【发布时间】:2017-08-30 16:39:03
【问题描述】:

我在 Win7 主机上的本地 Vagrant arch 机器上运行 Django。我在 .env 文件中设置了来自 Django 的环境变量。在我的应用程序中,所有静态文件都正确提供,并且一切正常。

问题:我无法在我的 html 电子邮件模板中提供我的静态文件(图像)。到目前为止,我将它们作为硬编码的文件管理器 URL 提供,我想改变它。

我正在传递 BASE_URL BASE_URL=http://127.0.0.1:8001,它被证明是有效的,作为模板的上下文并像往常一样加载静态:

{% load static %} 

并在 HTML 标记中调用它:

<img src="{{BASE_URL}}{% static 'img/my_image.png' %}">

在收到的电子邮件中,图片的 URL 是 http://127.0.0.1:8001/static/img/my_image.png,看起来正确但会触发 404。

我错过了什么??

(请不要问我图片是否在相应的文件夹中,它是;)

【问题讨论】:

  • 您的网站在本地虚拟机上运行,​​但您的电子邮件正在发送到“外部”。在你的虚拟机之外,本地 127.0.0.1 url 是没用的。
  • 最好有一个主机名并将主机名映射从您的/etc/hosts 文件设置为127.0.0.1

标签: django static django-templates html-email django-cms


【解决方案1】:

正如@dentemm 所说:您的电子邮件服务提供商尝试从http://127.0.0.1:8001/static/img/my_image.png 获取图像,但当您的服务器地址仅在您的本地计算机上可见时,他不能。因此找不到图像。解决此问题的一种方法是呈现模板并截取模板并将其发送到电子邮件正文中(以查看它是否正确呈现)。 here.

另一种方法是将 img 文件上传到某个可公开访问的服务器。

【讨论】:

  • 谢谢大家,很明显。我想是因为它在我机器上的浏览器中打开它仍然可以访问本地主机。
猜你喜欢
  • 2018-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-25
  • 2015-03-09
  • 2015-10-30
  • 2014-02-26
  • 2014-12-22
相关资源
最近更新 更多