【发布时间】:2018-09-26 14:05:11
【问题描述】:
我正在尝试从 facebook 登录中获取性别并通过 Python Social Auth Django 将其保存到我的数据库中,但我无法弄清楚为什么它一直将其存储为空字符串。
models.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="profile")
gender = models.CharField(max_length=20)
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
views.py
def save_profile(backend, user, response, *args, **kwargs):
if backend.name == 'facebook':
sign_up = User.objects.get(username=user)
sign_up.profile.gender = response.get('gender')
sign_up.save()
settings.py
SOCIAL_AUTH_FACEBOOK_PROFILE_EXTRA_PARAMS = {
'fields': 'id, name, email, picture,gender'}
SOCIAL_AUTH_PIPELINE = (
'social_core.pipeline.social_auth.social_details',
'social_core.pipeline.social_auth.social_uid',
'social_core.pipeline.social_auth.auth_allowed',
'social_core.pipeline.social_auth.social_user',
'social_core.pipeline.user.get_username',
'social_core.pipeline.user.create_user',
'social_core.pipeline.social_auth.associate_user',
'social_core.pipeline.social_auth.load_extra_data',
'social_core.pipeline.user.user_details',
'accounts.views.save_profile',
)
【问题讨论】:
-
首先检查您是否从 facebook 响应中获取性别?
-
在管理页面检查社交用户/身份验证模型,在额外的字段中它应该在那里
-
是的,我可以确认响应正在显示它,并且在管理页面中它也显示为空白
标签: python django authentication social python-social-auth