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.