You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django项目的HTML邮件模板中根据环境切换图片URL?

实现方案

针对Django环境下邮件HTML自动匹配不同环境图片URL的需求,给你几个实用的实现方式:

方式一:利用settings环境标识 + 模板条件判断

  1. 首先在项目的settings.py里添加环境区分变量,根据部署环境设置对应值:
# NP环境设为'np',生产环境设为'production'
ENVIRONMENT = 'np'
  1. 在邮件HTML模板里,通过Django模板标签做条件判断,动态生成图片URL:
<td bgcolor="#fff" align="right" style="padding: 21px 19px 18px">
    <img alt="Teste"
         src="{% if settings.ENVIRONMENT == 'np' %}https://np-domain.com/mail/logo.png{% else %}https://prod-domain.com/mail/logo.png{% endif %}"
         width="210px" />
</td>
  1. 渲染邮件模板时,要把settings传入上下文,比如用render_to_string('email_template.html', {'settings': settings}),确保模板能读取到环境变量。

方式二:自定义模板过滤器

如果多处需要切换图片URL,用过滤器更简洁:

  1. 在app下创建templatetags目录,新增env_tags.py文件:
from django import template
from django.conf import settings

register = template.Library()

@register.filter
def env_image_url(image_path):
    base_url = "https://np-domain.com" if settings.ENVIRONMENT == 'np' else "https://prod-domain.com"
    return f"{base_url}{image_path}"
  1. 在邮件模板里加载并使用过滤器:
{% load env_tags %}
<td bgcolor="#fff" align="right" style="padding: 21px 19px 18px">
    <img alt="Teste"
         src="{{ '/mail/logo.png'|env_image_url }}"
         width="210px" />
</td>

方式三:多环境配置文件拆分

如果项目已经用了分环境的配置文件(比如settings/np.py、settings/production.py),可以直接在对应配置里定义图片基础URL:

  • NP环境配置文件:MAIL_IMAGE_BASE_URL = "https://np-domain.com"
  • 生产环境配置文件:MAIL_IMAGE_BASE_URL = "https://prod-domain.com"
    然后模板里直接调用:
<td bgcolor="#fff" align="right" style="padding: 21px 19px 18px">
    <img alt="Teste"
         src="{{ settings.MAIL_IMAGE_BASE_URL }}/mail/logo.png"
         width="210px" />
</td>

注意事项

  • 必须用Django的render_to_string方法渲染邮件HTML,保证模板标签能被正确解析。
  • 图片URL要确保是公网可访问的,邮件客户端无法读取本地静态文件。

内容的提问来源于stack exchange,提问作者Carlos Eduardo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 03:15:40