확인 오년 후자 그러나 이것은 장고 1.8 파이썬과 나를 위해 작동 2.7
이다 컨텍스트 : 사용자가 새 계정을 만들 수는 관리자가 사용자를 확인하고 True로 활동 CHAGE하는 이메일을받을 때 관리자는 사용자가 지금 로그인 할 수 있음을 알리는 이메일을받습니다.
영어로 죄송합니다.
#forms.py
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
#A register form that save field is_active as False
class RegisterForm(UserCreationForm):
email = forms.EmailField(label=_("E-mail"))
first_name = forms.CharField(label=_("First Name"))
last_name = forms.CharField(label=_("Last Name"))
is_active = forms.BooleanField(required=False, initial=False, label=_("Activo"), widget=forms.HiddenInput())
class Meta:
model = User
fields = ('username','first_name','last_name','email','password1','password2','is_active')
def save(self, commit=True):
user = super(UserCreationForm, self).save(commit=False)
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
user.email = self.cleaned_data['email']
user.is_active = self.cleaned_data['is_active']
if commit:
user.save()
return user
나는 models.py 파일의 신호를 사용하지만 당신은
#models.py
from django.contrib.auth.models import User
from django.db.models import signals
from django.db import models
from django.dispatch import receiver
from django.db.models.signals import pre_save, post_save
from django.conf import settings
from django.core.mail import send_mail
#signal used for is_active=False to is_active=True
@receiver(pre_save, sender=User, dispatch_uid='active')
def active(sender, instance, **kwargs):
if instance.is_active and User.objects.filter(pk=instance.pk, is_active=False).exists():
subject = 'Active account'
mesagge = '%s your account is now active' %(instance.username)
from_email = settings.EMAIL_HOST_USER
send_mail(subject, mesagge, from_email, [instance.email], fail_silently=False)
#signal to send an email to the admin when a user creates a new account
@receiver(post_save, sender=User, dispatch_uid='register')
def register(sender, instance, **kwargs):
if kwargs.get('created', False):
subject = 'Verificatión of the %s account' %(instance.username)
mesagge = 'here goes your message to the admin'
from_email = settings.EMAIL_HOST_USER
send_mail(subject, mesagge, from_email, [from_email], fail_silently=False)
내 이전의 대답은 충분하지 않았다 당신이 더 도움이 필요하면 알려합시다 signals.py 파일에 사용할 수 있습니다. 나는 현재 당신이 찾고있는 것과 거의 일치하는 어떤 것에 노력하고 있습니다. –