2
#!/usr/bin/python
print "Content-type: text/html\n\n";
print "<html><head>";
print "<title>CGI Test</title>";
print "</head><body>";
print "<p>Test page using Python</p>";

#this is my very first python attempt
name=raw_input('Enter your name : ')
print ("Hi %s, Let us be friends!" % name);

print "</body></html>";

所以,这是我的全部代码。这是我第一次使用python,不知道我是否配置正确。我只是想让用户输入他们的名字,但我没有让他们输入输入的区域。

http://rollinsfamilytree.com/scgi-bin/testerpy.py

我只是得到“输入你的名字:”这样的话,然后什么也没有。我不能输入名字。请告诉我我做错了什么。我不需要让它在 HTML 中运行来运行完整的脚本吗?(如果这是一个愚蠢的问题,我很抱歉 - 再说一次,我昨天刚开始学习)

4

5 回答 5

5

这里的技巧是raw_input等待来自标准输入(缩写stdin)的输入 - 但是,您在 CGI 中没有交互stdin(如果我没记错的话,stdin是请求)。

如果您想通过 HTTP 从用户那里获取输入,则需要使用HTMLform并在用户响应时获取数据:

#!/usr/bin/python

import cgi

form = cgi.FieldStorage()
name = form.getvalue('name')
# Note the use of triple-quoted strings
# and `.format` rather than `%`.
# Much easier to do multi-line text this way.

print """Content-type: text/html

<html><head>
<title>CGI Test</title>
</head><body>
<p>Test page using Python</p>
<form>
<label>What is your name?
<input type="text" name="name" value="{provided_name}"></label>
</form>
Hi {provided_name}, Let us be friends!
</body></html>""".format(provided_name=name)

但是,使用像BottleFlask那样将所有这些从您身上抽象出来的轻量级框架可能会更好。

于 2013-06-11T16:21:54.930 回答
4

从您的帖子和评论中,我了解到您希望有一个表格来输入您的姓名,提交它然后有“嗨,让我们成为朋友!” 打印。如果是这种情况,您需要在您的代码中添加当前没有的“表单”。我建议您查看本教程以获得有关该主题的良好解释:

艰难地学习 Python:从浏览器获取输入

当然,您需要先提交您的输入(这将需要刷新网页),然后才能获得所需的输出。您还可以查看动态 Web 编程以避免重新加载网页。

于 2013-06-11T16:34:10.093 回答
2

更改您的代码如下:

#!/usr/bin/python

import cgi

form = cgi.FieldStorage()
name = form.getvalue('name')

print "Content-type: text/html\n\n"
print "<html><head>"
print "<title>CGI Test</title>"
print "</head><body>"
print "<p>Test page using Python</p>"
print "Hi %s, Let us be friends!" % name
print "</body></html>"

然后访问http://rollinsfamilytree.com/scgi-bin/testerpy.py?name=nobody。(不要省略尾随 ?name=nobody)

于 2013-06-11T16:16:52.263 回答
1

CGI(通用网关接口)显示文本!服务器上的标准输入或终端未在您的浏览器上打开或通过某种代理可用。

如果您想获取输入并使用 CGI 显示它,您必须使用两步方法

1) 显示一个带有<form>标签的 html 页面,该标签包括一个<input type="text">和一个提交按钮。

2) 填写表格并按下提交后,输入文本会返回到服务器,您可以使用它来制作第二页,上面写着“Hi %s,让我们成为朋友!”

如果你想做一些更具交互性的事情,那么你将不得不使用 javascript 和 css。Dojo 工具包非常易于使用

于 2013-06-11T16:20:53.560 回答
1

它并不像你想象的那么简单。Web 浏览器不是终端,因此您不能将其视为终端。如果你想在 web 上使用 Python,你需要学习的东西很多;我认为你做的最好的事情。尝试查看BottleDjango。或任何其他用于 Python 的 Web 框架

于 2013-06-11T16:17:56.253 回答