Отправка данных из Python в HTML в Django

У меня есть проект Django с формой в HTML-файле, и я хотел бы обновить текст на кнопке submit этой формы БЕЗ перезагрузки страницы. По существу:

  1. Я нажимаю кнопку submit на форме
  2. Python обрабатывает submit с данными формы
  3. Текст кнопки обновляется, чтобы сказать "показать результат"

Если я правильно понимаю, для этого нужно использовать 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>. Есть идеи, почему это не работает в текущем состоянии? Спасибо!

Вернуться на верх