Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 表单[";x";]抛出一个键错误_Python_Html_Cgi - Fatal编程技术网

Python 表单[";x";]抛出一个键错误

Python 表单[";x";]抛出一个键错误,python,html,cgi,Python,Html,Cgi,我正在处理一个任务,我们将创建一个HTML订单,然后通过python执行info来创建第二个客户收据 以下是错误消息: Traceback (most recent call last): File "F:\Assignment 3\page.py", line 17, in <module> print "<p>Customer Name:", form["custName"].value, "</p>" File "C:\Python27\

我正在处理一个任务,我们将创建一个HTML订单,然后通过python执行info来创建第二个客户收据

以下是错误消息:

Traceback (most recent call last):
  File "F:\Assignment 3\page.py", line 17, in <module>
    print "<p>Customer Name:", form["custName"].value, "</p>"
  File "C:\Python27\lib\cgi.py", line 540, in __getitem__
    raise KeyError, key
KeyError: 'custName'
回溯(最近一次呼叫最后一次):
文件“F:\Assignment 3\page.py”,第17行,在
打印“客户名称:”,表单[“客户名称”]。值“

” 文件“C:\Python27\lib\cgi.py”,第540行,在\uu getitem中__ 升起钥匙错误,钥匙 KeyError:“custName”
HTML:

<form action="page.py">

<div class="personalinfohead">
    <p>Personal Information:</p>
</div>

<div class="personalinfo">
    <div>Full name:
        <input type="text" name="custName" size="20" />
    </div>

    <div>Email address:
        <input type="text" name="custEmail"  size="50" />
    </div>

    <div>Street address:
        <input type="text" name="custAdd"  size="50" />
    </div>

    <div>City:
        <input type="text" name="custCity"  size="15" />
    </div>

    <div>Province:
        <input type="text" name="custProv"  size="2" maxlength="2" />
    </div>

    <div>Postal code:
        <input type="text" name="custPostal"  size="6" maxlength="6" />
    </div>
</div>

个人资料:

全名: 电邮地址: 街道地址: 城市: 省: 邮政编码:
PYTHON:

import cgi
form = cgi.FieldStorage()

# print HTTP/HTML header stuff
print """Content-type: text/html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html><head>
<title>Order Form</title>
</head><body>
"""

# print HTML body using form data
print "<h1>Kintoro Japanese Bar &amp; Restaurant</h1>"
print "<h2>Customer Reciept</h2>"
print "<p>Customer Name:", form["custName"].value, "</p>"
print "<p>Customer Email Address:", form["custEmail"].value, "</p>"
print "<h2>Customer Address:</h2>"
print "<p>Street:", form["custAdd"].value, "</p>"
print "<p>City:", form["custCity"].value, "</p>"
print "<p>Province:", form["custProv"].value, "</p>"
print "<p>Postal Code:", form["custPostal"].value, "</p>"
导入cgi
form=cgi.FieldStorage()
#打印HTTP/HTML头文件
打印“”内容类型:文本/html
订单
"""
#使用表单数据打印HTML正文
打印“金托罗日本酒吧和餐厅”
打印“客户接收”
打印“客户名称:”,表单[“客户名称”]。值“

” 打印“客户电子邮件地址:”,表格[“客户电子邮件”]。值“

” 打印“客户地址:” 打印“街道:”,表格[“客户添加”]。值“

” 打印“城市:”,表单[“客户城市]。值“

” 打印“省:”,表格[“custProv”]。值“

” 打印“邮政编码:”,表单[“邮政客户”]。值“


杰克是正确的,但对于未来的学生来说,有一种背后故事和快速/肮脏的测试方法

首先解释:

最初,您的keyrerror表示没有具有该名称的键。在您隐式声明了一个键(dict的第一部分)之后,它就丢失了所述键的

字典是一个键值对,因此这两个字典都需要在脚本开始时隐式声明(在前面和后面的ease调试方法的范围内)

放慢行动有助于获得更清晰的理解

由于此脚本是一个完全加载的CGI,它被告知通过为每个键值对声明变量来开始和结束,因此您将看到其最终结果—python向CGI提供文本数据,CGI随后接受并解释所述文本,并向python返回某种响应(有效或无效!),python只能给出结果的结果。因此,这个错误看起来不同于您的标准(我可以补充说是非常好的)非cgi/控制台错误,具有可跟踪的回溯

快速/肮脏测试方法:

隐式声明一个精确的键值对,然后告诉CGI将其传递回python使用:

custName = { 'Name': 'John Smith' }
您需要为每个dict声明一个默认设置作为值,以便使用一个完全可操作的加载脚本,但这里的提示是custName将不再显示错误,但它会抱怨您下一个缺少的键值对


是的,答案很长,而且已经过了上课时间——我知道。然而,希望这将有助于理解一个“单一”问题的几个部分,而不是只为少数人解决一次。

什么是
形式
?看起来您的数据填充不正确。在尝试访问前抛出调试语句,如
print form
。第一条错误消息中的KeyError表示表单字典中没有“custName”键。form是我用于创建html订单的标记。我按照老师的指示做了这件事,但我不明白为什么它会显示为错误..是的,我知道KeyError指的是什么,但我清楚地将文本框命名为custName,所以idk:/测试时是否在custName字段中输入值?如果不是,那就是原因。您可能需要执行
form=cgi.FieldStorage(保持为空\u values=True)