Я пытаюсь удалить объект с помощью кнопки закрытия, и он работал без использования AJAX, но мне пришлось перезагрузить страницу, чтобы отразить некоторые изменения в моих методах. Когда я применил AJAX, он больше не удалялся.

views.py

elif request.method == 'DELETE': id = json.loads(request.body)['id'] project = get_object_or_404(Project,id=id) project.delete() return JsonResponse('') 

profile.html

 {amp}lt;a onclick="deleteProject(this)" data-id="{{project.id}}" class="close col-sm-2" aria-label="Close"{amp}gt; {amp}lt;span class="card-block float-right" aria-hidden="true"{amp}gt;{amp}amp;times{amp}lt;/span{amp}gt; {amp}lt;/a{amp}gt; ... {amp}lt;script{amp}gt; $(document).on('.close',function(e){ e.preventDefault(); $.ajax({ type:'DELETE' url:'user/profile' data: { 'id' : id } success: function deleteProject(e) { let id = e.dataset.id e.closest('li').remove() fetch('',{ method: 'DELETE', headers: { 'X-CSRFToken': '{{ csrf_token }}' }, body: JSON.stringify({ 'id': id }), credentials: 'same-origin', }) } }); }); {amp}lt;/script{amp}gt; 

Что-то не так с тем, как я использую AJAX с Django? Это работает, когда я просто сохраняю все из «функции deleteProject (e) …», но мне не нужно перезагружать страницу, чтобы показать, как меняется количество проектов и общий бюджет. Есть ли способ, как я могу это исправить, или, может быть, альтернатива использованию AJAX?

Это работает, когда я просто держу все из «функции deleteProject (e) …»

Есть несколько различий с deleteProject(e) и $.ajax :

  • Заголовки X-CSRFToken
  • Учетные данные контроля доступа
  • Запросить URL
  • способ обозначения объекта, переданного в функции ajax
 $(document).on('click', '.close', function(e) { e.preventDefault(); var id = e.target.dataset.id; function deleteProject() { $(e.target).closest('li').remove(); } $.ajax({ headers: { 'X-CSRFToken': '{{ csrf_token }}' }, xhrFields: { withCredentials: true }, method: 'DELETE', // jquery v1.9.1  url: '/user/profile', data: { 'id': id }, success: deleteProject }); }); 

Пример кода для вас

  $(document).on('click','.delete',function(event) { console.log('deleted'); var id = $(this).attr("data-id"); $.get('delete', {id:id}, function(response){ var tabrow = '#table-' id; $(tabrow).remove(); }); }); 

Проверьте это https://github.com/gowthamand/django-crud-ajax-login-register-fileupload