Adding/changing django-registration-redux 中 send_email 方法中的逻辑

Adding/changing logic in send_email method within django-registration-redux

我的站点 运行 有多个域。用户可以在这些域中的每一个上注册。结果,我需要制作 django-registration-redux:

我一直在深入研究 django-registration-redux 的源代码,我认为我需要更新 registration/models.py (https://github.com/macropin/django-registration/blob/master/registration/models.py) 中的 send_email 方法我需要的更改。

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

有没有更简单或更正确的方法来将我的自定义逻辑构建到 def send_email 中而不进行上述更改?

谢谢!

您可以对模型进行子类化,然后覆盖调用 send_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-registration 电子邮件模板中引用上下文变量:)