簡體   English   中英

'NoneType' object 不可下標。 錯誤在哪里? 使用帶有管道的 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的管道

如果一切都是正確的,哪里會有錯誤?

更新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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM