Routes 如何为挂架操作指定默认参数值?
我有一个动作看起来像这样:Routes 如何为挂架操作指定默认参数值?,routes,pylons,Routes,Pylons,我有一个动作看起来像这样: class ArticleController(BaseController): def all(self, page, pagesize): class ArticleController(BaseController): def all(self, page, pagesize): return 'Page: %s. Pagesize: %s.' % (page, pagesize) 我希望能够访问/article/all/{p
class ArticleController(BaseController):
def all(self, page, pagesize):
class ArticleController(BaseController):
def all(self, page, pagesize):
return 'Page: %s. Pagesize: %s.' % (page, pagesize)
我希望能够访问/article/all/{page}/{pagesize}
,使用page
和pagesize
的默认值
我尝试在action方法中设置默认值,但是如果我只设置了page
值,显然page
和pagesize
都会设置为默认值
我也尝试过类似的方法,但也不起作用:
map.connect('/article/all/{page}/{pagesize}', controller='article',
action='all')
map.connect('/', controller='article', action='all', page=0, pagesize=5)
map.connect('/article/all/', controller='article', action='all', page=0,
pagesize=5)
实际上,在这种情况下,当我访问/
或/article/all/
时,它会工作。
但是它不适用于/article/all
(即使我相应地删除了路由中的尾部/
)
查看Routes的文档,在这种情况下,默认值似乎根本不起作用,所以可能是某种行为或未定义的行为
无论如何,我的问题是,在访问/article/all
和/article/all/42
时,如何使用page
和pagesize
的默认值调用all()
(我知道我可以用查询字符串来代替。
map.redirect()
也可以,但我真的不想重定向。)您的路由应该是这样的:
map.connect('/article/all',
controller='Article', action='all',
page=0, pagesize=5)
map.connect('/article/all/{page}',
controller='Article', action='all',
pagesize=5)
map.connect('/article/all/{page}/{pagesize}',
controller='Article', action='all')
您不必在方法本身中放入默认值。因此,您的控制器应如下所示:
class ArticleController(BaseController):
def all(self, page, pagesize):
class ArticleController(BaseController):
def all(self, page, pagesize):
return 'Page: %s. Pagesize: %s.' % (page, pagesize)
显然,为同一资源使用多个URL被认为是一种不好的做法()。所以我想我会坚持使用
redirect()
。奇怪的是,它对你不起作用。它与全新的Pylons 1.0 projet完美结合。我猜你的重定向是对的。