'NoneType' 对象不可订阅。错误在哪里?使用带管道的 Django 应用程序
'NoneType' object is not subscriptable. Where is the error? Used Django App with Pipeline
TypeError: 'NoneType' object is not subscriptable if
request['user_type']=='driver' and not Driver.objects.filter(user_id =
user.id): TypeError: 'NoneType' object is not subscriptable ```
def create_user_by_type(backend , user , request, response , *args, **kwargs):
if backend.name == 'facebook':
avatar = 'http://graph.facebook.com/%s/picture?type=large' % response['id']
if request['user_type'] == 'driver' and not Driver.objects.filter(user_id = user.id):
Driver.objects.create(user_id=user.id,avatar=avatar)
elif not Customer.objects.filter(user_id=user.id):
Customer.objects.create(user_id=user.id, avatar=avatar)
错误最有可能出现在请求 ['user_type'] == 'driver'
中,因为如果我从代码中删除它,它就会起作用。
我正在发送来自 POSTMAN 的请求
我通过参数检查user_type
使用了来自 https://python-social-auth.readthedocs.io/en/latest/pipeline.html
的管道
如果一切都正确,哪里会出错?
问题一定出在变量request
中存储的对象上。
您在一个函数中获得了 request
的值,该函数应该 return 一个复杂的对象,它是可订阅的并且有一个名为 'user type'
的字段。显然,它没有 return 这个对象,而只是 returned None
,可能是因为 i/o-error 或无效参数。
无论您使用什么函数来获取请求,我建议检查它是否有效以及它到底是什么 returns。
更新create_user_by_type
:
def create_user_by_type(backend, user, response, *args, **kwargs):
request = backend.strategy.request_data()
if backend.name == 'facebook':
avatar = 'http://graph.facebook.com/%s/picture?type=large' % response['id']
if request['user_type'] == 'driver' and not Driver.objects.filter(user_id = user.id):
Driver.objects.create(user_id=user.id,avatar=avatar)
elif not Customer.objects.filter(user_id=user.id):
Customer.objects.create(user_id=user.id, avatar=avatar)
TypeError: 'NoneType' object is not subscriptable if request['user_type']=='driver' and not Driver.objects.filter(user_id = user.id): TypeError: 'NoneType' object is not subscriptable ```
def create_user_by_type(backend , user , request, response , *args, **kwargs):
if backend.name == 'facebook':
avatar = 'http://graph.facebook.com/%s/picture?type=large' % response['id']
if request['user_type'] == 'driver' and not Driver.objects.filter(user_id = user.id):
Driver.objects.create(user_id=user.id,avatar=avatar)
elif not Customer.objects.filter(user_id=user.id):
Customer.objects.create(user_id=user.id, avatar=avatar)
错误最有可能出现在请求 ['user_type'] == 'driver'
中,因为如果我从代码中删除它,它就会起作用。
我正在发送来自 POSTMAN 的请求
我通过参数检查user_type
使用了来自 https://python-social-auth.readthedocs.io/en/latest/pipeline.html
的管道如果一切都正确,哪里会出错?
问题一定出在变量request
中存储的对象上。
您在一个函数中获得了 request
的值,该函数应该 return 一个复杂的对象,它是可订阅的并且有一个名为 'user type'
的字段。显然,它没有 return 这个对象,而只是 returned None
,可能是因为 i/o-error 或无效参数。
无论您使用什么函数来获取请求,我建议检查它是否有效以及它到底是什么 returns。
更新create_user_by_type
:
def create_user_by_type(backend, user, response, *args, **kwargs):
request = backend.strategy.request_data()
if backend.name == 'facebook':
avatar = 'http://graph.facebook.com/%s/picture?type=large' % response['id']
if request['user_type'] == 'driver' and not Driver.objects.filter(user_id = user.id):
Driver.objects.create(user_id=user.id,avatar=avatar)
elif not Customer.objects.filter(user_id=user.id):
Customer.objects.create(user_id=user.id, avatar=avatar)