在Django-Registration中保存带有注册信息的配置文件

14
在 Django-Registration 中,文档说当你保存用户时可以保存自定义的配置文件。
但我不知道文档让我做什么。以下是他们的说明:

要启用创建与 User 相关的自定义用户配置文件(例如在 AUTH_PROFILE_MODULE 设置中指定的模型),请定义一个函数,该函数知道如何创建并保存该模型的实例以及适当的默认值,并将其作为关键字参数 profile_callback 传递。此函数应接受一个关键字参数:

user

与配置文件相关联的 User

有人能给我一个需要创建和如何传递它作为参数的函数的示例吗?

3个回答

8
您可以在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函数。

好的,我需要做同样的事情...但是我不知道如何在注册表单的示例位置显示个人资料表单并保存数据...我不知道该怎么办,感谢。 - Asinox
1
这在 Django-registration 0.8+ 中已经不再是问题了。 - Gezim

6
这是在这篇博客文章中介绍的,并在同一问题的另一个答案中进行了扩展
django-registration会在注册和激活时发送信号。在任何一个时间点,您都可以创建一个钩子来接收用户和请求对象,并为该用户创建一个档案。
来自django-registration的信号。
#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()

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接