繁体   English   中英

Django - 如何发出通知?当用户注册时它会向管理员的 Email 发送通知

[英]Django - How to make a notification?f when User Register It will send notification to Email of Admin

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'
                })
            )

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

Django 实现了由ADMINS设置配置的mail_admins() ,可以在文档中找到。

基本用法

from django.core.mail import mail_admins

mail_admins(
    'Subject here',
    'Here is the message.',
    fail_silently=False
)

首先,您需要使用ModelForm而不是forms.Form请参阅此帖子以详细了解ModelFormForm的区别。

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

现在从视图中,您可以在创建新用户帐户后像这样将 email 发送给站点管理员。

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

请参阅此处的文档以发送 email

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

模型.py

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')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM