1

Python のボトル ​​Web フレームワークの使用を検討しています。Web アプリケーションは拡張可能である必要があります。つまり、"some/path/extensions/" のようなフォルダーを作成し、将来の開発者がこのアプリケーションの拡張機能を配置できるようにします。たとえば、拡張機能が「treelayout」と呼ばれる場合 (独自の html ファイル、js ファイルなどのセットを含む場合、これらのファイルは .../.../extensions/treelayout/ フォルダーに配置されます。私の目標は次のような URL ルーター:

@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、深さ:3})。

これがボトルまたは他のpythonフレームワークで可能かどうか考えていますか?

4

1 に答える 1

0

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)

他の素晴らしい例は、次の質問への回答で見つけることができます

于 2013-06-02T12:57:05.243 に答える