Отправка данных из Python в HTML в Django
У меня есть проект Django с формой в HTML-файле, и я хотел бы обновить текст на кнопке submit этой формы БЕЗ перезагрузки страницы. По существу:
- Я нажимаю кнопку submit на форме
- Python обрабатывает submit с данными формы
- Текст кнопки обновляется, чтобы сказать "показать результат"
Если я правильно понимаю, для этого нужно использовать AJAX. Проблема в том, что отправка формы зависит от вызова API в Python, поэтому HTML, по сути, должен постоянно "слушать" новые данные, передаваемые файлом views.py.
Вот код, который у меня есть (который не работает, так как когда я нажимаю submit, меня встречает страница с данными ответа JSON и ничего больше):
views.py:
def home(request):
if request.method == "POST":
print("Got form type", request.content_type)
return JsonResponse({"text": "show result"})
return render(request, 'home.html')
home.html:
<div class="content" onload="document.genform.reset()">
<form name="genform" autocomplete="off" class="form" method="POST" action="" enctype="multipart/form-data">
{% csrf_token %}
<div class="title-sect">
<h1>AJAX Test Form</h1>
</div>
<div class="submit">
<button id="submit" type="submit">Submit</button>
</div>
</form>
</div>
<script type="text/javascript">
function queryData() {
$.ajax({
url: "/",
type: "POST",
data: {
name: "text",
'csrfmiddlewaretoken': '{{ csrf_token }}',
},
success: function(data) {
var text = data['text'];
var button = document.getElementById('submit');
button.innerHTML = text;
setTimeout(function(){queryData();}, 1000);
}
});
}
$document.ready(function() {
queryData();
});
</script>
Я импортировал jQuery с помощью скрипта <script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.0.min.js"></script>
. Есть идеи, почему это не работает в текущем состоянии? Спасибо!