Webapp2 strict_slash возвращает KeyError: «Отсутствует аргумент» для URL-адреса с завершающей косой чертой, когда метод имеет 2 или более аргументов Ошибка?

Я построил свои URL-адреса как таковые:

#url = /index/test/argument/second
# Maps to the Index handler's test method and passes in the optional arguments 'argument' and 'second' 

# So the handler function looks like this:

def test(argument=None,second=None):
   print 'test'

Я использую strict_slash из webapp2, поэтому обработчики с косой чертой в конце перенаправляются на обработчики без косой черты в конце.

#url = /index/ redirects perfectly to /index
#url = /index/test/ # KEYERROR!!

Таким образом, несмотря на то, что index/test маршрутизируется перед index/test/second, webapp2 игнорирует перенаправление для конечных косых черт и возвращает ошибку, потому что он ищет (слишком сложно) второй аргумент. Я думаю, что он должен признать, что второго аргумента нет, поэтому следуйте маршруту перенаправления strict_slash.

Это работает во всех случаях, кроме передачи аргументов. Любое понимание, кто-нибудь?


person kevin    schedule 15.05.2013    source источник
comment
У тебя есть имя Арг? Все такие маршруты должны быть названы.   -  person Dmytro Sadovnychyi    schedule 15.05.2013
comment
Делаю, маршрут назван по методу. Как вы думаете, это может быть проблемой? В этом примере я создаю три отдельных маршрута, но все они имеют одинаковое имя. Дайте-ка подумать. Я вернусь.   -  person kevin    schedule 16.05.2013
comment
@DmitrySadovnychyi это было связано с аргументом «имя». Я динамически сопоставляю все маршруты, и для создания имени маршрута я использовал метод-обработчик для каждого из аргументов вместо метода-обработчика-arg1, а затем другой маршрут как метод-обработчик-arg1-arg2. Если вы добавите свой ответ, я отмечу его как правильный.   -  person kevin    schedule 18.05.2013


Ответы (1)


Чтобы решить эту проблему, вам просто нужно установить уникальный аргумент имени для маршрутов.

person Dmytro Sadovnychyi    schedule 18.05.2013