0

我不确定为什么这个 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()
4

0 回答 0