Pythonの辞書型を参照できない
Djangoを用いてWebアプリを作成しているのですが、Python-social-authを用いてTwitterでログインし、Pipelineという機能を使ってレスポンスをインターセプトしてユーザのプロファイル登録をしようとしているのですが、以下のコードでresponseの要素を参照したところ、'tuple' object has no attribute 'description'
というエラーがでてできません。
コード
def save_profile(backend, user, response, *args, **kwargs):
#Twitterの場合
if backend.name == 'twitter':
profile = user.get_profile()
if profile is None:
profile = Profile(user=user)
print(response)
print(response.keys())
profile.description = response['description']
profile.name = response.get('name')
profile.lang = response.get('lang')
profile.location = response.get('location')
profile.twitterUrl = response.get('url')
profile.save()
get()を使っても、[]を使っても同じエラーが出ます。
responseは正常に取得出来ていて、キーは以下のようになっています。
Key
dict_keys(['profile_use_background_image', 'screen_name', 'follow_request_sent', 'is_translator', 'listed_count', 'utc_offset', 'profile_text_color', 'geo_enabled', 'has_extended_profile', 'favourites_count', 'profile_background_image_url', 'friends_count', 'profile_background_image_url_https', 'statuses_count', 'profile_background_tile', 'created_at', 'description', 'profile_image_url', 'notifications', 'status', 'profile_sidebar_border_color', 'following', 'url', 'protected', 'time_zone', 'default_profile', 'profile_background_color', 'profile_image_url_https', 'id_str', 'lang', 'followers_count', 'id', 'profile_banner_url', 'profile_link_color', 'entities', 'profile_sidebar_fill_color', 'access_token', 'contributors_enabled', 'verified', 'default_profile_image', 'location', 'is_translation_enabled', 'name'])
どのようにresponseの要素を参照すればいいのでしょうか
追記
Profileモデル
class Profile(models.Model):
name = models.CharField(verbose_name="Name", max_length=255, unique=True)
icon = models.URLField(verbose_name="icon")
registerDate = models.DateTimeField(auto_now_add=True)
refreshDate = models.DateTimeField(auto_now=True)
user = models.OneToOneField(settings.AUTH_USER_MODEL, verbose_name="The user of this profile.")
lang = models.CharField(verbose_name="Language", max_length=255, null=True)
description = models.TextField(verbose_name="description", null=True)
twitterUrl = models.URLField(verbose_name="Twitter account URL", null=True)
location = models.CharField(verbose_name="Location", max_length=255, null=True)
このサイトを参考にしております。
サイトURL:http://psa.matiasaguirre.net/docs/pipeline.html#authentication-pipeline