Как выполнить функцию не покидая отрендереного шаблона?

Для выполнения функции в Django, не покидая отрендеренного шаблона, можно использовать AJAX или JavaScript. AJAX (Asynchronous JavaScript and XML) - это набор технологий, позволяющих обмениваться данными между браузером и сервером без обновления страницы.

В Django для работы с AJAX рекомендуется использовать библиотеку jQuery, так как она предоставляет простой и удобный способ взаимодействия с AJAX.

Для начала убедитесь, что у вас установлена библиотека jQuery. Если нет, вы можете ее установить через Yarn или NPM. Или вы можете подключить jQuery, используя ссылку на CDN:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

Затем в шаблоне, где необходимо выполнить функцию, добавьте JavaScript код для обработки AJAX запроса:

<script>
$(document).ready(function(){
    // Обработчик события нажатия на кнопку или другой элемент
    $('#my-button').click(function(){
        // AJAX запрос
        $.ajax({
            url: '/my-url/',
            type: 'GET',
            dataType: 'json',
            success: function(data){
                // В случае успешного запроса обновляем контент на странице
                $('#my-div').html(data.result);
            }
        });
    });
});
</script>

В приведенном коде мы используем обработчик события $('#my-button').click(function(){...}) для нажатия на элемент с id="my-button". При нажатии на этот элемент будет выполнен AJAX запрос на URL '/my-url/'. В случае успешного запроса, содержимое элемента с id="my-div" будет обновлено с помощью полученных данных data.result.

Теперь на серверной стороне вам необходимо создать соответствующий view-обработчик для URL '/my-url/'. В этом view-обработчике вы можете выполнить нужную вам функцию и вернуть результат в виде JSON:

from django.http import JsonResponse

def my_view(request):
    # Ваша функция
    result = my_function()

    # Возвращаем результат в виде JSON
    return JsonResponse({'result': result})

В данном примере мы используем JsonResponse для возврата данных в формате JSON.

Обратите внимание, что вам необходимо настроить URL маршрутизацию my-url так, чтобы она указывала на my_view.

Таким образом, при нажатии на кнопку или другой элемент на вашем отрендеренном шаблоне, функция будет выполнена без необходимости покидать страницу, и результат будет отображен без обновления всей страницы.