Проблема передачи словаря в 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, как показано на скриншоте ниже
Как показано на изображении, список с фазами не передается. Что происходит? Есть предложения?
Поместите данные как JSON, вложенные данные не работают как обычные данные POST. Вы можете передать данные в параметре json
и запросы должны обработать заголовки и сериализацию за вас
answer = requests.post(url, json=data, headers={'Authorization': 'Token ' + request.session['user_token']})