"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/?
]
Код: Выделить всё
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");
}
})
Код: Выделить всё
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 %}
Я попытался удалить csrf_token и использовать Декоратор @csrf_exempt безуспешно.
Я пытался использовать разные функции для получения токена csrf_token, но, насколько я могу судить, моя текущая функция получает токен.
Я проверил файл settings.py, чтобы убедиться, что «django.middleware.csrf.CsrfViewMiddleware» присутствует, и это так.
Я попытался изменить URL-адрес шаблоны без всякого успеха.
Подробнее здесь: https://stackoverflow.com/questions/785 ... cessed-dur