我正在尝试使用python上的表单,我有2个问题,我很多时候都无法决定。
首先,如果我将文本字段留空,则会给我一个错误。这样的网址:
http://localhost/cgi-bin/sayHi.py?userName=
我尝试了很多变种,比如try,如果用户名在全局或本地,但是没有结果,相当于php if(isset(var))。我只想给用户一个消息,例如“填写表格”,如果他将输入留空但按下提交。
其次我想在提交后留下输入字段上打印的内容(如搜索表单)。在PHP中它很容易做到,但我不知道如何做到这一点python
这是我的测试文件
#!/usr/bin/python
import cgi
print "Content-type: text/html \n\n"
print """
<!DOCTYPE html >
<body>
<form action = "sayHi.py" method = "get">
<p>Your name?</p>
<input type = "text" name = "userName" /> <br>
Red<input type="checkbox" name="color" value="red">
Green<input type="checkbox" name="color" value="green">
<input type = "submit" />
</form>
</body>
</html>
"""
form = cgi.FieldStorage()
userName = form["userName"].value
userName = form.getfirst('userName', 'empty')
userName = cgi.escape(userName)
colors = form.getlist('color')
print "<h1>Hi there, %s!</h1>" % userName
print 'The colors list:'
for color in colors:
print '<p>', cgi.escape(color), '</p>'
答案 0 :(得分:2)
在cgi
documentation page上是这些词:
FieldStorage实例可以像Python字典一样编入索引。它允许使用
进行成员资格测试in
运算符
获得所需内容的一种方法是使用in
运算符,如下所示:
form = cgi.FieldStorage()
if "userName" in form:
print "<h1>Hi there, %s!</h1>" % cgi.escape(form["userName"].value)
从同一页面:
实例的
value
属性生成字段的字符串值。getvalue()
方法直接返回此字符串值;它还接受一个可选的第二个参数作为默认值,如果请求的密钥不存在则返回。
您的第二个解决方案可能是:
print "<h1>Hi there, %s!</h1>" % cgi.escape(form.getvalue("userName","Nobody"))