【发布时间】:2013-10-18 17:17:52
【问题描述】:
这学期我在上python课,我想以网页的形式在我的程序中添加图形用户界面。一部分是懒得学Tkinter,一部分是在挑战自己,一部分就是喜欢用HTML/JS编写接口。
我知道使用 SimpleHTTPServer 创建 HTTP 服务器的基础知识,但我需要一种方法让我的网页在服务器上将 ajax 命令触发到 python 脚本,然后在服务器端执行,然后接收脚本输出.有点像Sage 做事的方式。
如何为 SimpleHTTPServer 创建一个扩展,然后我可以使用它来提供 python 脚本的输出?我需要一个非常通用的解决方案,以便给定我编写的任何 python 脚本,我可以轻松地将它包装在某种接口中,将它放在服务器的文件夹中,而无需做任何其他事情,只需使用 AJAX 调用它,我的服务器将处理其余的。
我目前的想法是拥有一个我的脚本可以扩展的ServerSideScript 类,以及一个名为output 的函数。我拥有的每个脚本都应该包含一个名为 Script 的 ServerSideScript 子类。当要求服务器提供服务时,例如 foo.py,它会注意到扩展并执行以下操作:
if self.path[-3:]: == ".py":
return getScriptOutput(self.path)
...
def getScriptOutput(self, path):
from path import Script # obviously not going to work, since path is a string
return Script().output()
由于评论中指出的原因,这是行不通的,我知道 import_module 函数之类的东西,但导入似乎是一种丑陋的开始方式。
有什么推荐的?
【问题讨论】:
-
你见过CGIHTTPServer吗?
-
@MartijnPieters 这是默认设置,对吧?我不一定能在学校计算机上安装额外的模块。
-
为什么不使用合适的网络服务器和像 Flask 这样的微框架?
-
@JackM:这是标准库的一部分,是的。查看链接。
-
@DanielRoseman 见上面的评论——但我也很想自己写代码,如果它可以保持在合理的最小限度的话。
标签: python server-side-scripting simplehttpserver