Тогда редирект в js нужен?
Да.
Попробовал я протестировать, но почему-то функция success
не вызывается, пробовал алертить ответ, но, ничего не происходит. Возможно страница обновляется и не просто не успевает обновляться? Хотя у меня есть похожий пример, где все работает:
<!DOCTYPE html>
<html>
<head>
<title></title>
<script src="https://code.jquery.com/jquery-3.4.1.js"></script>
</head>
<body>
<div class="form_container">
<div id="message"></div>
<form id="form" onsubmit="f(this)">
{% csrf_token %}
<input type="text" name="bet">
<input type="text" name="bombs_counts">
<input type="checkbox" name="x2">X2
<input type="checkbox" name="x3">X3
<input type="checkbox" name="x4">X4
<input type="submit" name="send" value="Отправить">
</form>
<h1>{{request.user}} -- {{request.user.balance}}</h1>
</div>
<script>
function f(el){
$.ajax({
url: 'test/',
method: 'post',
dataType: 'html',
data: $(el).serialize(),
success: function(data){
alert(data)
}
});
};
</script>
</body>
</html>
def test(request):
bombs = int(request.POST['bombs_counts'])
bet = int(request.POST['bet'])
# bombs = int(response['bombs_counts'])
print('BOMBS == ', bombs, 'BET ==', bet)
r = generate_map(bombs)
print('R == ', r, json.dumps(r))
print(r)
return HttpResponse(json.dumps(r))
А зачем она обновляется? Обычно либо используют стандартную отправку браузером без ajax, либо отключают стандартную и используют ajax.
Стандартную через action
?
Да, ну точнее без отмены отправки через например return false
в onsubmit
Без action
форма тоже отправится на текущий адрес.