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

Как отмечено ниже, я пытаюсь передать словарь data в 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.")

Ниже видно, что формат словаря data является тем же самым, который передается в 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, как показано на скриншоте ниже

enter image description here

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

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

answer = requests.post(url, json=data, headers={'Authorization': 'Token ' + request.session['user_token']})
Вернуться на верх