Я занимаюсь созданием сайта интрасети, который обращается к тестовым данным из базы данных и отображает результаты на общей веб-странице HTML.
Прямо сейчас у меня есть настройка Python как cgi, и сейчас я получаю желаемые результаты. Но теперь есть запрос на отображение некоторой информации в режиме реального времени.
Я новичок в мире веб-программирования, но как лучше всего запустить сценарий Python и отобразить информацию на странице HTML без перезагрузки.
Я знаю, как получить информацию на стороне сервера Python и правильно отображать информацию на стороне HTML, но то, что мне не хватает, - это то, как я могу связать эти два вместе или вызвать метод Python со стороны HTML.
Любые предложения или простые примеры были бы замечательными.
благодаря
Если вы хотите перезагрузить всю страницу, просто добавьте тег meta refresh
в HTML в разделе HEAD:
<meta http-equiv="refresh" content="20" />
и страница будет перезагружена каждые 20 секунд.
Если вы хотите регулярно заполнять элемент страницы, и вы не очень заботитесь о его внешности (или можете потратить время на настройку подстраницы), вы можете использовать IFRAME, отображающий подстраницу через второй CGI, с мета-обновлением в своем HTML:
<iframe class="realtime-data" src="/cgi-bin/realtime.py"></iframe>
Другие более гибкие случаи также потребуют от вас предоставить второй CGI, который будет публиковать данные в реальном времени при вызове и опросить этот CGI с главной страницы, используя, например, метод jQuery load()
:
setInterval(function() {
$('#div_where_html_goes').load('/cgi-bin/realtime.py')
}, 20000); // 20k milliseconds
Вышеприведенное является лишь намеком, а не хорошей практикой программирования:
... но этого должно быть достаточно, чтобы вы начали. В основном, вы устанавливаете jQuery (одна строка кода HTML при загрузке из Google), и вы указываете код инициализации в конце страницы. Там вы добавили Javascript-код:
<script type="text/javascript">
// <![CDATA[ <!--
(function($){
$(function(){
setInterval(function() {
$('#div_where_html_goes').load('/cgi-bin/realtime.py')
}, 20000); // 20k milliseconds
})
})(jQuery);
// --> ]]>
</script>
</body>
Если "перезагрузка" означает, что пользователю не нужно ударять "перезагрузку"/"обновление" в своем браузере, тогда вам нужно настроить URL-адрес конечной точки, который возвращает данные в некотором формате (JSON/XML или даже HTML, который можно просто вставить в DOM) и использовать AJAX для периодического опроса этого URL-адреса и обновления. Либо это, либо заглянуть в веб-сокеты.
Простой поиск в Google поможет вам найти, как создать сайт python.
Вы можете использовать бутылку. В учебном пособии описывается создание простого сайта.
Для обновления вам понадобится javascript (на странице), чтобы взаимодействовать с сервером.