在django registration redux中添加/更改发送电子邮件方法中的逻辑

在django registration redux中添加/更改发送电子邮件方法中的逻辑,django,django-registration,Django,Django Registration,我的网站运行多个域。用户可以在每个域上注册。因此,我需要进行django注册redux: 使用正确的电子邮件地址发送注册/密码重置电子邮件 使用正确的电子邮件密码发送注册/密码重置电子邮件 在注册/密码重置电子邮件中使用正确的域 我一直在深入研究django registration redux的源代码,并相信我需要使用所需的更改更新registration/models.py()中的send_email方法 我假设添加此自定义的最佳方法如下: 运行“pip卸载django注册redux=

我的网站运行多个域。用户可以在每个域上注册。因此,我需要进行django注册redux:

  • 使用正确的电子邮件地址发送注册/密码重置电子邮件

  • 使用正确的电子邮件密码发送注册/密码重置电子邮件

  • 在注册/密码重置电子邮件中使用正确的域

我一直在深入研究django registration redux的源代码,并相信我需要使用所需的更改更新registration/models.py()中的send_email方法

我假设添加此自定义的最佳方法如下:

  • 运行“pip卸载django注册redux==2.2”
  • 运行'pip freeze>requirements.txt'

  • 从源代码中,将“注册”文件夹拉入我的项目

  • 进入myproject/registration/models.py并手动更新send_email方法,使其包含我的更改

是否有一种更简单或更正确的方法可以将我的自定义逻辑构建到def send_电子邮件中,而无需进行上述更改


谢谢

您可以对模型进行子类化,然后覆盖调用
send\u email()
的函数,并使用自定义函数对其进行修补

from unittest import mock
from django_registration import models

def custom_send_email():
    print('sending custom email')

class CustomEmailRegistration(models.Registration):
    def function_calling_send_email(self):
        with mock.patch('models.send_email', side_effect=custom_send_email):
            super().function_calling_send_email()

解决方案是添加一个上下文处理器,该处理器基于当前网站获取公司名称和网站,可通过请求访问该网站,然后在django注册电子邮件模板中引用上下文变量:)

,这样您就可以进行所需的修改,但你只是想看看如何最好地使用它?目前的状态是什么?你期望什么?