我正在使用webpy创建一个Web服务器,现在我有一个简单的表单和我编写的特殊类。我希望用户能够在代码中写入表单,如果输入是函数调用,则调用用户提交的函数,否则对输入执行任何操作(如果它不是函数调用)。我相信这必须在模板文件的某个地方实现?任何帮助将不胜感激
答案 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.然后脚本可以访问表单的输入并随意执行任何操作。