Python Django-如何发出通知?当用户注册时,它将向管理员的电子邮件发送通知

Python Django-如何发出通知?当用户注册时,它将向管理员的电子邮件发送通知,python,django,web,Python,Django,Web,这是我的form.py,如何向服务器的电子邮件发送电子邮件通知?这将通知管理员有一个新的用户注册到他的应用程序。Django实现了mail\u admins(),该设置由admins设置配置,如中所示 基本用法 来自django.core.mail导入邮件\u管理员 邮件管理员( “这里的主题”, “这是留言。”, 失败=错误 ) 首先,您需要使用ModelForm而不是forms。Form查看此内容以了解ModelForm和Form在细节上的区别 class SignupForm(forms.

这是我的form.py,如何向服务器的电子邮件发送电子邮件通知?这将通知管理员有一个新的用户注册到他的应用程序。

Django实现了
mail\u admins()
,该设置由
admins
设置配置,如中所示

基本用法
来自django.core.mail导入邮件\u管理员
邮件管理员(
“这里的主题”,
“这是留言。”,
失败=错误
)

首先,您需要使用
ModelForm
而不是
forms。Form
查看此内容以了解
ModelForm
Form
在细节上的区别

class SignupForm(forms.Form):
    username = forms.CharField(max_length=10, widget=forms.TextInput({
                'class': 'form-control',
                'placeholder': 'Username',
                })
            )
    email = forms.EmailField(
            max_length=200,
            widget=forms.TextInput({
                'class': 'form-control',
                'placeholder': 'Email'
                })
            )
    password = forms.CharField(
            min_length=6, max_length=10,
            widget=forms.PasswordInput({
                'class': 'form-control',
                'placeholder': 'Password'
                })
            )

    repeat_password = forms.CharField(
            min_length=6, max_length=10,
            widget=forms.PasswordInput({
                'class': 'form-control',
                'placeholder': 'Repeat password'
                })
            )
现在从视图中,您可以在创建新用户帐户后,像这样向站点管理员发送电子邮件

class SignupForm(forms.ModelForm):
    
     .....
     class Meta:
        model = YourUserModel
        fields = [...]

参见发送电子邮件的文档

另一个选项是在用户上设置一个信号,该信号将触发用户创建:

型号.py

 form = SignupForm(request.POST)
    if form.is_valid():
       user = form.save()
       # now you can send mail to the site admin
       mail_admins('subject','message')
from django.db.models.signals import pre_save

@receiver(pre_save, sender=User)
def user_created_email_notification(sender, instance, *args, **kwargs):
    if instance.id:
         mail_admins('subject','message')