Связь между Angular и Django на POST - PullRequest
0 голосов
/ 10 апреля 2019

Когда я выполняю запрос PUT или PATCH из Angular в Django, я получаю ответ с кодом 200. Но на самом деле никаких изменений в базе данных нет.

API является API-интерфейсом REST для Django, использующим DRF. Когда я делаю какие-либо запросы от Почтальона, все работает нормально.

Но когда я пытаюсь выполнить запрос в Angular, ответ API с кодом 200, но в базе данных нет изменений. Тот же запрос с теми же параметрами на Angular

 let headers = new HttpHeaders(
            {
                'Authorization': 'Token ' + this._userService.getToken(),
                'Content-Type': 'application/x-www-form-urlencoded'
            }
        ); 
return this._http.patch( this.urlAPI, json , {headers: headers} );
//json is the object that I would to modify

Затем я попытался отладить, как объект, который получает Django, когда я отправляю данные в Angular и в Postman, и в этом разница. Вероятно, это главная ошибка, но я не знаю, как отправить данные. Если я пытаюсь изменить тип контента на JSON, я получаю ответ «400 Bad Request».

Выход почтальона:

<QueryDict: {'address': ['Some Address']} >

А Угловой вывод:

<QueryDict: {'{"address":"Some Address"}': ['']} >

Так что я действительно потерян.

UPDATE Плохое решение для этого я делаю:

let body = new HttpParams()
            .set('name', client.name)
            //.set(... whatever);
return this._http.patch( this.urlAPI, body , {headers: headers} );

и отлично работает. Но мне нужно автоматизировать приведение

...