#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']})