проблема с разрешением django rest api с post и put

#python #reactjs #django #rest #axios

#питон #реагирует на #джанго #остальное #аксиос

Вопрос:

У меня проблема с запросом post и put. Мои запросы с axios в react:

 handleSubmit() {  axios.post('http://127.0.0.1:8000/api/tasks/',{  headers:{"Authorization":`Token ${this.state.token}`},  author:this.state.id,  title:this.state.title,  desc:this.state.desc,  done:false,  })  .then(  response =gt;{console.log(response);}  )  .then(  ()=gt;{window.location.reload(false);}  )  }  

Все работает нормально, но когда я изменяю AllowAny на аутентифицированный в приведенном ниже коде:

 REST_FRAMEWORK = {  'DEFAULT_PERMISSION_CLASSES': [  'rest_framework.permissions.IsAuthenticated',  ],  'DEFAULT_AUTHENTICATION_CLASSES': [  'rest_framework.authentication.SessionAuthentication',  'rest_framework.authentication.TokenAuthentication',  ] }  

я получаю такую ошибку

 POST http://127.0.0.1:8000/api/tasks/ 403 (Forbidden) dispatchXhrRequest @ xhr.js:210 xhrAdapter @ xhr.js:15 dispatchRequest @ dispatchRequest.js:58 request @ Axios.js:108 Axios.lt;computedgt; @ Axios.js:140 wrap @ bind.js:9 handleSubmit @ TaskCreate.js:41 onClick @ TaskCreate.js:73 callCallback @ react-dom.development.js:3945 invokeGuardedCallbackDev @ react-dom.development.js:3994 invokeGuardedCallback @ react-dom.development.js:4056 invokeGuardedCallbackAndCatchFirstError @ react-dom.development.js:4070 executeDispatch @ react-dom.development.js:8243 processDispatchQueueItemsInOrder @ react-dom.development.js:8275 processDispatchQueue @ react-dom.development.js:8288 dispatchEventsForPlugins @ react-dom.development.js:8299 (anonymous) @ react-dom.development.js:8508 batchedEventUpdates$1 @ react-dom.development.js:22396 batchedEventUpdates @ react-dom.development.js:3745 dispatchEventForPluginEventSystem @ react-dom.development.js:8507 attemptToDispatchEvent @ react-dom.development.js:6005 dispatchEvent @ react-dom.development.js:5924 unstable_runWithPriority @ scheduler.development.js:468 runWithPriority$1 @ react-dom.development.js:11276 discreteUpdates$1 @ react-dom.development.js:22413 discreteUpdates @ react-dom.development.js:3756 dispatchDiscreteEvent @ react-dom.development.js:5889 createError.js:16 Uncaught (in promise) Error: Request failed with status code 403  at createError (createError.js:16)  at settle (settle.js:17)  at XMLHttpRequest.onloadend (xhr.js:66)  

В дополнение к этому, запросы на получение работают правильно, даже если я перейду на IsAuthenticated.

 const getTasks = () =gt;{ //this works fine   axios.get("http://127.0.0.1:8000/api/tasks/" `user/${id}/`   ,{headers:{"Authorization":`Token ${props.token}`}})  .then(  response =gt; {  setTasks(response.data);  }  )  }  

Я ищу ответ уже 4 дня и не могу получить никаких объяснений этой проблемы. Также там ставится запрос:

 const doneTask = (t_id,title,desc) =gt; {  axios.put("http://127.0.0.1:8000/api/tasks/" `${t_id}/`,{  headers:{"Authorization":`Token ${props.token}`,"Content-Type":'application/json'},  author: 1,  title: title,  desc: desc,  done: true    }  )  .then((response)=gt;{  console.log(response);  }).catch((error)=gt;{console.log(error)})  .then(  ()=gt;{window.location.reload(false);}  )    }  

И пример представления API в django rest:

 class TaskList(generics.ListCreateAPIView):  queryset = Task.objects.all()  serializer_class = TaskSerializer  

Нужно ли мне отправлять идентификатор сеанса в заголовке? Я удалил csrf из django, прокомментировав это, так как у меня есть проверка токенов.

Комментарии:

1. Можете ли вы опубликовать код метода Django PUT

2. Можете ли вы также показать пример вашего представления API, пожалуйста

3. Я думаю, что это проблема, связанная с csrf, вы можете использовать @csrf_exempt в django метод API выше.

4. Я пробовал это, и ошибка осталась прежней @ShakeelAfridi