Хобрук: Ваш путь к мастерству в программировании

Объект 'dict' не имеет атрибута 'data'

Я пишу тестовые примеры для API с использованием платформы Django, метод GET работает нормально, но когда дело доходит до сообщения об ошибке POST, всегда появляется:

Объект 'dict' не имеет атрибута 'data'.

Точная ошибка:

res = respo.post({'ticker': 'FIB','open': 7.0,'close':8.0,'volume':200}) Файл "C:\Users\sathya.m\Desktop\mydsite\companies \views.py", строка 32, в сообщении serializer = StockSerializer(data=request.data) AttributeError: объект 'dict' не имеет атрибута 'data'

views.py

def post(self,request):
    serializer = StockSerializer(data=request.data)
    if serializer.is_valid():
        serializer.save()
        return Response(serializer.data, status=200)

tests.py

def test_getDataDetails(self):
    respo = StockList()
    resp = respo.get({'username':'admin','password':'pass'})
    res = respo.post({'ticker': 'FIB','open': 7.0,'close':8.0,'volume':200})
    self.assertEqual(res.status_code,200)

  • Вы должны использовать request.POST вместо request.data 28.12.2016
  • Получение ошибки ниже: AssertionError: 403! = 200 28.12.2016

Ответы:


1

Методы get и post вашего представления ожидают объект запроса в качестве аргумента, а не dict. Вы либо должны предоставить этот объект запроса самостоятельно, либо использовать тестовый клиент django (см. часть о тестировании в прекрасном руководстве)

28.12.2016
  • Спасибо Бруно. Сейчас я использовал тестовый клиент. 28.12.2016
  • Спасибо Бруно. Сейчас я использовал тестовый клиент. c = Client() c.auth = HTTPBasicAuth('admin', 'pass') response = c.post('/stocks/', json={'id': 4,'ticker': 'FIB','open ': 7.0,'close':8.0,'volume':200,'owner_id':1}) self.assertEqual(response.status_code,200) 28.12.2016
  • Ошибка утверждения: 403! = 200 28.12.2016
  • @Rubi, это другая проблема - а ты знаешь, что означает 403, не так ли? 28.12.2016
  • да Это запрещено.bcoz он был аутентифицирован ... но теперь, после удаления аутентификации, он выдает AssertionError: ожидалось, что Response, HttpResponse или HttpStreamingResponse будет возвращено из представления, но получено <type 'NoneType'> 28.12.2016
  • Посмотрите на свой код. Как вы думаете, что произойдет, если serializer.is_valid () вернет False ? 28.12.2016

  • 2

    Сообщение работает нормально, используя следующий код:

    def test_getUserDetails(self):
            url = '/user/'
            data = {"username": "Ramu", "first_name": "Ram", "last_name": "Ram", "email": "[email protected]"}
            headers = {'Content-Type': 'application/json'}
            r = requests.post(url, data=json.dumps(data), headers=headers)
            self.assertEqual(r.status_code,201)
    
    29.12.2016
    Новые материалы

    Как симулировать серию пенальти на Python с помощью симуляции Монте-Карло, часть 1: генерация функций
    Серия пенальти была огромным испытанием во время чемпионата мира по футболу. Они вызвали много споров в социальных сетях и новостных агентствах. Даже финальный матч турнира решался по..

    AST для разработчиков JavaScript
    TL; DR Эта статья - мое выступление на недавно состоявшейся конференции Stockholm ReactJS Meetup. Вы можете посмотреть слайды здесь..

    5 проектов на Python, которые нужно создать прямо сейчас!
    Добро пожаловать! Python — один из моих любимых языков программирования. Если вы новичок в этом языке, перейдите по ссылке ниже, чтобы узнать о нем больше:

    Dall-E 2: недавние исследования показывают недостатки в искусстве, созданном искусственным интеллектом
    DALL-E 2 — это всеобщее внимание в индустрии искусственного интеллекта. Люди в списке ожидания пытаются заполучить продукт. Что это означает для развития креативной индустрии? О применении ИИ в..

    «Очень простой» эволюционный подход к обучению с подкреплением
    В прошлом семестре я посетил лекцию по обучению с подкреплением (RL) в моем университете. Честно говоря, я присоединился к нему официально, но я редко ходил на лекции, потому что в целом я нахожу..

    Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
    Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

    Фишинг — Упаковано и зашифровано
    Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..