Работаем с AJAX в Python

Технологию 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.

Комментарии
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *