Проблема с передачей словаря в API через requests.post()

#python #django #rest

Вопрос:

Как отмечено ниже, я пытаюсь передать данные словаря в API.

 def create_flow_and_phases(request):   data = {  "name": "name_example",  "description":"description_example",  "category": 2,  "precedents": [2,3],  "users": [1],  "phases": [{  "name": "phase_name",  "description": "description name",  "sequence_number": 1,  "precedents": [1]  }]  }   # Making a POST request to save flow_and_phases  url = API_HOST   "/api/flows/save_flow_and_phases/"   answer = requests.post(url, data=data, headers={'Authorization': 'Token '   request.session['user_token']})   if not answer.ok:  raise Exception("An error occurred while creating flow.")  

Ниже вы можете видеть, что формат данных словаря совпадает с форматом, переданным в Insomnia API, и что он отлично работает.

 {  "name": "Testando criação de fluxo pelo Insomnia",  "description": "Fluxo teste simulando informações de trato e colheita de café na fazendo fictícia Quipo",  "category": 2,  "precedents": [2, 3],  "users": [1],  "phases": [  {  "name": "Trato anual",  "description": "Descrição teste fase 1.",  "sequence_number": 1,  "precedents": []  },  {  "name": "Trato anual 2",  "description": "Descrição teste fase 2.",  "sequence_number": 2,  "precedents": [1]  }  ] }  

Серверная часть получает данные, как показано ниже

 flow_data = dict(data) # data is passed as parameter  

Но когда я запускаю debub, данные, относящиеся к фазам, не передаются в API, как показано на скриншоте ниже

введите описание изображения здесь

Как показано на рисунке, список с фазами не передается. Что происходит? Есть какие-нибудь предложения?

Ответ №1:

Опубликуйте данные в формате JSON, вложенные данные не работают как обычные данные для публикации. Вы можете передать данные в json параметре, и запросы должны обрабатывать заголовки и сериализацию для вас

 answer = requests.post(url, json=data, headers={'Authorization': 'Token '   request.session['user_token']})