从HTML表单运行Python代码

时间:2012-07-27 15:45:49

标签: python html web.py

我正在使用webpy创建一个Web服务器,现在我有一个简单的表单和我编写的特殊类。我希望用户能够在代码中写入表单,如果输入是函数调用,则调用用户提交的函数,否则对输入执行任何操作(如果它不是函数调用)。我相信这必须在模板文件的某个地方实现?任何帮助将不胜感激

2 个答案:

答案 0 :(得分:6)

如果我理解正确,您正在寻找一种在服务器上运行客户端提交的代码的方法,从表单获取输入。

假设您有一个类似于此的表单模板(请注意textarea元素的名称):

<form method="POST">
<textarea name="code" />
<input type="submit">
</form>

您需要在页面类中添加POST方法来处理输入并运行代码:

class MyPage:
    def POST(self):
        data = web.input()
        eval(data.code)

这是你应该对任何你完全不信任的人都可以访问的表单做的事情,因为它能够在你的web服务器上运行他们想要的任何代码(例如他们可以轻松地尝试删除服务器上的所有文件)。但是如果您对安全风险感到满意或只是玩游戏,请务必阅读Pythons eval的文档,以查看您可以传递给它的其他参数。

答案 1 :(得分:3)

创建Python cgi脚本并在您的网络服务器的cgi-bin中运行它。 Here is a tutorial.然后脚本可以访问表单的输入并随意执行任何操作。