![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| persej |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 26.11.2014 Репутация: нет Всего: нет |
Броузер Опера и Эксплоуер вместо страницы с ответом типа Hello Bob!
выводит: #!/Python34/python import cgi form = cgi.FieldStorage() print('Content-type: text/html\n') print('<title>Reply Page</title>') if not ‘user’ in 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 <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 #!/usr/bin/python import cgi form = cgi.FieldStorage() # парсинг данных формы print('Content-type: text/html\n') # http-заголовок плюс пустая строка print('<title>Reply Page</title>') # html-разметка ответа if not ‘user’ in 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 выводится поле, в поле ввожу буквы, после нажатия на кнопку, просто появляется текст: #!/Python34/python import cgi form = cgi.FieldStorage() print('Content-type: text/html\n') print('<title>Reply Page</title>') if not ‘user’ in form: print('<h1>Who are you?</h1>') else: print('<h1>Hello <i>%s</i>!</h1>' % cgi.escape(form.value) python на диске в папке С/Python34. ОС Windows7. Какие только варианты не перебирал в строке #! все равно выводится: #!/Python34/python import cgi form = cgi.FieldStorage() print('Content-type: text/html\n') print('<title>Reply Page</title>') if not ‘user’ in form: print('<h1>Who are you?</h1>') else: print('<h1>Hello <i>%s</i>!</h1>' % cgi.escape(form.value) В чем ошибка? Это сообщение отредактировал(а) persej - 26.11.2014, 10:14 |
|||
|
||||
| tzirechnoy |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: нет Всего: 16 |
В том, что Ваш веб-сервер и не пытается запустить этот скрипт. Соответственно, это ошыбочная конфигурацыя веб-сервера и к питону отношэния не имеет.
Кстати, в винде шэбанг вообще никогда не работал -- так что настройте вызов питона в веб-сервере по расшырению скрипта. |
|||
|
||||
| persej |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 26.11.2014 Репутация: нет Всего: нет |
А как это сделать?
Вот скрипт сервера: Пример 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/, иначе используйте # os.chdir(webdir) # перейти в корневой каталог HTML srvraddr = ("", port) # имя хоста и номер порта srvrobj = HTTPServer(srvraddr, CGIHTTPRequestHandler) srvrobj.serve_forever() # запустить как бесконечный фоновый процесс |
|||
|
||||
| tzirechnoy |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: нет Всего: 16 |
Так. С самого начала: что Вы пытаетесь сделать с cgi101.html ?
|
|||
|
||||
| persej |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 26.11.2014 Репутация: нет Всего: нет |
Через проводник захожу в папку С: /Python34/ , где находится cgi101.html. Щелкаю по нему. Открывается опера с тестовым полем и кнопкой отправить. Пишу в поле типа Sue Smit и нажимаю отправить. Появляется страница с содержимым файла С: /Python34/cgi-bin/cgi101.py
#!/Python34/python import cgi form = cgi.FieldStorage() print('Content-type: text/html\n') print('<title>Reply Page</title>') if not ‘user’ in form: print('<h1>Who are you?</h1>') else: print('<h1>Hello <i>%s</i>!</h1>' % cgi.escape(form.value) А должно появится сообщение Hello Sue Smit! |
|||
|
||||
| tzirechnoy |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: нет Всего: 16 |
Это зря. Заходить надо на (ужэ запущенный к тому времени) веб-сервер, скрипт которого Вы приводили. Т.е. webserver.py надо запустить. Кстати, из папки с cgi101.html (или прописать в нём полный путь к ней). Если запустится без ошыбок (что не факт, порт 80 можэт быть занят) -- то его адрес будет localhost, его порт -- 80. Т.е. http://localhost:80/cgi101.html |
|||
|
||||
| persej |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 26.11.2014 Репутация: нет Всего: нет |
Все заработало как надо
Это сообщение отредактировал(а) persej - 1.12.2014, 07:39 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Python: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |