Библиотека сайта 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""" % vars()%s" % fileitem.file.read() filename = str(fileitem.filename) except: pass print """Content-Type: text/htmlПрием файла Прием файла
Имя файла: %(filename)s
%(contents)s