Я никак не смогу сделать смарт часы на Django. Выводит время - легко, а вот чтобы часы обнавлялись не получается. Помогите! Без JS

import time


# Create your views here.

def index(request):


    clock = time.strftime('%H:%M:%S %p')


    context = {'clock':clock}

    return ....

В общем виде я категорически не рекомендую это делать без JS.
В production среде не место подобным решениям ибо они создают лишнюю нагрузку, увеличивают траффик и мешают пользователю.
В любой команде за такое оторвут руки.

Обновление страницы с помощью HTML тега

Но если это часть какого-то хитроумного теста или челенджа
(а-ля вывода hello world без использования функции main и пр.)
то в том(и только в том случае) можно попробовать обновлять страницу используя HTML-тег <meta>

<meta http-equiv="refresh" content="seconds;URL">

В атрибуте content через точку с запятой вы указываете количество секунд, через которое должно выполниться перенаправление и URL - куда Вас следует перенаправить.

Обычно он используется для перенаправления страниц, у которых изменился адрес(другими словами для редиректов), но если указать в нем интервал в секунду и ссылку на самого себя, то он будет обновлять страницу каждую секунду, что может быть решением Вашей задачи.

Вам стоит поместить данный тег в <head></head> указав количество секунд и адрес страницы

<meta http-equiv="refresh" content="1;http://localhost:3000/smart_watch/">

На всякий случай

На случай, если мои убеждения дошли до цели оставлю здесь это:

Обновление страницы на JavaScript

<script>
    setTimeout(function(){
        window.location.reload();
    },1000);
</script>

Часы обновляемые целиком и полностью на клиентской части.

let watch = document.getElementById('watch');

watch.innerText = (new Date()).toLocaleTimeString();

setInterval(function() {
   watch.innerText = (new Date()).toLocaleTimeString();
},1000);
#watch{
    width: 100px;
    text-align: center;
    background-color:#333333;
    color:#00FF00;
    padding: 10px 20px;
    font-size: 18px;
    font-family: monospace;
}
<div id='watch'></div>


Еще раз повторюсь:
В общем виде такие задачи без JS решать нецелесообразно(а в большинстве невозможно), поэтому некоторые пользователи совершенно оправданно сочли данную задачу нонсенсом и вздором и начали ставить минусы и голосовать за закрытие данного вопроса.

Если Вы хотите заниматься веб-разработкой и быть fullstack-разработчиком, но при этом совсем не хотите работать с JavaScript, то Вам стоит пересмотреть, а тем ли Вы занимаетесь.

А если Вы хотите быть исключительно backend-разработчиком, то не стоит смотреть и пытаться выполнять задачи, которые требуют интерактивности на стороне клиента.


Альтернативы JavaScript

Если вообще прям JavaScript не любите, то можете попробовать писать клиентский код на:

  • Dart
  • Kotlin
  • Elm
  • CoffeeScript
  • TypeScript
  • ClojureScript
  • пр.

С последующей компиляцией всего этого добра в JavaScript.
То есть писать Вы будете на другом языке, но браузер все равно в итоге будет выполнять JS.

На данный момент JavaScript это единственный язык поддерживаемый всеми современными популярными браузерами.

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