У меня есть полный CRUD на моем бэкэнде Django, и сейчас я пытаюсь установить полный CRUD на моем интерфейсе React.
Успешно создал форму и смог присвоить значения новому сообщению и console.log.Когда я попытался post
выполнить бэкэнд, я сначала получил 403 (Not Allowed
, но затем я изменил свой REST_FRAMEWORK с 'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
на 'rest_framework.permissions.AllowAny'
и теперь получаю 405 (Method Not Allowed)
.
Некоторый код
Бэкэнд
REST_FRAMEWORK = {
# Use Django's standard `django.contrib.auth` permissions,
# or allow read-only access for unauthenticated users.
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.AllowAny'
]
}
Фронтенд
handleFormSubmit = (event, requestType, circuitID) => {
event.preventDefault();
const name = event.target.elements.name.value;
const description = event.target.elements.description.value;
console.log(name, description)
switch ( requestType ) {
case 'post':
return axios.post('http://localhost:8000/api/', {
name: name,
description: description
})
.then(res => console.log(res))
.catch(error => console.log(error));
case 'put':
return axios.put(`http://localhost:8000/api/${circuitID}/`, {
name: name,
description: description
})
.then(res => console.log(res))
.catch(error => console.log(error));
}
}
шаблоны URL в бэкэнде приложения
urlpatterns = [
path('', circuit_list.as_view()),
path('create/', circuit_create.as_view()),
path('<pk>', circuit_detail.as_view()),
path('<pk>/update/', circuit_update.as_view()),
path('<pk>/delete/', circuit_delete.as_view()),
path('workout/create/', workout_create.as_view()),
path('workout/', workout_list.as_view()),
path('workout/<pk>', workout_detail.as_view()),
path('<pk>/update/', workout_update.as_view()),
path('<pk>/delete/', workout_delete.as_view()),
]
шаблоны URL в Django
urlpatterns = [
path('admin/', admin.site.urls),
path('api-auth', include('rest_framework.urls', namespace='rest_framework')),
path('api/', include('circuit.api.urls'))
]
Что я сделал
Я установил CORS, так что это не моя проблема.
Console.log с именем и описанием работает, поэтому он получает новый ввод.Я изменил URL-адреса во внешнем интерфейсе и бэкэнде, но это дает мне более очевидные ошибки при невозможности найти сервер.
Я пытаюсь найти другой способ предоставления разрешений.Я пытался включить @permissions выше выбранных представлений, но все равно выдает мне ту же ошибку.