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

如何自定义Django Rest API密码重置邮件中的完整URL

django-rest-passwordreset 自定义密码重置邮件完整URL方案

你不需要修改第三方库源码,以下两种方案都可以实现拼接带https和域名的完整可访问链接,按需选择即可。

方案1:通过内置信号自定义邮件逻辑(灵活性最高,推荐生产环境使用)

这个方案可以完全自定义邮件标题、内容、发件人信息,不受库默认逻辑限制,适配多环境部署场景。

  1. 在你项目中已注册的用户相关App(比如命名为users)下新建signals.py文件,写入信号处理逻辑:
    from django.dispatch import receiver
    from django_rest_passwordreset.signals import reset_password_token_created
    from django.core.mail import send_mail
    from django.conf import settings
    
    @receiver(reset_password_token_created)
    def send_custom_reset_password_email(sender, instance, reset_password_token, *args, **kwargs):
        # 直接拼接符合你要求的完整重置URL
        full_reset_url = f"https://mywebsite.com/password-reset/?token={reset_password_token.key}"
        
        # 自定义邮件正文
        mail_content = f"""请点击下方链接完成账户密码重置:
    

{full_reset_url}
如果不是你本人发起的密码重置请求,直接忽略本邮件即可。
链接有效期为24小时。
"""

send_mail(
        subject="账户密码重置",
        message=mail_content,
        from_email=settings.DEFAULT_FROM_EMAIL,
        recipient_list=[reset_password_token.user.email],
        fail_silently=False,
    )
```
  1. 修改对应App的apps.py文件,在ready方法中导入信号文件,确保信号能正常生效:
    from django.apps import AppConfig
    
    class UsersConfig(AppConfig):
        default_auto_field = "django.db.models.BigAutoField"
        name = "users"
    
        def ready(self):
            import users.signals
    
  2. 在项目settings.py中添加配置,关闭库默认的邮件发送逻辑,避免用户收到重复邮件:
    DJANGO_REST_PASSWORDRESET_SEND_EMAIL = False
    

方案2:通过全局配置指定URL前缀(配置简单,适合固定域名场景)

如果不需要自定义邮件内容,只是想补全URL的协议和域名,可以直接在settings.py中添加以下配置项,库会自动拼接生成完整链接:

# 配置站点域名
DJANGO_REST_PASSWORDRESET_DOMAIN = "mywebsite.com"
# 配置使用HTTPS协议
DJANGO_REST_PASSWORDRESET_PROTOCOL = "https"
# 如果你的重置路径和默认不一致,再加这行指定路径,当前场景可以不加
# DJANGO_REST_PASSWORDRESET_RESET_PASSWORD_URL_PATH = "/password-reset/"

配置完成后重启服务,默认发送的邮件里就会自动生成你需要的完整URL格式。

注意事项

  • 两种方案二选一即可,同时使用会导致用户收到两封重置邮件
  • 生产环境建议搭配环境变量存储域名信息,方便测试、生产环境自动切换
  • 确保配置的域名和前端实际部署的密码重置页路由完全一致,避免链接无法访问

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 00:21:13