Отправка писем при активации пользователя в админке Django - PullRequest
4 голосов
/ 09 августа 2010

Я собираюсь создать сайт, который отслеживал регистрацию, в которой только определенным людям разрешено регистрироваться. Несомненно, некоторые неудачники будут регистрироваться, несмотря на любые записи, которые я поместил над регистрационной формой, поэтому мы идем на модерацию.

После регистрации будет создан django.contrib.auth User и профиль, и модератору будет отправлено электронное письмо. Модератор войдет на сайт администратора Django, проверит, что это кто-то, кому разрешено зарегистрироваться и пометить свой аккаунт активным. Если они попытаются проскользнуть, то аккаунт будет удален.

Я буду использовать recaptcha, чтобы попытаться остановить автоматические попытки.

Я хотел бы отключить электронное письмо, когда учетная запись активирована или удалена, чтобы сообщить владельцу учетной записи, что произошло с его учетной записью, и что он может либо войти в систему, либо сообщить, что мы знаем, что они делают. и они должны перестать быть глупыми.

Я подозреваю, что это как-то связано с сигналами, но я, честно говоря, понятия не имею, где это будет в действительности соответствовать, учитывая, что я использую сборную модель, предоставленную из django.contrib.auth.

Любые советы, подсказки или коды любезно принимаются.

Ответы [ 2 ]

1 голос
/ 09 августа 2010

Вы хотите взглянуть на Сигналы .

  • Когда учетная запись активирована, вы должны использовать pre_save . Вы можете сравнить текущего пользователя с существующим экземпляром в базе данных: убедитесь, что экземпляр существует, проверьте, что предыдущий был активен = False, проверьте, что новый активен = True, затем отправьте электронное письмо .
  • Когда учетная запись удалена, используйте pre_delete . Если вы используете post_delete, вы не сможете получить доступ к электронной почте.
1 голос
/ 09 августа 2010
from django.db.models.signals import post_save
from django.contrib.auth.models import User

def send_user_email(sender, instance=None, **kwargs):
    if kwargs['created']:
        #your code here
post_save.connect(send_user_email, sender=User)

Как-то так должно работать. Здесь - документы.

...