Аватар для persej
4 / 4 / 3
Регистрация: 26.11.2014
Сообщений: 89

Opera не работает с cgi

26.11.2014, 07:22. Показов 3779. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Броузер Опера и Эксплоуер вместо страницы с ответом типа Hello Bob!
выводит:
Python
1
2
3
4
5
6
7
8
9
#!/Python34/python
import cgi
form = cgi.FieldStorage() 
print('Content-type: text/html\n') 
print('<title>Reply Page</title>') 
if notuserin form:
print('<h1>Who are you?</h1>')
else:
print('<h1>Hello <i>%s</i>!</h1>' % cgi.escape(form.value)
Изучаю книгу М. Луца программирование на Python 1 том. Основы CGI.
Остановился на примерах 1.30-1.31. Дальше не идет как нужно.

Пример 1.30. PP4E\Preview\cgi101.html
HTML5
1
2
3
4
5
6
7
8
9
<html>
<title>Interactive Page</title>
<body>
<form method=POST action=“cgi-bin/cgi101.py”>
<P><B>Enter your name:</B>
<P><input type=text name=user>
<P><input type=submit>
</form>
</body></html>
Пример 1.31. PP4E\Preview\cgi-bin\cgi101.py
Python
1
2
3
4
5
6
7
8
9
#!/usr/bin/python
import cgi
form = cgi.FieldStorage() # парсинг данных формы
print('Content-type: text/html\n') # http-заголовок плюс пустая строка
print('<title>Reply Page</title>') # html-разметка ответа
if notuserin form:
print('<h1>Who are you?</h1>')
else:
print('<h1>Hello <i>%s</i>!</h1>' % cgi.escape(form.value))
cgi101.py поcле запуска выводит сообщение:
Content-type: text/html

<title>Reply Page</title>
<h1>Who are you?</h1>

После запуска cgi101.html выводится поле, в поле ввожу буквы, после нажатия на кнопку, просто появляется текст:
Python
1
2
3
4
5
6
7
8
9
#!/Python34/python
import cgi
form = cgi.FieldStorage() 
print('Content-type: text/html\n') 
print('<title>Reply Page</title>') 
if notuserin form:
print('<h1>Who are you?</h1>')
else:
print('<h1>Hello <i>%s</i>!</h1>' % cgi.escape(form.value)
python на диске в папке С/Python34.
ОС Windows7.
Какие только варианты не перебирал в строке #!
все равно выводится:
Python
1
2
3
4
5
6
7
8
9
#!/Python34/python
import cgi
form = cgi.FieldStorage() 
print('Content-type: text/html\n') 
print('<title>Reply Page</title>') 
if notuserin form:
print('<h1>Who are you?</h1>')
else:
print('<h1>Hello <i>%s</i>!</h1>' % cgi.escape(form.value)
В чем ошибка?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.11.2014, 07:22
Ответы с готовыми решениями:

не запускаеться (CGI вместе с MySQL) под Apache: Premature end of script headers: c:/www/cgi-bin/catalog.cgi
такая трабла: вот что пишет Apache в Log: Premature end of script headers: c:/www/cgi-bin/catalog.cgi main::ltimestr()...

Запуск CGI вне cgi-bin и запуск index.cgi
Никак не получается сделать настройку 1) Запуск CGI-программ ВНЕ /cgi-bin/ 2) Запуск index.cgi в директории /cgi-bin/ если в URL нет...

CGI. Не работает редирект
На всякий случай прикладываю код для запуска сервера from http.server import HTTPServer, CGIHTTPRequestHandler server_address =...

16
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
26.11.2014, 07:30
Цитата Сообщение от persej Посмотреть сообщение
cgi101.py поcле запуска выводит сообщение:
Цитата Сообщение от persej Посмотреть сообщение
После запуска cgi101.html
Не понимаю что и как запускается.
Cgi-скрипты по идее должны запускаться http-сервером, который обрабатывает запросы клиентов. Поэтому вопрос: есть ли сервер и как настроен?
0
 Аватар для persej
4 / 4 / 3
Регистрация: 26.11.2014
Сообщений: 89
26.11.2014, 07:49  [ТС]
cgi101.py запускал из IDLE. cgi101.py находится в папке С:/python34/cgi-bin/.
cgi101.html находится С:/python34/. cgi101.htm открывая броузером Опера или эксплоуер, в нем появляется поле. В него ввожу имя. Нажимаю кнопку. Не отображается ответ типа Hello Bob!
Сервер не запускал. Это учебные примеры из книжки, пытаюсь опробовать их на практике.
Есть подозрение, что неправильно набрана строка #!/Python34/python.
Перебрал много вариантов этой строки.
Насколько понял броузер не может запустить файл интерпретатор питона, так как не может найти путь к самому python.exe. Хотя запуск cgi101.py из IDLE выводит тестовую информацию.
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
26.11.2014, 08:09
Цитата Сообщение от persej Посмотреть сообщение
Сервер не запускал.
Еще раз: браузер взаимодействует с сервером по http и не имеет никакого представления о том, как на файлухе лежат серверные скрипты и каким интерпретатором они выполняются.

Добавлено через 6 минут
Самое простое, что можно предложить: в рабочем каталоге создать каталог cgi-bin, положить туда скрипты. Затем в рабочем каталоге выполнить python -m CGIHTTPServer. Запустится простой сервер на некотором порту (по умолчанию 8000). После этого в браузере можно будет обратиться по урлу localhost:8000/cgi-bin/имя_скрипта
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
26.11.2014, 08:36
Цитата Сообщение от persej Посмотреть сообщение
Сервер не запускал.
Это вы зря, надо было запустить.
1
 Аватар для persej
4 / 4 / 3
Регистрация: 26.11.2014
Сообщений: 89
26.11.2014, 12:43  [ТС]
Делаю примеры по книге. Т.е прочитал-сделал.
В этих примерах не упоминается о сервере.
Надо, чтобы выводило сообщение типа "Hello Bod!" без запуска сервера.(см. М. Луц примеры). Только начал осваивать практическое программирование на Python.
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
26.11.2014, 12:49
persej, не знаю, какой у вас М. Лутц, но в моём про cgi написано в главе 12, называется "Сценарии, выполняемые НА СЕРВЕРЕ", и там на несколько страниц объяснений всей этой механики.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
26.11.2014, 15:35
Цитата Сообщение от persej Посмотреть сообщение
В этих примерах не упоминается о сервере.
Смешно шутишь, иди в камеди
0
 Аватар для persej
4 / 4 / 3
Регистрация: 26.11.2014
Сообщений: 89
27.11.2014, 05:31  [ТС]
Да действительно, далее по тексту идет скрипт сервера который нужно запускать перед выполнением html страниц

Пример 1.32. PP4E\Preview\webserver.py
"""
Реализация веб-сервера на языке Python, способная запускать серверные
CGI-сценарии на языке Python; обслуживает файлы и сценарии в текущем
рабочем каталоге; сценарии на языке Python должны находиться в каталоге
webdir\cgi-bin или webdir\htbin;
"""
import os, sys
from http.server import HTTPServer, CGIHTTPRequestHandler
webdir = '.' # место, где находятся файлы html и подкаталог cgi-bin
port = 80 # по умолчанию http://localhost/, иначе используйте
# http://localhost:xxxx/
os.chdir(webdir) # перейти в корневой каталог HTML
srvraddr = ("", port) # имя хоста и номер порта
srvrobj = HTTPServer(srvraddr, CGIHTTPRequestHandler)
srvrobj.serve_forever() # запустить как бесконечный фоновый процесс


Но по прежнему после ввода в форму букв и нажатия кнопки передать, в окне броузера отображается содержимое скрипта \cgi-bin\cgi101.py.
А вот если в адресную строку броузера ввести http://localhost/cgi-bin/cgi101.py?user=Sue+Smith
То в броузере появится сообщение Hello Sue Smith. То есть то что нужно.
Если отключить сервер, то как и ожидалось, выводится сообщение типа нет сети.
Тоесть нужно получить такой же результат, но после нажатия в окне броузера кнопки отправить.
Может в этой строке ошибка #!/Python34/python ?
из cgi-bin\cgi101.py
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
27.11.2014, 07:17
Цитата Сообщение от persej Посмотреть сообщение
То в броузере появится сообщение Hello Sue Smith. То есть то что нужно.
Ну зашибись, работает же.
Цитата Сообщение от persej Посмотреть сообщение
Тоесть нужно получить такой же результат, но после нажатия в окне броузера кнопки отправить.
Проверьте, что после нажатия кнопки вы отправляетесь по правильному адресу.
0
 Аватар для persej
4 / 4 / 3
Регистрация: 26.11.2014
Сообщений: 89
27.11.2014, 13:35  [ТС]
Когда нажимаю нтмл файл, то в адресной строке появляется:
file:///C:/Python34/cgi101.html

После введения английских букв Sue Smith в тестовом поле и нажатия кнопки отправить, в адресной строке появляется:
file:///C:/Python34/cgi-bin/cgi101.py

А надо чтобы было:
http://localhost/cgi-bin/cgi101.py?user=Sue+Smith

Как это сделать?
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
27.11.2014, 13:39
Цитата Сообщение от persej Посмотреть сообщение
Когда нажимаю нтмл файл то в адресной строке появляется
file:///C:/Python34/cgi101.html
Нужно не html-файл открывать, а в браузере зайти на http://localhost/ (возмоно, на http://localhost/cgi101.html).
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
27.11.2014, 13:41
persej, это точно.
А на каком адресе вы находитесь, когда отправляете форму?
За то, куда отправимся, отвечает action:
XML
1
<form method=POST action=“cgi-bin/cgi101.py”>
Если с локалхоста - отправимся на локалхост. Если оставить пустым - отправимся на этот же адрес.
0
 Аватар для persej
4 / 4 / 3
Регистрация: 26.11.2014
Сообщений: 89
27.11.2014, 14:28  [ТС]
Все заработало! товарищи!
Когда ввел в адресную строку броузера:
http://localhost/cgi101.html
Вышел на туже форму. Заполнил и нажал отправить. Получился ответ из вводимых слов- то, что требовалось.
Продолжаю далее кропеть над М.Луц "Программирование на Python" том 1. Уже изучил М.Луц "Изучаем Python".
0
17 / 22 / 6
Регистрация: 16.10.2013
Сообщений: 316
27.11.2014, 23:26
Цитата Сообщение от persej Посмотреть сообщение
Все заработало! товарищи!
Когда ввел в адресную строку броузера:
http://localhost/cgi101.html
Вышел на туже форму. Заполнил и нажал отправить. Получился ответ из вводимых слов- то, что требовалось.
Продолжаю далее кропеть над М.Луц "Программирование на Python" том 1. Уже изучил М.Луц "Изучаем Python".
наюух книжки) такие...целый том прочита, а толку ноль))) люди за 3-4 недели учат пайтон и работать идут с офф з/п)))вахаха
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
28.11.2014, 00:43
Цитата Сообщение от warrax Посмотреть сообщение
наюух книжки) такие...целый том прочита, а толку ноль))) люди за 3-4 недели учат пайтон и работать идут с офф з/п)))вахаха
Школьник успокойся уже, человек учится и правильно делает, а ты иди дальше балбесничай.
0
 Аватар для persej
