应用程序无法使用DjangoAllAuth访问配置文件pic和帖子

时间:2017-10-10 11:56:51

标签: python django django-allauth

我正在尝试使用Django-AllAuth访问用户的个人资料图片和帖子。这是我尝试加载配置文件图像的模板:

<html>


<body>

 Welcome back {{ user.first_name }} {{ user.age }}
 <img src={{user.cover.source}} height="60" width="60">

<a href="/">Home</a>
</body>


</html>

以下是view.py

def fb_personality_traits(request):
    # logger.debug('FB Page Loaded')
    return render(request, 'home/facebook_personality_traits.html')

Settings.py

SITE_ID = 1

LOGIN_REDIRECT_URL = '/facebook_personality_traits/'
SOCIALACCOUNT_QUERY_EMAIL = True
SOCIALACCOUNT_PROVIDERS = {
    'facebook': {
        'SCOPE': ['email', 'user_posts', 'public_profile', 'user_photos'],
        # 'AUTH_PARAMS': {'auth_type': 'reauthenticate'},
        'METHOD': 'js_sdk',
        'FIELDS': [
            'id',
            'email',
            'name',
            'first_name',
            'last_name',
            'cover',
            'posts',
            'age',
        ],
        'EXCHANGE_TOKEN': True,
        'VERIFIED_EMAIL': True,
        'VERSION': 'v2.10',
    }
}
ACCOUNT_LOGOUT_ON_GET = True

这里我没有得到图像。请参阅以下结果:

current image

我想要实现什么?

1)我想在屏幕上显示个人资料图片。

2)我想获取用户登录view.py的帖子并将其发送到屏幕上以显示在模板上。

1 个答案:

答案 0 :(得分:0)

django-allauth不会保留agecover等非必填字段。只有公共字段会自动保留在User模型中(see fields)。您需要通过捕获数据并将其存储在某个位置(如数据库)来自行处理。这些字段仅在登录后响应(see example method)上检索和访问,可在extra_data字典中找到。

我建议在成功登录并在数据库中存储此值后,在SocialAccount实例(本例中为Facebook)上调用get_avatar_url。在Facebook的情况下,用户头像URL不应该随着时间而改变。