Я новичок в разработке Django и хотел бы знать, возможно ли инициировать обновление веб-страницы на стороне клиента.
Мой сценарий: веб-страница 1 просматривается клиентами.
Я обновил некоторые данные в базе данных и хочу обновить view.py для получения новых данных из базы данных и обновить веб-страницу клиентов для отображения новой информации.
Как мне этого добиться?
Спасибо.
С уважением.
2 ответа
Есть несколько вариантов:
Добавьте на свою страницу скрипт, который каждые несколько секунд опрашивает (ajax) ваш сервер на предмет последних данных и обновляет данные на месте (без обновления страницы). Для этого вы должны создать представление в Django, которое возвращает данные в формате JSON, и ваш javascript заменит данные в HTML. Плюсы: отличный пользовательский интерфейс, страница остается доступной. Против: Не сразу, вам нужно подумать о масштабируемости, поскольку каждая открытая страница будет постоянно опрашивать ваш сервер, но кеширование ответа должно быть простым.
Добавьте скрипт, который просто опрашивает, нужно ли обновлять страницу. Он отправит какой-то номер версии токена, идентифицирующий текущие данные на странице, и ваше представление Django может определить, нужно ли обновлять страницу. Затем сценарий просто вызовет
location.reload()
для обновления страницы. Плюсы: нет необходимости извлекать данные, состояние обновления можно легко кэшировать, Минусы: все еще не сразу, обновление страницы происходит тогда, когда пользователь этого не ожидал.Используйте веб-сокет, чтобы иметь открытое постоянное соединение с вашим сервером, через которое вы можете отправлять новые данные (или просто событие: «пожалуйста, обновите»). Плюсы: лучший опыт, немедленное обновление. Минусы: не работает в старых браузерах, сложно реализовать и развернуть. django-channels будет хорошим стартером.
location.reload()
Внутри HTML внутри шаблона Django должно хватить. Это нужно, чтобы стрелять по определенному событию? Если это так, вам нужно найти способ активировать location.reload()
, который в этом случае вам нужно будет указать еще несколько деталей. Но, по сути, у вас просто есть JavaScript, который прослушивает событие, чтобы перезагрузить вашу веб-страницу. Если вы хотите продвинуться дальше, я бы посмотрел на каналы Django.
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.