Вы удаляете объекты, чего вам не хватает, так это того, что после отправки запроса в Django, если запрос выполнен успешно, вам необходимо соответствующим образом обновить HTML.
HTML-код вашей страницы отображается, когда вызапросить мнение.На этом этапе цикл for в вашем шаблоне выполняется и выполняет итерации по всем существующим контактам
{% for contact in contacts %}
{% endfor %}
Впоследствии, когда пользователь нажимает кнопку удаления, запрос отправляется через AJAX в Django, который эффективно удаляет выбранные объекты.HTML-код не обновляется автоматически.Когда вы обновляете страницу, Django снова выполняет код шаблона и, таким образом, цикл for запускается снова, но на этот раз список контактов изменился, поэтому вы видите изменения в этом случае.
Выможет решить вашу проблему по-разному:
1) Вместо вызова представления Django через AJAX создайте правильную форму HTML + Django, которая публикуется в представлении Django, которое после обработки формы снова перенаправляет в то же представление,Это не потребует Javascript или AJAX.Вы можете узнать больше о формах здесь .Таким образом, ваш шаблон перерисовывается после каждого сообщения, и поэтому вы увидите, что ваша таблица обновлена.
2) Вероятно, наихудший вариант, но также самый простой в реализации на данный момент, - обновить страницучерез Javascript после успешного возврата AJAX-запроса.Для этого вы можете привязать функцию к свойству success
вашего вызова $.ajax
, которая вызывает обновление, что-то вроде location.reload();
.Обратите внимание, что это неправильный выбор, поскольку вы прилагаете все усилия, чтобы вызвать представление удаления с помощью AJAX, но не получаете никаких его преимуществ, получая только худшее из обоих миров.
3) Третийопция заключается в том, чтобы отредактировать ваш HTML (на самом деле ваш DOM), используя JavaScript, когда вызов AJAX успешно возвращается.Если вы решите пойти по этому пути (как я и предполагаю), и не знаете, как это сделать, я предлагаю вам опубликовать еще один вопрос, касающийся, в частности, как изменить отображаемый HTML-код с помощью Javascript.