首先,如果已经被问过,请不要开枪 - 我环顾四周但无济于事。
我有一个python文件(名为rpc.py
),其中包含许多为AJAX请求提供服务的函数。例如:
def test(self, vars):
return vars['id']
def test2(self, vars):
return vars['id']+1
使用以下网址调用它:
rpc.py?fnc=test2&id=4
我想调用与'fnc'
查询参数匹配的函数,并将整个查询字符串传递给'vars'
。
所以类似下面的“伪代码”就是我所追求的:
vars = cgi.FieldStorage()
print "Content-Type: text/html\n\n"
print eval('vars["fnc"].value(vars)')
有什么想法吗?
答案 0 :(得分:6)
您可以使用
getattr(server, vars["fnc"])(vars)
但我还建议在服务名称中添加前缀(例如“do_test”),以避免恶意代码只需传递其名称(包括您认为的名称)即可调用服务器对象的任何方法它不应该)。在这种情况下,它将是
getattr(server, "do_" + vars["fnc"])(vars)