Python 表单[";x";]抛出一个键错误
我正在处理一个任务,我们将创建一个HTML订单,然后通过python执行info来创建第二个客户收据 以下是错误消息: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\
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 & 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)