首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django -集成django-profile(和django-注册)与django-facebook

Django -集成django-profile(和django-注册)与django-facebook
EN

Stack Overflow用户
提问于 2013-07-14 10:25:42
回答 1查看 598关注 0票数 0

Django 1.5.1

我已经设置了我的小网站的django-profilesdjango-registration的方式,涉及一个‘自定义’注册后端,以便在注册过程中,新用户填写他们的用户名,密码和个人资料字段一次。但我现在正在尝试允许用户登录Facebook并尝试使用django-facebook。据我所知,通过django-facebook的Facebook登录登录将验证某人的身份,但这不会创建用户对象或配置文件对象。

因此,我的想法是添加一个额外的个人资料字段,其中包含用户的潜在Facebook ID(我认为这是唯一的),如果他们想使用Facebook。然后强制检查每个模板,检查用户是否有配置文件,如果没有,则将其定向到“创建配置文件”页面。然后,每当用户通过Facebook登录登录时,它都会以某种方式将他们的会话链接到与Facebook ID匹配的相应配置文件对象(以及与配置文件对象相对应的用户对象)。我想我必须应用一个过滤器,然后创建一个“信号”,但我不太确定如何做到这一点。

不过,这听起来非常复杂。我怎样才能以正确的方式完成这个任务呢?

EN

回答 1

Stack Overflow用户

发布于 2013-07-15 08:21:35

下面是我建议你做事情的方法。去掉django-facebook,看看django-allauth。它将处理帐户(注册、逻辑、连接社交帐户)。

另外,django-profile对我来说在1.5+方面有很多问题,我不会为它操心,而是创建我自己的配置文件应用程序和UserProfile模型,其中包含django-allauth无法处理的任何附加字段。

代码语言:javascript
复制
class UserProfile(models.Model):
    user = models.OneToOneField(User)
    default_address = models.OneToOneField(Address, blank=True, null=True)
    default_tshirt_size = models.CharField(blank=True, null=True, choices=constants.tshirt_sizes, max_length=50)
    default_shoe_size = models.CharField(blank=True, null=True, choices=constants.shoe_sizes, max_length=50)

您的用户配置文件模型应该指向allauth正在使用的同一用户模型。

代码语言:javascript
复制
from allauth.utils import get_user_model
User = get_user_model()

这是我用来自动创建用户配置文件的一个很好的方法。

代码语言:javascript
复制
User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0])

然后,只需创建一个带有save()方法的注册表单类,该方法以user为参数。在设置文件中链接到此类。

代码语言:javascript
复制
ACCOUNT_SIGNUP_FORM_CLASS = 'yourproject.yourapp.forms.SignupForm'

请参阅这篇文章中的相关示例,当然,除了您的实现之外,您可能希望在此时获取基于user.id的UserProfile,并将附加值保存到配置文件实例中。

How to customize user profile when using django-allauth

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17635998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档