Django allauth && Создание профиля пользователя с помощью post_save

Я использую django-allauth для аутентификации пользователей с разных социальных сайтов. Когда пользователь создается в моей базе данных, я хотел бы вызвать функцию, которая создаст профиль пользователя (или что-то сделает), и для этого лучше всего использовать signals.post_save .

У меня есть несколько приложений django, и, конечно, я не хочу менять ядро ​​django-allauth, поэтому мой вопрос, где мне разместить код post_save?

Спасибо.


person user2194805    schedule 17.12.2013    source источник


Ответы (1)


Вы можете создать приложение accounts локально для хранения профиля пользователя и всего, что с ним связано. Вы могли бы иметь:

# Connecting to AllAuth Signals
from allauth.account.signals import user_signed_up
from django.dispatch import receiver

@receiver(user_signed_up)
def new_user_signup(sender, **kwargs):
    p = UserProfile(user = kwargs['user'])
    p.save()
person zaphod    schedule 17.12.2013
comment
Ах хорошо. У меня был тот же код, но местоположение было неправильным. По сути, я могу поместить любое собственное приложение, но вместо signal(s).py я должен поместить его в ``__init__.py'', верно? По крайней мере, это тот, который работает на меня. Куда бы Вы поместили свой код? Какое лучшее место для этого? - person user2194805; 18.12.2013
comment
Это зависит. __init__.py может быть в порядке. Я также добавил дополнительные поля в свою регистрационную форму, поэтому я держал ее близко к коду, обрабатывающему эту форму. - person zaphod; 20.12.2013
comment
Это сработало. На самом деле у меня была проблема, когда я использовал сигнал для обычных регистраций, а Facebook не создавал объект профиля. Я дублировал процесс. Затем я добавил этот сигнал сам по себе, и он сделал и то, и другое для меня. - person JDavies; 15.12.2016