lighttpd: простой код на Python в cgi-bin работает, но форма не обрабатывается - PullRequest
0 голосов
/ 30 апреля 2019

Я преподаю на уроке 11 класса, как писать динамические веб-страницы, используя lighttpd и python в Ubuntu. В моем / var / www / cgi-bin у меня есть один файл Python (testing.py), который выполняется, и я вижу вывод в браузере. У меня есть другой файл Python (greet.py), который должен обрабатывать форму (form1), но я получаю «500 - внутренняя ошибка сервера». Это не 404, поэтому я считаю, что сервер обращается к (файл greet.py), но у него возникли некоторые проблемы.

Файл /var/www/html/index.html:

<!DOCTYPE html>
<html>
<title>This is from the html file</title>
<body>Testing<br>
<a href="/cgi-bin/testing.py">This should show the output of python file in /var/www/cgi-bin </a><br>
<a href="form1.html">Form1</a>
</body>
</html>

Файл /var/www/cgi-bin/testing.py:

#! /usr/bin/python
print("<!DOCTYPE html>")
print("<html>")
print("<title>")
print("Testing from cgi-bin")
print("</title>")
print("<body>")
print("This is testing from /var/www/cgi-bin/")
print("</body>")
print("</html>")

Файл /var/www/html/form1.html:

<!DOCTYPE html>
<html>
<title>Form Testing </title>
<body>
<form method="POST" action="/cgi-bin/greet.py">
Name: <input type="text" name="fname">
<input type="submit" value="submit">
</form>
</body>
</html>

Это файл /var/ww/cgi-bin/greet.py:

#!/usr/bin/python
form=cgi.FieldStorage()
name = form['fname'].value
print("<!DOCTYPE html>")
print("<html>")
print("<title> greet - form processed</title>")
print("<body>")
print("Hello "+name.title())
print(<"/body>")
print("</html>")

Я вижу вывод /var/www/cgi-bin/testing.py. Но когда я отправляю форму1, я получаю «500 - Внутренняя ошибка сервера». Есть что-то, чего мне не хватает. Оба файла в cgi-bin имеют одинаковые права доступа. Заранее спасибо. sonip

1 Ответ

0 голосов
/ 30 апреля 2019

Я получил это работает.Все, что ему нужно, - это один оператор import cgi в greet.py.

sonip

...