我正在探索python的Bottle Web框架的使用。Web应用程序必须是可扩展的。也就是说,我将拥有一个类似于“ some / path / extensions /”的文件夹,将来的开发人员应该可以在其中放置此应用程序的扩展名。因此,例如:如果扩展名为“ treelayout”(具有自己的html文件,js文件等,则这些文件将放置在... / ... / extensions / treelayout /文件夹中。我的目标是拥有类似于以下内容的网址路由器:
@GET("/some/path/extensions/:module/:func/:params")
def callmodule(module, func, params):
#D = dictionary made out of variable number of params.
#Then call module.func(D) <== How can I do this given that module and func are strings?
例如,有人可以调用“ h ++ p://.../treelayout/create/maxnodes/100/fanout/10/depth/3”,这将调用新的扩展名treelayout.create({maxnodes:100,fanout :10,depth:3})。
知道是否可以使用bottle或任何其他python框架吗?
Python语言可以将字符串变量映射到已加载的模块和方法。
import sys
@GET("/some/path/extensions/:module/:func/:params")
def callmodule(module, func, params):
D = dict(params)
# Pull module instance from systems stack
moduleInstance = sys.modules[module]
# Grab method from module
functionInstance = getattr(moduleInstance,func)
# Pass "D" variable to function instance
functionInstance(D)
在以下问题的答案中可以找到其他出色的例子
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。