2013-10-13 3 views
1

appengine에서 간단한 웹 애플리케이션을 만들려고했지만 핸들러에 문제가 있습니다. 이 내 코드입니다 :URL "/ web"과 (와) 일치하는 핸들러가 없습니다

애플리케이션 제목을 파일 :

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 및 방문 로컬 호스트를 실행하는 경우 : 8080 내 AppWebInterface.py 파일

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

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

/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 ", _LoadHandler의 269 행 raise ImportError ('% s에는 % s 속성이 없습니다'% (처리기, 이름)) ImportError : 속성이 없습니다. 그래서 "app = webapp2 ..."를 "app = webapp2 ... "하지만 여전히이 문제가 있습니다. –

+0

WSGIApplication을 변경하면'app.yaml'의 핸들러와 함께 작동해야합니다. 변경 사항은'/ web'을 앱으로 라우팅하지만 앱은'/ 메인 '을 선택하십시오. –

0

귀하의 패턴이 /web/ ('/'뒤에/weg가 있어야 함)을 포함하는 URL과 일치하기 때문입니다.

패턴을 수정하고 결과를 확인하십시오.

handlers: 
- url: /web.* 
    script: AppWebInterface.application 
관련 문제