Python Turbogears:过滤对象的复制控制器方法
如果您有这样的控制器方法:Python Turbogears:过滤对象的复制控制器方法,python,turbogears2,Python,Turbogears2,如果您有这样的控制器方法: @expose('example.templates.example.index') def index(self, *args, **kw): fruits=session.query(model.Fruit).all() # some code working on fruits return dict(fruits=fruits) 如何为相同的html呈现复制该方法,但使用过滤对象,如示例 @expose('example.templa
@expose('example.templates.example.index')
def index(self, *args, **kw):
fruits=session.query(model.Fruit).all()
# some code working on fruits
return dict(fruits=fruits)
如何为相同的html呈现复制该方法,但使用过滤对象,如示例
@expose('example.templates.example.index')
def filtered(self, name="apple", *args, **kw):
fruits=session.query(model.Fruit).filter_by(name=name).all()
# some code working on fruits (same as in index)
# how to not duplicate the code but duplicate method with different input fruits?
return dict(fruits=fruits)
如何不复制代码而只复制具有不同输入结果的方法?
我希望有单独的端点以相同的方式工作,但使用过滤输入。您是否考虑过使用带有
\u default
方法的分包商
看
在那一点上你可以做到
class FruitsController:
@expose('example.templates.example.index')
def _default(self, name, *args, **kwargs):
fruits=session.query(model.Fruit).filter_by(name=name).all()
return dict(fruits=fruits)
class RootController:
fruits = FruitsController()
结果是,当你要求GET/fuits/apple
时,你只会拿回苹果,GET/fruits/banana
只会拿回香蕉等等。。。如果您想让GET/fruits
只返回所有水果,您还可以提供一个默认参数oname=None