Как описано @ har sh, я обнаружил, что AJAX - лучший способ внесения асинхронных изменений в базу данных. Но отразить эти изменения без перезагрузки все еще остается незаконченной задачей.
Я полагаю, что единственное решение для этого - интерфейсная библиотека, подобная реагированию.
views.py
def delete_stock_from_portfolio(request):
Portfolio.objects.filter(stock_name="Comfort Fincap").delete()
payload = {'success': True}
return HttpResponse(json.dumps(payload), content_type='application/json')
script
function post_ajax() {
var xhr = new XMLHttpRequest()
xhr.open('POST', 'delete', true)
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')
xhr.setRequestHeader("X-CSRFToken", csrftoken)
xhr.onload = function() {
if (this.status == 200) {
console.log(this.responseText)
}
}
xhr.send()
}
function getCookie(name) {
var cookieValue = null;
if (document.cookie && document.cookie !== '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i].trim();
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) === (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
var csrftoken = getCookie('csrftoken');