Django静态文件未被提供给HTML-Email模板。

5
我正在Win7主机上的本地Vagrant arch机器上运行Django。我从Django中设置了我的环境变量,并将其保存在.env文件中。在我的应用程序中,所有静态文件都能正确提供服务,一切正常。
问题是:我无法在我的html-email模板中提供静态文件(图像)。到目前为止,我将它们作为硬编码文件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错误。
我缺少什么?请勿问图像是否在相应文件夹中,它确实在那里 ;)

1
你的网站正在本地虚拟机上运行,但你的邮件却被发送到'外部'。在虚拟机之外,本地 127.0.0.1 URL 是无用的。 - dentemm
最好从您的/etc/hosts文件中设置一个主机名,并将主机名映射到127.0.0.1 - Frederic Henri
1个回答

7
如@dentemm所说:您的电子邮件服务提供商试图从http://127.0.0.1:8001/static/img/my_image.png获取图像,但由于您的服务器地址仅在本地计算机上可见,因此无法获取到这些图像。解决此问题的一种方法是呈现模板并在电子邮件正文中发送该模板的截屏以查看其是否正确呈现。例如,在这里可以找到相关信息。

另一种方法是将图片文件上传到一些公开访问的服务器上。


谢谢大家,太明显了。我以为因为它在我的浏览器上打开并在我的机器上运行,所以它仍然可以访问本地主机。 - J4ckN1x
您提供的链接 https://stackoverflow.com/questions/2192799/html-to-image-in-javascript-or-python 无法访问。 - Beki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接