Механизм Google App Url Mapping с использованием WSGIAppl и регулярных выражений Требуется помощь - PullRequest
0 голосов
/ 19 мая 2010

взять этот пример из Google Docs

class BrowseHandler(webapp.RequestHandler):

>     def get(self, category, product_id):
>         # Display product with given ID in the given category.
> 
> 
> # Map URLs like /browse/(category)/(product_id) to
> BrowseHandler. application =
> webapp.WSGIApplication([(r'/browse/(.*)/(.*)',
> BrowseHandler)
>                                      ],
>                                      debug=True)
> 
> def main():
>     run_wsgi_app(application)
> 
> if __name__ == '__main__':
>     main()

Как я могу изменить группы regx, чтобы идентификатор продукта был необязательным

т.е. URL http://yourdomain.com/category будет отправлен обработчику просмотра в текущем примере выше, вы должны добавить идентификатор продукта или, по крайней мере, / после категории

е

http://yourdomain.com/category/

г '/ просмотр /(.) / (. )'

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 19 мая 2010

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

class BrowseHandler(webapp.RequestHandler):

    def get(self, category, product_id=None):
        # Display product with given ID in the given category.


# Map URLs like /browse/(category)/(product_id) to
BrowseHandler. application =
webapp.WSGIApplication([(r'/browse/(.*)/(.*)', BrowseHandler),
                        (r'/browse/(.*)', BrowseHandler),
                       ], debug=True)

def main():
    run_wsgi_app(application)

if __name__ == '__main__':
    main()
0 голосов
/ 19 мая 2010

Попробуйте добавить "?" до конца вашего регулярного выражения:

r'/browse/(.)/(.)?'
...