Технологию AJAX можно использовать и в web приложениях написанных на языке Python.
При этом сам принцип работы не особо отличается от других языков. Отправка запроса с помощью JavaScript, затем получение и обработка данных на сервере с оправкой результатов назад клиенту. Однако есть и некоторые особенности обусловленные спецификой Python.
Возьмём для рассмотрения тот же пример, что использовали при работе с AJAX на PHP с использованием jQuery (ссылка в конце статьи). Только теперь реализуем всё на Python.
Сразу отметим, что клиентская часть при этом почти ни как не изменится. Единственное изменение – страница обработчик запроса, которая теперь буде называться getajax.py вместо getajax.php.
<!DOCTYPE HTML> <html> <head> <title>AJAX</title> <meta charset="utf-8" /> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ $('#form').submit(function(event){ $.post("getajax.py",{data:$("#in1").val()},onResponse); return false; }) function onResponse(data){ $("#in2").text(data); } }) </script> </head> <body> <form id="form" method="POST"> <input id="in1" type="text" /> <button id="btn">Test</button> </form> <p id="in2"></p> </body> </html>
Также не станем подробно рассматривать функционал библиотеки jQuery, который обеспечивает работу AJAX, так как он уже был в достаточной степени описан в статье посвященной работе с AJAX на PHP. Вместо этого сосредоточим наше внимание на особенностях серверной части приложения. Для доступа к данным поступившим в результате запроса в Python служит класса FieldStorage из модуля cgi.
import cgi storage = cgi.FieldStorage()
Получить значение того или иного параметра по его имени можно при помощи метода getvalue.
data = storage.getvalue('data')
Далее остаётся проверить, действительно ли параметр содержит значение, и после обработки (при необходимости) направить результат обратно клиенту.
if data is not None: print(data)
В данном случае клиенту просто возвращаются переданные данные.
Разумеется, работая с Python под web нельзя забывать про вывод заголовков и указание кодировки.
Полностью страница обработки запроса (файл getajax.py) выглядит следующим образом.
# -*- coding: utf-8 -*- import cgi storage = cgi.FieldStorage() data = storage.getvalue('data') print('Status: 200 OK') print('Content-Type: text/plain') print('') if data is not None: print(data)
Собственно, всё! Всего вышеприведённого уже достаточно для работы с AJAX в Python.
Спасибо! Очень пригодилось!