2013-10-13 2 views
1

Я пытаюсь сделать простой webapp на appengine, но у меня возникла проблема с обработчиками. Это мой код:URL-адрес «/ web» не соответствует никаким обработчикам

Мой app.yaml файл:

application: test-app 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: true 

handlers: 
- url: /web/.* 
    script: AppWebInterface.application 

Мой AppWebInterface.py файл:

import webapp2 

class MainPage(webapp2.RequestHandler): 
    def get(self): 
     self.response.headers['Content-Type'] = 'text/plain' 
     self.response.write('Hello, World!') 

application = webapp2.WSGIApplication([ 
    ('/', MainPage), 
], debug=True) 

Когда я бегу dev_server и посещение Localhost: 8080/web, я получаю эту ошибку:

The url "/web" does not match any handlers. 

ответ

1

Я вижу две проблемы, одна из которых маскирует другую.

Во-первых, /web/.* будет соответствовать /web/, /web/foo, но не /web. Есть несколько подходов. Одним из них является использование

- url: /web.* 

Но это также будет соответствовать /webelos. Для вас это не проблема, потому что следующий шаг поймает ее.

Следующая проблема заключается в том, что, пройдя /web/foo к приложению, нет ничего сопоставления этого шаблона url для класса. WSGIAppliction настроен для обработки /, хотя такой URL-адрес не будет передан в приложение, заданному обработчиком в app.yaml.

Если вы застряли при запуске, попробуйте изменить обработчик в app.yaml на - url: /. Получите что-то простую работу, а затем добавьте обработчики оттуда.

+0

Спасибо. Я просто изменил обработчик на: -url: /web.* и в моем AppWebInterface.py я написал это: application = webapp2.WSGIApplication ([('/ main', MainPage)], debug = True). Но у меня все еще проблема, когда я пытаюсь получить доступ к localhost/web/main, заявив, что: runtime/wsgi.py ", строка 269, в _LoadHandler повысить значение ImportError ('% s не имеет атрибута% s'% (обработчик, имя)) ImportError: не имеет приложения атрибутов. Поэтому я изменил «application = webapp2 ...» на «app = webapp2 ... », но у меня все еще есть эта проблема. –

+0

Изменение, которое вы делаете WSGIApplication, должно работать с обработчиками в' app.yaml'. Ваши изменения направляют '/ web' в приложение, но приложение обрабатывает'/main ', который не маршрутизируется. Измените тот или другой. –

0

Это потому, что ваш шаблон соответствует только URL-адресу, который содержит /web/ (необходимо указать «/» после/weg)

изменить шаблон и посмотреть результат.

handlers: 
- url: /web.* 
    script: AppWebInterface.application