4 / 4 / 3
Регистрация: 26.11.2014
Сообщений: 89
28.11.2014, 14:54  [ТС]
Мне понравилась сама философия языка. Решил медленно, но основательно изучить язык. Выбрал стратегию- долго запрягать,чтобы потом быстро ездить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.11.2014, 14:54
Помогаю со студенческими работами здесь

Не работает read в CGI
Пытаюсь прочитать HTML форму (метод POST) while read a do echo &quot;$a&quot; done - по нулям, в цикл даже не входит read -n...

Не работает CGI программа
Всем доброго времени суток. Подскажите, пожалуйста, нужно сделать определенный сайт с использованием CGI на C++. Решил начать с самого...

Ошибка 500 cgi, нужно запустить батник через cgi
Apache на Windows (!!) Если запускаю localhost/run.bat все работает исправно, скрипт простой, тестовый @echo off echo...

Почему скрипт не работает в Chrome, а в Firefox и Opera работает?
Имеется обычный код JS, работающий в Firefox и Opera, но не работающий в Chrome. Кстати хотел ещё заметить, что alert() работает в...

Perl + SSI = ошибка invalid CGI ref 'http://сервер/cgi-bin/view_bag.pl' in ....
Вопрос такой: Скрипт view_bag.pl без ошибок выполняется в папке /cgi-bin/, при этом атрибуты файла rwxr-xr-x. Но есть файл bag.shtml,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru