Как указать значение параметра по умолчанию для действия Pylons? - PullRequest
1 голос
/ 03 октября 2010

У меня есть действие, которое выглядит следующим образом:

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() тоже вроде бы помогает, но я не хочу перенаправлять.)

1 Ответ

2 голосов
/ 03 октября 2010

Ваши маршруты должны выглядеть так:

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)
...