我有一个使用模板生成HTML页面的python代码。当发生单击事件时,我需要读取Excel文件并显示一些结果,可能是在弹出窗口中。我以为我可以使用xlrd
读取Excel文件。我可以使用ajax request
来提供读取excel文件的python文件的url
。我决定使用Prototype
的{{1}}。
Ajax.Updater应该用来自python文件Ajax.Updater
的响应替换response
项。
我有两个问题 -
我们如何从python发回响应?这可能是一个微不足道的问题,但我找不到解释这一部分的任何地方。我是否写了一个函数并且display.py
表示响应值?或者使用return
?或者我应该使用print
?我是新手,我不明白这是如何工作的。这里有很多问题表明sys.stdout.write()
被使用了。我应该用吗?你能解释为什么需要吗?(我是初学者,对不起,如果这听起来很愚蠢)
有没有更好的方法来实现我的目标?
代码如下所示:
json
我的python文件myprog.py
from string import Template
import webbrowser
template1 = Template(
"""
<html>
<head>
<script type = "text/javascript" src = "\javascript\prototype.js">
</script>
<script>
function displayResults()
{
new Ajax.Updater("response", "\display.py");
}
</script>
</head>
<body>
<table>
<tr>
<td id = "myid" onclick = displayResults()> $something</td>
</tr>
</table>
<p id = "response">replace this</p>
</body>
</html>
""")
d = template1.substitute(something = nothing)
f= open('filename.html','w')
f.write(d)
f.close()
webbrowser.open_new('filename.html')
看起来像这样
display.py
我的平台是windows。我正在使用新版本的Prototype(1.7.1)。
由于
Megh
答案 0 :(得分:1)
您需要在标题后面写行分隔符:
import sys
sys.stdout.write("Content-type: text/html\n\n")
response = "dadada"
sys.stdout.write(response)
sys.stdout.write("</br>")
您可以使用print
;它会为你添加行分隔符:
print "Content-type: text/html"
print
response = "dadada"
print response + '</br>'
如果您未与CGI脚本结婚,请尝试使用Flask,Bottle或Pyramid等微型Web框架;这些将为您处理大部分HTTP细节。