Сохранение профиля с регистрацией в Django-Registration
В Django-Registration говорится, что вы можете сохранить пользовательский профиль при сохранении пользователя.
Но я понятия не имею, что мне просит документация. Вот что они говорят:
Чтобы включить создание пользовательского профиля вместе с User
(например, модель, указанная в параметре AUTH_PROFILE_MODULE
), определите функцию, которая умеет создавать и сохранять экземпляр этой модели с соответствующими значениями по умолчанию, и передать его как аргумент ключевого слова profile_callback
. Эта функция должна принимать один аргумент ключевого слова:
User
User
, чтобы связать профиль с.
Может ли кто-нибудь дать мне пример функции, которая должна быть создана, и как передать ее в качестве аргумента?
Ответы
Ответ 1
Вы можете передать функцию обратного вызова в файл urls.py.
from mysite.profile.models import UserProfile
url( r'^accounts/register/$', 'registration.views.register',
{ 'profile_callback': UserProfile.objects.create }, name = 'registration_register' ),
Замените свою собственную функцию для UserProfile.objects.create при необходимости.
Ответ 2
Это описано в этом blogpost и расширен в ответе на еще один вопрос о та же проблема
django-registration отправляет сигнал при различных событиях - регистрации и активации. В любой из этих точек вы можете создать привязку к этому сигналу, которому будут предоставлены пользователи и объекты запроса - оттуда вы можете создать профиль для этого пользователя.
Сигнал от регистрации django
#registration.signals.py
user_registered = Signal(providing_args=["user", "request"])
Код для создания профиля
#signals.py (in your project)
user_registered.connect(create_profile)
def create_profile(sender, instance, request, **kwargs):
from myapp.models import Profile
#If you want to set any values (perhaps passed via request)
#you can do that here
Profile(user = instance).save()
Ответ 3
Для тех, кто встретил эту проблему, я думаю, что это сообщение в блоге - хороший учебник: http://johnparsons.net/index.php/2013/06/28/creating-profiles-with-django-registration/.