簡體   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