маршрутизация webapp2 возвращает 404 - PullRequest
0 голосов
/ 20 декабря 2011

Я пытаюсь использовать маршрутизацию webapp2, и в настоящее время это не удается.Кажется, он не соответствует правилам маршрутизации, которые я установил, и в результате возвращает 404 для определенных правил.

Мой код выглядит так:

main.py

    import webapp2, urls

    app = webapp2.WSGIApplication(urls.SITE_URL_PATTERNS, debug=True)

urls.py

    from webapp2 import Route
    from webapp2_extras import routes

    import test_handler


    SITE_URL_PATTERNS = [
            routes.PathPrefixRoute('/admin', [
                    Route(r'/action_one', test_handler.take_action_one),
                    Route(r'/action_two', test_handler.take_action_two),
                    Route(r'/<action_three:\w+>', test_handler.take_action_three),
            ]),
            Route(r'/view/action_one', test_handler.view_action_one),
            Route(r'/', test_handler.view_homepage),
    ]

app.yaml

    - url: .*
        script: main.app

Не могу загрузить / view / action_one (возвращает 404), но могу загрузить / admin / action_one.

Есть предложения, что я здесь не так делаю?Ценю вашу помощь!

1 Ответ

1 голос
/ 21 декабря 2011

Хорошо, я обнаружил свою глупую ошибку (да, настоящий момент "DOH!"):

Route(r'/<action_three:\w+>'

Должно быть

Route(r'/<action_three:[^/]+>'

Возникли проблемы при сопоставлении ключей хранилища данных, поскольку они могут включать другие символы, представленные \ w. Переходя ко всему остальному, но /, как правило, решит эту проблему (используйте [^ /] +).

Надеюсь, это поможет кому-то еще.

...