Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск скрипта .py на локальном web-сервере 
:(
    Опции темы
Mastodont
Дата 3.8.2017, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 347
Регистрация: 18.3.2007

Репутация: нет
Всего: 1



Как открыть в браузере скрипт page.py, формирующий код страницы? Помещаю его в cgi-bin, и сначала просто отображается его содержимое без обработки. Если я в httpd.conf укажу
Цитата

AddHandler cgi-script .cgi .pl .py

то при обращении в браузере по http://localhost/blog.local/cgi-bin/test.py получаю
Цитата

Forbidden
You don't have permission to access /blog.local/cgi-bin/test.py on this server.

Почему так происходит?
PM MAIL   Вверх
Mastodont
Дата 18.8.2017, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 347
Регистрация: 18.3.2007

Репутация: нет
Всего: 1



Оказывается в Python есть встроенный CGI-сервер. Расскажу, как он работает.
Создаем где нибудь, например на диске С, папку python_cgi_server.
Теперь по пути C:\python_cgi_server размещаем файл server.py с таким содержанием
Код

from http.server import HTTPServer, CGIHTTPRequestHandler
server_address = ("", 8000)
httpd = HTTPServer(server_address, CGIHTTPRequestHandler)
httpd.serve_forever()

Открываем командную строку Windows и пишем в ней
Цитата

cd /

В результате попадаем в корень диска C. Затем вводим команду
Цитата

dir

После этого в командной строке отображаются все файлы и папки, расположенные в текущей директории (т.е. на диске С, в корень которого мы только что перешли). Среди них видим папку python_cgi_server, которую создали до этого. Теперь вводим в командной строке
Цитата

cd python_cgi_server

И тем самым переходим в эту папку. Хитрость: можно ввести начало названия (например, pyt) и затем нажать Tab. В результате командная строка сама дополнит название из тех файлов и папок, какие имеются в выбранной папке.
Теперь снова выполняем команду
Цитата

dir

И видим в текущей папке файл server.py. Выполним его командой
Цитата

python server.py

Результатом будет пустая строчка в командной строке. Это означает, что встроенный в Python CGI-сервер запущен.
Открываем браузер и вводим в нем адрес http://localhost:8000
Отобразится корень запущенного сервера, в котором пока лежит только server.py.
Если после этого посмотрим в командную строку, то увидим, что теперь там побежали логи действий на сервере.
Так как мы хотим запускать именно cgi-скрипты, создадим один такой скрипт. Для этого разместим в папке с файлом server.py папку cgi-bin и положим в нее cgi-скрипт. Назовем его script.py (так как писать собираемся именно на Python).
То есть в итоге у нас получится такая структура файлов и папок:
Цитата

C:\
`---python_cgi_server
    |---server.py
    `---cgi-bin
        `---script.py

В script.py поместим такой код
Код

#!/usr/bin/env python3

print("Content-type: text/html; charset=windows-1251")
print()
print("<h1>Hello world!123</h1>")

Теперь в браузере перейдем по адресу http://localhost:8000/cgi-bin/script.py . Отобразится надпись "Hello world". Заметим параметр
Цитата

charset=windows-1251

Иногда и без него все в порядке, но при наличии на странице русских символов иногда браузер не может их правильно отобразить без явного указания кодировки.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Веб-разработка и фреймворки | Следующая тема »


 




[ Время генерации скрипта: 0.0973 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.