Создание профиля пользователя после регистрации - PullRequest
0 голосов
/ 05 февраля 2019

Я использую Джанго Аллаута.Пользователи могут либо зарегистрироваться, используя Google, Twitter, Facebook, либо они могут зарегистрироваться, используя свой адрес электронной почты.После регистрации их данные будут сохранены в таблице User.Есть также другая модель, которую я назвал Profile, которая содержит информацию о пользователе, например bio, avatar, etc.. Я хотел бы создать профиль для пользователя, когда он зарегистрируется.Я посмотрел на сигналы Аллаута и обнаружил, что сигнал user_signed_up подходит.Вот как я написал код в моем handlers.py файле:

@receiver(user_signed_up)
def create_profile(request, user):
    profile = Profile(avatar='img/blah/blah.jpg',  bio='Example text', gender='M', dob='2018-01-01',
                      country='US', user=user)
    profile.save()

Я добавил случайные вещи просто для того, чтобы я мог видеть, создается ли он или нет, но по какой-то причине, когда пользователь регистрирует свой профиль,не создается.Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Вам нужно записать сигнал, когда сработает сигнал сохранения экземпляра пользовательской модели, вам нужно написать одно условие, этот экземпляр является новым созданным или старой базой модификации, при этом вы можете создать профиль

@receiver(post_save, sender=User)
def user_updated(sender, created=False, **kwargs):
    user = kwargs.get('instance', None)
    if user and created:
        ##create profile object here
0 голосов
/ 05 февраля 2019

Вы должны быть уверены, что вы каким-то образом импортируете модуль handlers.py, чтобы обработчик сигнала был зарегистрирован, вы можете написать

 import handlers

в любом месте вашего кода, но рекомендуемое место находится вready метод класса конфигурации вашего приложения.

Ссылки:

https://chriskief.com/2014/02/28/django-1-7-signals-appconfig/ https://docs.djangoproject.com/en/2.1/ref/applications/

...