Как вывести мою функцию в html в Django
прошу заранее извинить меня, если на мой вопрос уже много раз отвечали. Поскольку я новичок в django, я просто не знаю, по какому ключевому слову мне нужно искать.
Я сделал таймер обратного отсчета, который хорошо работает в консоли. Функция отображает часы(оставшиеся дни:часы:минуты:секунды), уменьшаясь на секунду до конца.
def countdown():
dt = get_delta()
while dt > 0:
d = calculation(dt)['day']
h = calculation(dt)['hour']
m = calculation(dt)['min']
s = calculation(dt)['sec']
countdown.timer = '{:02d} days {:02d} hours {:02d} mins {:02d} secs'.format(d, h, m, s)
print(countdown.timer, end='\r')
time.sleep(1)
dt -= 1
countdown.boom = "--------Happy birthday!--------"
print(countdown.boom)
Я хочу отобразить эту часть на моей веб-странице, созданной с помощью django.
countdown.timer = '{:02d} days {:02d} hours {:02d} mins {:02d} secs'.format(d, h, m, s)
Это моя часть функции рендеринга:
def index(request):
context = {'timer': countdown.timer}
return render(request, 'MainApp/index.html', context)
Я пытался передать переменную countdown.timer или саму функцию countdown() в мой шаблон django.
<div class="container-fluid" style="background-color: black">
<div class="rows">
<div class="col-md-12">
<article>
<h1>This is where my timer is.</h1>
<p>{{ timer }}</p>
</article>
</div>
</div>
</div>
Это не кажется правильным, и это не сработало, но я не знаю, как это сделать. Когда я запускаю его dev-сервере, функция прекрасно работает на консоли, но в браузере ничего не отрисовывается. Подскажите, пожалуйста, что мне копать?
Это не то, как работает backend и frontend, вы должны вызвать backend, прежде чем вы сможете получить данные от него, но в вашем коде да, он будет отображаться с помощью этого <p>{{ timer }}</p>
, но он будет отображать только начальные данные, таймер не будет отсчитывать время, Что вам нужно сделать, так это создать запрос на бэкенде, чтобы получить дату окончания таймера, которая, я думаю, является датой рождения, затем передать ее на фронтенд с помощью этого var bdate = "{{birthdate}}";
, затем создать скрипт с помощью javascript или jquery или что вы хотите использовать для создания таймера обратного отсчета, который заканчивается переменной bdate. смотрите этот пост - Как написать таймер обратного отсчета на JavaScript?