@tarp20

TypeError: 'NoneType' object is not subscriptable. Где ошибка приложении Django?

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

from TarFoodApp.models import Customer,Driver

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)


ошибка скорее всего в request['user_type']=='driver' так как убираю этот код то работает

запрос высылаю с POSTMAN

5f1731058b88c985082692.png

проверяю по параметру 'user_type'

если тут все правильно где может быть ошибка ?

если нужно скину еще скрины
задаю первый раз вопрос подобного типа))
  • Вопрос задан
  • 922 просмотра
Решения вопроса 1
@tarp20 Автор вопроса
решение

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)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@mrxor
Simple is better than complex
Воспользуйтесь дебаггером и вы увидите, что у вас либо request, либо юзер равен None.
Ответ написан
alternativshik
@alternativshik
request['user'] нет такого, есть request.user не помешал бы полный код вьюхи или где там ошибка эта
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы