一个金字塔插件,提供去中心化的分层对象调度。
pyramid_controllers的Python项目详细描述
tl;dr
安装:
$ pip install pyramid-controllers使用:
# the following application serves these URLs:# /# /about/team# /about/mission# /resource/{RESOURCE_ID} (RESTful: GET and PUT)# standard pyramid-controller importsfrompyramid_controllersimport \ Controller,RestController, \ expose,expose_defaults,index,default,lookup,wrap,fiddle# create a controller for "/about/team" and "/about/mission"classAboutController(Controller):@expose(renderer='mymodule:path/to/template.mako')defteam(self,request):returndict(team=get_team_members())@exposedefmission(self,request):return'Our mission: rock the world.'# create a RESTful (GET, PUT) controller for "/resource/{RESOURCE_ID}"classResourceController(RestController):@exposedefget(self,request):return'Name: '+request.res.name@exposedefput(self,request):request.res.name=request.params.get('name')returnself.get(request)# create the dispatcher that will lookup resources by IDclassResourceDispatcher(Controller):RESOURCE_ID=ResourceController(expose=False)@lookupdeflookup(self,request,res_id,*rem):request.res=get_resource_by_id(res_id)return(self.RESOURCE_ID,rem)# the root controller with support for "/" and sub-controllersclassRootController(Controller):about=AboutController()resource=ResourceDispatcher()@indexdefindex(self,request):returnHTTPFound('/about/mission')# and hook it all into pyramid in the app's main()defmain(global_config,**settings):# ... (the usual pyramid startup calls) ...config.include('pyramid_controllers')config.add_controller('root','/',RootController())