Adding/changing django-registration-redux 中 send_email 方法中的逻辑
Adding/changing logic in send_email method within django-registration-redux
我的站点 运行 有多个域。用户可以在这些域中的每一个上注册。结果,我需要制作 django-registration-redux:
使用正确的电子邮件地址发送 registration/password 重置电子邮件
使用正确的电子邮件密码发送 registration/password 重置电子邮件
在 registration/password 重置电子邮件中使用正确的域
我一直在深入研究 django-registration-redux 的源代码,我认为我需要更新 registration/models.py (https://github.com/macropin/django-registration/blob/master/registration/models.py) 中的 send_email 方法我需要的更改。
我假设添加此自定义的最佳方法如下:
- 运行 'pip uninstall django-registration-redux==2.2'
运行 'pip freeze > requirements.txt'
从源码中拉取'registration'文件夹到我的项目中
进入 myproject/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 电子邮件模板中引用上下文变量:)
我的站点 运行 有多个域。用户可以在这些域中的每一个上注册。结果,我需要制作 django-registration-redux:
使用正确的电子邮件地址发送 registration/password 重置电子邮件
使用正确的电子邮件密码发送 registration/password 重置电子邮件
在 registration/password 重置电子邮件中使用正确的域
我一直在深入研究 django-registration-redux 的源代码,我认为我需要更新 registration/models.py (https://github.com/macropin/django-registration/blob/master/registration/models.py) 中的 send_email 方法我需要的更改。
我假设添加此自定义的最佳方法如下:
- 运行 'pip uninstall django-registration-redux==2.2'
运行 'pip freeze > requirements.txt'
从源码中拉取'registration'文件夹到我的项目中
进入 myproject/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 电子邮件模板中引用上下文变量:)