Есть ли способ отправить электронное письмо пользователю при создании объекта пользователя? - PullRequest
2 голосов
/ 05 июля 2011

В системе, которую я создаю, пользователь НЕ МОЖЕТ зарегистрировать себя. Пользователи добавляются одним из системных администраторов. Таким образом, нет формы регистрации пользователя или просмотра. Регистрация осуществляется только в админке, поэтому я думаю, что send_mail должен быть там (или я ошибаюсь)?

Мне нужно отправить автоматическое электронное письмо пользователю, когда он / она создается, и только потом (не при каждом сохранении модели).

Может ли кто-нибудь помочь с этим? Есть ли что-то встроенное для этого? или как мне это сделать?

Я читал о менеджере пользователя create_user, но я подумал, что есть лучший способ, чем редактирование менеджера.

Ответы [ 3 ]

5 голосов
/ 05 июля 2011

Вы можете зарегистрировать обратный вызов по сигналу post_save для модели User.Примерно так:

# note: untested code

from django.db.models.signals import post_save
from django.contrib.auth.models import User

def email_new_user(sender, **kwargs):
    if kwargs["created"]:  # only for new users
        new_user = kwargs.["instance"]
        # send email to new_user.email ..

post_save.connect(email_new_user, sender=User)

Обратите внимание на условие if kwargs["created"]:, которое проверяет, является ли это вновь созданным экземпляром пользователя.

1 голос
/ 05 июля 2011

Используйте сигнал post_save , который имеет аргумент created, отправленный с сигналом.Если созданный является правдой, отправьте ваше письмо.

Редактировать

Шон Чин победил меня.Примите его ответ

1 голос
/ 05 июля 2011

Вы можете использовать каркас сигналов . Сигнал после сохранения на объектах User будет подходящим, см. здесь для аналогичного примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...