Маршрут Django недоступен во время метода выборки POST, но доступен во время ручного метода GET.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Маршрут Django недоступен во время метода выборки POST, но доступен во время ручного метода GET.

Сообщение Anonymous »

Когда я пытаюсь удалить фракцию из своего приложения, используя маршрут saga/delete/2, после нажатия кнопки deleteSubmit, программа возвращает следующую ошибку:
"POST /saga/delete/2/ HTTP/1.1 " 404 3048
Не найден: /saga/delete/2/
Мое приложение использует следующие соответствующие шаблоны URL

Код: Выделить всё

#project/urls.py
urlpatterns = [
path("saga/", include("saga.urls")),
path('admin/', admin.site.urls),
]

#saga/urls.py
app_name = "saga"

urlpatterns = [
#ex: /saga/
path("", views.index, name = "index"),
#ex: /saga/results/1
path("results/",views.results, name = 'results'),
#ex: /saga/edit/
path("create/", views.create, name = 'create'),
#ex: /saga/edit/1
path("edit/", views.edit, name = 'edit'),
#ex: /saga/delete/1
path("delete/", views.delete, name = 'delete')
#ex: /saga/edit/push/?
]
Этот JavaScript обрабатывает отправку формы

Код: Выделить всё

factionForm.addEventListener('submit', function(event) {
//prevent the default form submission
event.preventDefault();
//If the Save Changes button is clicked
if (event.submitter === saveSubmit){
console.log("Save Changes Pressed");
// Code to handle form submission and save changes to the database
}

//Otherwise if the Delete changes button is clicked
else if(event.submitter === deleteSubmit){
console.log("Delete Faction Pressed");
//Attempt to send data to server
fetch(`/saga/delete/${factionId.value}/`, {
method: 'POST',
headers: {
'X-CSRFToken': getCSRF(),
},
})
//Get response from server
.then(response => {
if (response.ok) {
console.log('Faction deleted successfully');
} else {
//If a problem occurred display the response
console.error('Error deleting faction',response);
}
})
//If There is an error output it
.catch(error => {
console.error('Error:', error);
});
}

//Otherwise if neither approved button submitted the form something went wrong
else {
console.log(event.submitter, "somehow submitted the form, check and correct the code near that element");
}
})
Код, который я использую для функции getCSRF(), находится здесь:

Код: Выделить всё

function getCSRF() {
const cookies = document.cookie.split('; ');
for (let i = 0; i < cookies.length; i++) {
const [name, value] = cookies[i].split('=');
if (name === "csrfToken") {
return decodeURIComponent(value);
}
}
return null;
}
Вот также соответствующая функция просмотра

Код: Выделить всё

def delete(request,factionId):
#Get Faction To Delete
faction = Faction.objects.filter(id = factionId)
#If Faction Exists and Data has been posted from a form
if faction.count() > 0 and request.method == 'POST':
#Delete the faction
faction.delete()
#Return to create page on success (Will change to success message later)
return redirect(reverse("saga:create"))

#Return to home page on failure (happens currently during a Get request
return redirect(reverse("saga:index"))
Моя форма определена следующим образом:

Код: Выделить всё

{% csrf_token %}


Чего мне не хватает и как мне изменить свой код, чтобы мой POST был принят?
Я попытался удалить csrf_token и использовать Декоратор @csrf_exempt безуспешно.
Я пытался использовать разные функции для получения токена csrf_token, но, насколько я могу судить, моя текущая функция получает токен.
Я проверил файл settings.py, чтобы убедиться, что «django.middleware.csrf.CsrfViewMiddleware» присутствует, и это так.
Я попытался изменить URL-адрес шаблоны без всякого успеха.

Подробнее здесь: https://stackoverflow.com/questions/785 ... cessed-dur
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»