2014-01-26 5 views
1

나는 Google App Engine과 webapp2 웹 프레임에서 파이썬으로 웹 개발의 기초를 가르치기 시작했습니다.Google App Engine에서 여러 URL 스크립트 처리하기

기본적으로 다른 프로젝트에 대한 모든 링크를 게시하는 홈페이지를 만들고 싶습니다. 각 링크는 새 URL으로 보내지며 관련 py 파일이 실행됩니다.

지금은 Hello World 페이지로 연결되는 하나의 링크 만 있으면됩니다. 그게 다야. 그리고 나의 삶에 대해 나는이 이벤트를 위해 핸들러를 작성하는 방법을 이해할 수 없다. (심지어 집게를 필요로 하는가?). 누군가 내가 뭘 잘못하고 있는지 말해 줄 수 있습니까?

내 파일 구조는 다음과 같습니다

+Main Directory (Folder) 
    - app.yaml 
    - index.py 
    +helloworld (Folder) 
     __init__.py 
     helloworld.py 

애플리케이션 제목 파일 :

application: untitam 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: true 

handlers: 
- url:/
    script: index.app 

- url: /helloworld.* 
    script: helloworld.app 

- url: /.* 
    script: index.app 

libraries: 
- name: webapp2 
    version: latest 

index.py :

import webapp2 

menu=""" <nav> 
<ul> 
<li> <a href="/helloworld">Hello World</a></li> 
</ul> 
</nav> 
""" 

class HomePage (webapp2.RequestHandler): 
    def get(self): 
     self.response.out.write(menu) 

class HelloHandler(webapp2.RequestHandler): 
    def get(self): 
     pass 

app = webapp2.WSGIApplication([('/', HomePage), 
           ('/helloworld', HelloHandler)], debug=True) 

과 helloworld.py : 8080/helloworld를하지만 난 빈 페이지를 참조하십시오

import webapp2 

class HelloWorld(webapp2.RequestHandler): 

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

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

내가 로컬 호스트를 참조하세요 수행 안녕하세요 링크를 눌러. 로그는 다음과 같습니다 : ImportError : 모듈이 없습니다.

사용자가 링크를 누른 후 helloworld를 실행하기 위해 index.py에 무엇을 써야합니까? index.py와 helloworld.py가 같은 폴더에 없다는 것을 알아 두십시오. 각각의 프로젝트는 나중에 html/css 템플릿과 일부 자바 스크립트를 사용하기 때문에 자체 폴더를 갖게됩니다. 사전

+4

/helloworld를이 helloworld.py로 라우팅되기 때문에 애플리케이션 제목에 정의 된

그런 다음 index.py에서하여 HelloWorld 경로를 삭제할 수 있습니다 helloworld.py에서 "app"가 아닌 "application"을 만들고 있기 때문에 app이라는 모듈이 없습니다. 데모에서 파생 된 더 간단하고 실제적인 예제로 시작하여 원하는 작업을 수행 할 때까지 단계별로 조정하거나 다음 튜토리얼을 읽는 것이 좋습니다. http://webapp-improved.appspot.com/guide/routing .html –

+0

답장을 보내 주셔서 감사합니다. 나는 튜토리얼을 작업했지만 내 문제에 대한 대답을 얻을 수 없었다.내 생각 엔 다른 폴더에서 다른 파일을 가져 오도록 python에 알리는 방법을 모른다는 것입니다. 그것은 내가 멍청이지만이 사이트를 탐색해도 나는 그것을 수행하는 방법을 알아 내지 못했기 때문일 수 있습니다. 내 코드에 대한 모든 생각/메모? – tamiros

+0

다른 폴더에서 파일을 가져 오는 데 문제가 없습니다. 이 작업을 수행. https://www.udacity.com/course/viewer#!/c-cs253/l-48230541/e-48689147/m-48646718 –

답변

1

바울이 말한대로에서

덕분에, 나 또한 (여전히 여러 URL을 처리 할 수있는) 하나의 웹 애플리케이션 응용 프로그램과 간단한 예를 함께 시작합니다. 다음은 변경 당신의 예는하지만, 작동합니다 :

애플리케이션 제목 파일 :

- url: /helloworld.* 
    script: helloworld.helloworld.application 

helloworld.helloworld.application 실제로 helloworld를에 helloworld.py에 정의 된 응용 프로그램 변수를 참조 패키지 (index.py에서는 대신 app라고 함).

index.py :

app = webapp2.WSGIApplication([('/', HomePage)], debug=True)