Веб-сервер на Python

Веб-сервер на Python

Веб сервер представляет собой программу, ожидающую подключения и способную работать как на локальном компьютере так и удаленном сервере. Как правило сервер запускается в определенном каталоге, удаленно или же локально(«localhost»), и по выделенному адресу в памяти (порту). Обычно номер порта 8000, в диапазоне от 1000 до 60 000. После запуска сервера в браузере, можно видеть структуру папки, являющейся местом его запуска. Если создать там же, файл index.html c корректной HTML разметкой, то при обновлении страницы браузера или же запуске программы сервера, на экране появится веб страница, соответствующая коду HTML. Для запуска нашего сервера мы используем библиотеку http языка Python. Для начала создадим отдельную папку, которая будет вмещать все необходимые файлы. Поместим в нее файл web_server.py, со следующим кодом:


from http.server import HTTPServer, CGIHTTPRequestHandler

server_address = ("",8800)

httpd = HTTPServer(server_address, CGIHTTPRequestHandler)

httpd.serve_forever() 

В том же каталоге создадим файл index.html, с кодом:


<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>Page Title</title>
</head>
<body>

<h1>Считывание из формы</h1>
<p>This is a paragraph.</p>
<hr>
    <form method="POST" action="cgi-bin/my_action.py">
     
     <table>
       <TR>
          <TH align="right"> введите имя</TH>
          <TD ><input type="text" name="user"></TD>
       </TR>
            <TH align="right"> введите ваш возраст</TH>
            <TD ><input type="text" name="age"></TD>  
        <TR>
          <TH colspan="2" align="right"></TH>
          <TD ><input type="submit" value="Send"></TD>
          
        </TR>
     </table>
     

    </form>
    
</body>
</html> 

Здесь, с помощью input, мы создали поля для ввода данных определив их тип как text,
а кнопка отправки данных определена типом submit. Тег table создает таблицу, а теги TR,TH,TD упорядочивают ее. В теге form, указан скрипт cgi-bin/my_action.py,
который будет выполняться в ответ на нажатие submit. Обычно исполняемый скрипт при запуске на localhost, хранится в папке с названием cgi-bin. Давайте создадим ее внутри рабочего каталога.

Скрипт на Python

При написании скрипта на Python, следует сохранять его в формате UTF -8 без BOM, если вы работаете в Notepade, и добавить в первые строки:


#! /usr/bin/python3    
# -*- coding: UTF-8 -*-  # обязательная часть кода

print("Content-type: text/htmln") # обязательная часть кода - заголовки ответа

Первая строка нужна для работы в Linux, Windows ее игнорирует, а вторая для избежания ошибок кодировки файла. Скрипт следует прежде всего выполнить отдельно, чтобы убедиться в его корректном выполнении, а затем вызывать его на сервере. И так создадим в папке cgi-bin, файл my_action.py, добавим код выше, следуя инструкции, :


#! /usr/bin/python3
# -*- coding: UTF-8 -*-
import cgi, sys

print("Content-type: text/htmln")

form = cgi.FieldStorage()  # получение данных из формы

html = """
<TItle>my_action.py</TItle>
<H1>Hello World!</H1>
<HR>
<H4>%s</H4>
<H4>%s</H4>
</HR>"""

line1 = 'Hello, %s.' % form['user'].value
line2 = 'Your age, %s.' % form['age'].value

print(html%(line1, line2)) # вывод полученных данных

Такого рода код в веб программировании называется CGI скриптом, и служит для взаимодействия сервера с веб клиентом т.е. браузером. Он во первых выводит html разметку, во вторых обрабатывает введенные пользователем данные модулем cgi, который получает данные из формы form. Таким образом CGI скрипт является основой клиент-серверного взаимодействия.

Источник

Просмотров:

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