[英]How to fix the problem of "'NoneType' object is not subscriptable."?
[英]'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的管道
如果一切都是正確的,哪里會有錯誤?
更新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)
問題一定出在變量request
中存儲的 object 上。
您在 function 中獲得request
的值,它應該返回一個復雜的 object,它是可下標的並且有一個名為'user type'
的字段。 顯然,它沒有返回這個 object 而是返回了None
,可能是因為 i/o 錯誤或無效參數。
無論您使用什么 function 來獲取請求,我建議檢查它是否有效以及它返回的確切內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.