Django: показывать что-то еще до завершения полной обработки запроса

Я хотел бы реализовать решение, при котором пользователь может сделать запрос к бэкенду и, поскольку запрос занимает некоторое время, получить ответ от бэкенда.

Я хочу отобразить ту же страницу с анимацией загрузки без javascript. Для этого я установил переменную "show_loading" на "true", чтобы отобразить анимацию загрузки через hmtl-файл. Код выглядит следующим образом: views.py

def UploadView(request):
    show_loading = True
    context["show_loading"] = show_loading
    render(request,'UPLOAD.html',context)
                    
    data = {}
#something else happening, just logical operations

   return render(request,'UPLOAD.html',context)

UPLOAD.html:

  {% if show_loading %}
   <div class="loader">
   <div class="inner one"></div>
   <div class="inner two"></div>
   <div class="inner three"></div>
   </div>
  {% endif %}

Проблема в том, что функция render не работает на первой строке render (без return), а на второй строке render (с return). Вопрос в том, всегда ли render требует возврата или я делаю что-то не так, что render не работает без возврата?

Вы не можете использовать бэкенд для обновления страницы с помощью классического представления Django, поскольку для связи с фронтендом вам нужно вернуть ответ (да, render должен вернуться). Самый простой способ - использовать Javascript: установить простой таймер, который обновляет страницу, если не получает ответа через определенное время. Если вы действительно хотите использовать бэкенд, вам нужно создать канал между бэкендом и фронтендом, посмотрите на this.

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