我有一个看起来像这样的动作:
class ArticleController(BaseController):
def all(self, page, pagesize):
我希望能够使用/article/all/{page}/{pagesize}
和page
的默认值访问pagesize
。
我尝试在操作方法中设置默认值,但是如果我只设置page
值,则显然pagesize
和page
都会设置为默认值。
我也试过这样的事情,但它也不起作用:
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的文档,看起来默认值在这种情况下根本不起作用,所以可能是某种或未定义的行为。
无论如何,我的问题是,在访问all()
和page
时,如何使用pagesize
和/article/all
的默认值调用/article/all/42
?
(我知道我可以使用查询字符串。map.redirect()
也可以解决问题,但我真的不想重定向。)
答案 0 :(得分:2)
您的路线应如下:
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):
return 'Page: %s. Pagesize: %s.' % (page, pagesize)