Django - Ошибка при переходе от GET к POST
У меня есть приложение react/django, которое отлично работает, когда запрос является GET-запросом. Например, в части React у меня есть следующее
sendRequestParameters(url) {
axios({
url: url,
method: 'get',
headers: {
'X-CSRFToken': 'csrf_token',
'Accept': 'application/json',
'Content-Type': 'application/json;charset=UTF-8',
},
params:{
'TECHNOLOGY': JSON.stringify(this.state.technologySelectedValue),
// more parameters here, all in the same format
},
paramsSerializer: function(params) {
return qs.stringify(params, {arrayFormat: 'repeat'})
}
}).then((response ) => {
console.log(response.data);
}).catch((error) => {
console.log(error)
})
}
Затем, в бэкенде, я получаю параметры и возвращаю их (эта функция вызывается в другой функции, где используются возвращенные параметры, поэтому есть оператор return).
def extractParameters(request):
TECHNOLOGY = json.loads(request.GET.get('TECHNOLOGY'))
# more parameters extracted here, same format
return TECHNOLOGY etc.
Все это работает нормально. Однако мне нужно перейти на POST-запросы, и когда я делаю две небольшие модификации для этого, я получаю ошибку. Во внешнем запросе с axios я изменяю method: 'get'
на method: 'post'
. Затем, в бэкенде, я изменяю TECHNOLOGY = json.loads(request.GET.get('TECHNOLOGY'))
на TECHNOLOGY = json.loads(request.POST.get('TECHNOLOGY'))
Это дает мне следующую ошибку в терминале
TECHNOLOGY = json.loads(request.POST.get('TECHNOLOGY'))
raise TypeError(f'the JSON object must be str, bytes or bytearray, '
TypeError: the JSON object must be str, bytes or bytearray, not NoneType
Все, что я делаю, это простое изменение GET на POST, и это вызывает эту ошибку. Я читал документацию по Django, но застрял. Любая помощь будет оценена по достоинству.
Я предполагаю, что вы используете DRF (Django REST Framework). Вы можете получить его, используя data
:
TECHNOLOGY = request.data.get('TECHNOLOGY')