Библиотека сайта rus-linux.net
Р.Сузи. Спецкурс "Язык Python и его приложения"
Практическое занятие 3. Создание CGI-скрипта
Создайте каталог /home/USER/public_html и подкаталог cgi-bin:
$ mkdir ~/public_html $ mkdir ~/public_html/cgi-bin $ chmod 711 ~ ~/public_html ~/public_html/cgi-bin
Все CGI-скрипты необходимо располагать в каталоге ~/public_html/cgi-bin и они должны иметь расширение cgi (так был настроен web-сервер).
Для начала - простейший скрипт, показывающий всю получаемую информацию (test.cgi):
#!/usr/bin/python import os, sys stdin = sys.stdin.read() argv = sys.argv environ = os.environ print """Content-type: text/html os.environ: %(environ)s sys.stdin...: %(stdin)s sys.argv: %(argv)s """ % vars()
Более сложный пример - вывод календаря (cal.cgi):
#!/usr/bin/python
import cgi, calendar, string
form = cgi.FieldStorage()
# если данные формы введены
if form.has_key("month") and form.has_key("year"):
# проверяем данные, введенные пользователем
form_ok = 0
try:
month = int(form["month"].value)
year = int(form["year"].value)
if 1 <= month <= 12 and 1970 <= year <= 2037:
form_ok = 1
except:
pass
if form_ok:
# формирируем HTML-таблицу с календарем
month_cal = calendar.monthcalendar(year, month)
table = ["""%s.%s""" % (month, year),
"""| %s | """ % (day or " ")) table.append("""
Пример с загрузкой файла (upload.cgi):
#!/usr/bin/env python
import cgi
form = cgi.FieldStorage()
filename = contents = "Файл не загружен"
try:
fileitem = form["myfile"]
if fileitem.file:
# если файл, читаем содержимое файла целиком
contents = "\n%s
" % fileitem.file.read()
filename = str(fileitem.filename)
except:
pass
print """Content-Type: text/html
Прием файла
Прием файла
Имя файла: %(filename)s
%(contents)s
""" % vars()
