CGI & Python - PullRequest
       20

CGI & Python

0 голосов
/ 28 апреля 2009

вот моя проблема ... У меня есть сценарий Python, который после запуска из командной строки выполняет необходимые операции и завершает работу. Если во время выполнения программа не может выполнить выбор, он запрашивает пользователя и просит его принять решение! Теперь я должен реализовать веб-интерфейс, и тут возникают проблемы ... Я создал файл htm с простой формой, которая, как только пользователь «отправляет», передает параметры сценарию cgi, который содержит только одну строку, и запускает мой программа на питоне! И похоже на работу ... Мой вопрос: если случится так, что программе нужно спросить пользователя о выборе, как я могу вернуть это значение в свой скрипт на python! Чтобы предложить пользователю выбор, мне нужно создать веб-страницу с возможными вариантами ... Кто-нибудь знает, как я могу открыть веб-страницу с python? Второй и самый важный вопрос: как я могу вернуть значение с веб-страницы в мой «оригинальный» модуль python? В Python я бы просто сделал

возврат выбора

но с веб-страницей я понятия не имею, как это сделать !!

Резюме: 1. Начиная с веб-страницы, я запускаю скрипт cgi! Готово

  1. Этот CGI-скрипт запускает мою программу на Python ... Готово

  2. Если программа не может принять решение,

    3a создать веб-страницу с возможными вариантами, которые я могу сделать

    3b отобразить созданную веб-страницу ????????

    3c вернуть ответ на оригинальный модуль pyhon ????????

заранее спасибо

Ответы [ 5 ]

9 голосов
/ 28 апреля 2009

«Кто-нибудь знает, как я могу открыть веб-страницу с помощью Python? Второй и самый важный вопрос: как я могу вернуть значение с веб-страницы в мой« оригинальный »модуль Python ??

Это все очень просто.

Однако вам нужно прочитать о том, что на самом деле является в Интернете. Вы должны читать на веб-серверах, в браузерах и протоколе HTTP.

Вот золотое правило: Веб-сервер отвечает на HTTP-запросы веб-страницей.

Вторая часть этих правил: Запрос - это URL-адрес и метод (GET или POST). Есть еще один запрос, но это важная часть.

Это все, что когда-либо происходит. Итак, вы должны преобразовать свой вариант использования в приведенную выше форму.

Человек нажимает на закладку; браузер делает пустой запрос (к URL "/") и получает форму.

Человек заполняет форму, нажимает кнопку; браузер отправляет запрос (на URL в форме) и получает одну из двух вещей.

  • Если ваш сценарий сработал, они получают страницу, на которой написано, что все работает.

  • Если вашему сценарию нужна информация, они получают другую форму.

Человек заполняет форму, нажимает кнопку; браузер отправляет запрос (на URL в форме) и получает последнюю страницу, на которой написано, что все работает.

Вы можете сделать все это из скрипта "CGI". Используйте mod_wsgi и подключите ваши вещи к веб-серверу Apache.

Или вы можете получить веб-фреймворк. Django, TurboGears, web.py и т. Д. Вы будете счастливы с фреймворком, даже если вы думаете, что ваша операция проста.

1 голос
/ 28 апреля 2009

Я думаю, что вы можете изменить скрипт Python, чтобы он возвращал ошибку, если ему нужен выбор, и принимал выбор в качестве аргументов. Если вы сделаете это, вы можете проверить возвращаемое значение из вашего скрипта cgi и использовать его для правильного вызова скрипта python и возврата информации пользователю.

Есть ли причина, по которой вы не можете вызвать скрипт python напрямую? Я подозреваю, что в итоге вы бы получили более аккуратную реализацию, если бы избегали промежуточного CGI.

Какой веб-сервер вы используете? Какой язык cgi? Perl может быть?

0 голосов
/ 28 октября 2009

http://docs.python.org/library/cgihttpserver.html

Я думаю, что сначала вам нужно отделить свой код от интерфейса. Когда вы запускаете скрипт, он выплевывает страницу. Вы можете передать ему аргументы, используя параметры URL. В идеале вы хотите выполнить свою логику, а затем передать результаты в шаблон, который python выводит на cgi.

0 голосов
/ 28 апреля 2009

Возможно, проще, если вы напишите свой cgi на python, а затем вызовете свой скрипт на python из сценария cgi.

Обновите ваш скрипт, чтобы отделить интерфейс от логики. Тогда вам будет относительно легко связать ваш скрипт с (python) cgi-скриптом.

Для справки Python CGI: Пять минут до Python CGI

0 голосов
/ 28 апреля 2009

Веб-страницы не возвращают значений и не являются программами - веб-страница - это просто статическая коллекция HTML или нечто подобное, что может отображать браузер. Ваш сценарий CGI не может дождаться, когда пользователь отправит ответ, - он должен отправить пользователю веб-страницу и завершить работу.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...