无法让raw_input在我的测试网站上运行

时间:2013-06-11 16:05:40

标签: python

#!/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中运行它来运行完整的脚本吗? (我很抱歉,如果这是一个如此愚蠢的问题 - 再次,我只是刚开始学习昨天)

5 个答案:

答案 0 :(得分:5)

这里的诀窍是raw_input等待来自Standard In(缩写为stdin)的输入 - 但是,您在CGI中没有交互式stdin(如果我没记错的话, stdin是请求。)

如果您想通过HTTP获得用户的输入,您需要使用a HTML form并在用户回复时获取数据:

#!/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中抽象出来。

答案 1 :(得分:4)

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

Learn Python The Hard Way: Getting Input From A Browser

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

答案 2 :(得分: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)

答案 3 :(得分:1)

这并不像你想象的那么简单。 Web浏览器不是终端,因此您不能将其视为一个终端。如果你想在网上使用Python,你需要学习很多东西;我觉得你做得最好的事情。尝试查看BottleDjango。或任何other web frameworks for Python

答案 4 :(得分:1)

CGI(通用网关接口)显示文本!服务器上的stdin或终端没有在您的浏览器上打开,也没有通过某种代理提供。

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

1)显示带有<form>标记的html页面,其中包含<input type="text">和提交按钮。

2)填写完表格并按下提交后,输入文字将返回服务器,你可以用它来制作第二页“Hi%s,让我们成为朋友!”

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