Соответствие регулярному выражению hexdigest в веб-приложении Google App Engine WSGIApplication - PullRequest
1 голос
/ 05 января 2010
application = webapp.WSGIApplication(
    [(r'/main/profile/([a-f0-9]{40})', ProfileHandler)],
    debug=True)

Регулярное выражение в приведенном выше параметре не распознает шестнадцатеричный шестнадцатеричный код в Google App Engine.

Я получаю 404 секунды вместо того, чтобы ProfileHandler передавал соответствующий идентификатор профиля длиной 40 шестнадцатеричных. Мой app.yaml передает все /main/.* правильному скрипту Python, так что это не проблема. Регулярное выражение выглядит вменяемым и напоминает регулярное выражение в документах GAE . Что не так с этим регулярным выражением?

Ответы [ 2 ]

2 голосов
/ 05 января 2010

Я не могу воспроизвести вашу проблему. Вот точный код, который у меня есть:

index.py

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class ProfileHandler(webapp.RequestHandler): 
    def get(self, *ar, **kw):
        self.response.out.write("PROFILE IS:" + ar[0])

run_wsgi_app(webapp.WSGIApplication(
[(r'/main/profile/([a-f0-9]{40})', ProfileHandler),],
                                 debug=True))

app.yaml

application: someapp
version: 1
runtime: python
api_version: 1

handlers:
- url: /main/.*
  script: index.py

Приложение прослушивает порт 8082

GET: http://localhost:8082/main/profile/4c4f630aef49c0065c22eb3dd35a00f5787f4816
RESPONSE: PROFILE IS:4c4f630aef49c0065c22eb3dd35a00f5787f4816
0 голосов
/ 05 января 2010

У меня нет опыта работы с Google App Engine, но:

  • что произойдет, если вы измените ([a-f0-9]{40}) на ([a-fA-F0-9]{40})
  • Вы уверены, что используется группа $1, а не весь матч (включая /main/profile/)?
...