私は以前、cherrypy ではメソッドを公開してそれをビュー ターゲットにする必要があることを知っていましたが、これもドキュメント全体に広がっています。
import cherrypy
@cherrypy.expose
def index():
return "hello world"
しかし、何も公開せずに動作するように見えるcherrypyアプリケーションを継承しました
これはどのように作動しますか?公開要件は新しいバージョンから削除されましたか?
これをグーグルで検索するのは簡単ではありません.cherrypyの公開とデコレーターについてはたくさん見つけましたが、「公開しないcherrypy」については何も見つかりませんでした.
これはメインの serve.py スクリプトです。ここでは簡潔にするためにいくつかの部分を削除しました。
# -*- coding: utf-8 -*-
import cherrypy
from root import RouteRoot
dispatcher = cherrypy.dispatch.RoutesDispatcher()
dispatcher.explicit = False
dispatcher.connect(u'system', u'/system', RouteRoot().index)
conf = {
'/' : {
u'request.dispatch' : dispatcher,
u'tools.staticdir.root' : conf_app_BASEDIR_ROOT,
u'log.screen' : True,
},
u'/my/pub' : {
u'tools.staticdir.debug' : True,
u'tools.staticdir.on' : True,
u'tools.staticdir.dir' : u"pub",
},
}
#conf = {'/' : {'request.dispatch' : dispatcher}}
cherrypy.tree.mount(None, u"/", config=conf)
import conf.ip_config as ip_config
cherrypy.config.update({
'server.socket_host': str(ip_config.host),
'server.socket_port': int(ip_config.port),
})
cherrypy.quickstart(None, config=conf)
そして、アプリケーションのどこにも 'expose' はありません。どのように機能しますか?
ファイル root.py:
# -*- coding: utf-8 -*-
from mako.template import Template
class RouteRoot:
def index(self):
return "Hello world!"