Код: Выделить всё
urlpatterns = [
path('', views.index, name="index"),
path('add_note/', views.add_note, name="add_note"),
path('del_note//', views.del_note, name="del_note"),
]
< /code>
Функция просмотра django для удаления примечания также создана. < /p>
@require_POST
def del_note(request, id):
del_obj = get_object_or_404(Note, id=id, user=request.user)
del_obj.delete()
return JsonResponse({"status": 200, "message": "Note deleted"})
< /code>
А вот HTML списка с этой кнопкой «мусор». < /p>
[list]
{% for note in notes %}
[*]
{{ note.text }}
[img]{% static [/img]
[img]{% static [/img]
{% endfor %}
[/list]
< /code>
И это функция JS Fetch для запроса отправки на URL -адрес django "del_note". < /p>
const noteList = document.querySelector(".todo__list");
//const delUrl = document.body.dataset.delNoteUrl;
function getCSRFToken() {
const tokenInput = document.querySelector("input[name='csrfmiddlewaretoken']");
return tokenInput ? tokenInput.value : "";
}
noteList.addEventListener("click", (e) => {
const deleteBtn = e.target.closest(".delete-btn");
// if (!deleteBtn) return;
const parentLi = deleteBtn.closest(".todo__note");
const noteId = parentLi.getAttribute("data-id");
console.log("Note id:", noteId); // 2 for example
fetch(`/del_note/${noteId}/`, {
method: "POST",
headers: {
"X-CSRFToken": getCSRFToken(),
},
})
.then((res) => {
if (!res.ok) {
throw new Error(`HTTP error ${res.status}`);
}
return res.json();
})
.then((data) => {
if (data.status === 200) {
parentLi.remove();
} else {
alert("Fail to delete the note.");
}
})
.catch((err) => {
console.error("Error:", err);
});
});
Введите описание изображения здесь
Подробнее здесь: https://stackoverflow.com/questions/797 ... h-function