我不确定为什么这个 cgi 表单不能正常工作。问题出在 main() 函数的某个地方,但我不太确定如何解决它。通过解释器运行时的错误为:
文件“ptest.py”,第 48 行,在 if (form.has_key("action") 和 form.has_key("name") \ NameError: name 'form' is not defined
假设适当的缩进。
# Import the CGI module
import cgi, cgitb
# Required header that tells the browser how to render the HTML.
print "Content-Type: text/html\n\n"
# Define function to generate HTML form.
def generate_form():
print "<HTML>\n"
print "<HEAD>\n"
print "\t<TITLE>Info Form</TITLE>\n"
print "</HEAD>\n"
print "<BODY BGCOLOR = white>\n"
print "\t<H3>Please, enter your name and age.</H3>\n"
print "\t<TABLE BORDER = 0>\n"
print "\t\t<FORM METHOD = post ACTION = \
\"example_7.1.cgi\">\n"
print "\t\t<TR><TH>Name:</TH><TD><INPUT type = text \
name = \"name\"></TD><TR>\n"
print "\t\t<TR><TH>Age:</TH><TD><INPUT type = text name = \
\"age\"></TD></TR>\n"
print "\t</TABLE>\n"
print "\t<INPUT TYPE = hidden NAME = \"action\" VALUE = \
\"display\">\n"
print "\t<INPUT TYPE = submit VALUE = \"Enter\">\n"
print "\t</FORM>\n"
print "</BODY>\n"
print "</HTML>\n"
# Define function display data.
def display_data(name, age):
print "<HTML>\n"
print "<HEAD>\n"
print "\t<TITLE>Info Form</TITLE>\n"
print "</HEAD>\n"
print "<BODY BGCOLOR = white>\n"
print name, ", you are", age, "years old."
print "</BODY>\n"
print "</HTML>\n"
# Define main function.
def main():
form = cgi.FieldStorage()
if (form.has_key("action") and form.has_key("name") \
and form.has_key("age")):
if (form["action"].value == "display"):
display_data(form["name"].value, form["age"].value)
else:
generate_form()
if __name__ == '__main__':
main()