【问题标题】:override the send activation mail in django-registration覆盖 django-registration 中的发送激活邮件
【发布时间】:2013-12-02 10:51:25
【问题描述】:

我想覆盖 django-registration 应用程序中的 send_activation_email,以便能够发送带有 html 内容的邮件,而不仅仅是文本。 请注意,该函数是在 RegistrationManager 模型的模型中定义的。

非常感谢。

【问题讨论】:

    标签: django django-models django-registration


    【解决方案1】:

    使用自定义模型,例如:

    from registration.models import RegistrationProfile
    
    
    class CustomRegistrationProfile(RegistrationProfile):
        """
        Custom registration profile
        """
    
        class Meta:
            proxy = True
    
        def send_activation_email(self, site):
            """
            Override method for custom send email
            """
    

    或者,这样的方法覆盖:

    from registration.models import RegistrationProfile
    
    def send_activation_email(self, site):
        """
        Override method for custom send email
        """
    
    RegistrationProfile.send_activation_email = send_activation_email
    

    【讨论】:

    • 这不会覆盖它??!。除了将你的代码添加到我的模型之外,我还应该改变什么吗?
    • 这将导致我覆盖视图中的许多函数,每次调用基类时我都需要用我的替换它。对吧??
    • 更新答案,试试看。
    【解决方案2】:

    由于 RegistrationProfile 是一个类,您可以像往常一样覆盖它。因此,您可以制作一个应用程序(或只是一个文件)并创建一个新的代理模型,该模型将使用您的 html 电子邮件。 (https://docs.djangoproject.com/en/dev/topics/db/models/#proxy-models)

    当我上次不得不做类似的事情时,我改为更改了 activation_email.txt 文件。那是一个更快的解决方案。

    不过可能有更简单的选择。

    【讨论】:

      猜你喜欢
      • 2011-02-23
      • 2013-04-17
      • 2016-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-15
      相关资源
      最近更新 更多