首页 > 解决方案 > 通过 Django 管理应用程序激活帐户时向用户发送电子邮件

问题描述

当通过 Django 管理应用程序激活用户帐户时,有没有办法向用户发送电子邮件?我可以独立于 Django 管理应用程序执行此操作,但我希望管理员在激活用户之前登录。有没有办法在不自定义 Django 管理应用程序代码的情况下实现这一点?提前致谢。

标签: djangoadmin

解决方案


好吧,您可以覆盖ModelForm并在方法中添加电子邮件发送逻辑clean。还要在Admin课堂上使用该模型形式。例如:

class UserForm(forms.ModelForm):
    manual_activation = forms.BooleanField()  # a flag which determines if the user should be manually activated

    class Meta:
        model = User
        fields = '__all__'


    def clean(self):
        manual_activation = self.cleaned_data.pop('manual_activation', False)  
        if manual_activation:
             # send_email logics

        return self.cleaned_data


class UserAdmin(admin.ModelAdmin):
     form = UserForm

将会发生的是,在用户管理页面中,如果您单击一个用户,它将在表单中显示一个额外的字段,名为manual_activation. 如果您检查并保存表单,那么在干净的方法中,您可以捕获manual_activation并基于该发送电子邮件的值。


推荐阅读