2014-01-26 54 views
1

我開始用Google App Engine和webapp2網頁框架中的python教會自己使用web開發的基礎知識。在Google App Engine中處理多個網址腳本

基本上,我想創建一個主頁,我會發布所有鏈接到不同的項目。每個鏈接將指向一個新的網址其中相關的py文件將運行。

現在,我要的只是有一個鏈接指向一個Hello World頁面。而已。對於我的生活,我無法理解如何編寫這個事件的處理程序(我是否需要哈勒?)。有人能告訴我我做錯了什麼嗎?

我的文件結構是:

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

app.yaml文件

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:

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) 

當我按下的Hello World鏈接我得到是指爲localhost:8080/HelloWorld的,但我看到一個空白頁。日誌說:ImportError:沒有模塊名爲app

我應該寫在index.py中以便在用戶按下鏈接後運行helloworld。請注意,index.py和helloworld.py不在同一個文件夾中。每個項目將有自己的文件夾,因爲以後我會使用HTML/CSS模板和一些JavaScript。

在此先感謝

+4

沒有名爲app的模塊是因爲在helloworld.py中創建「應用程序」而不是「應用程序」。我建議你從一個簡單的工作示例開始,然後逐步調整它,直到它達到你想要的效果,並且/或者在這裏閱讀教程:http://webapp-improved.appspot.com/guide/routing .html –

+0

謝謝你的回覆。我工作的教程,但無法得到我的問題的答案。我的猜測是,我不知道如何告訴python從另一個文件夾導入另一個文件。這可能是因爲我是一個noob,但瀏覽這個網站,我仍然無法弄清楚如何做到這一點。我的代碼的任何想法/筆記? – tamiros

+0

問題是不從其他文件夾導入文件。做這個。 https://www.udacity.com/course/viewer#!/c-cs253/l-48230541/e-48689147/m-48646718 –

回答

1

正如保羅說,我也想用一個單一的Web應用程序的應用程序(這可能仍然處理多個URL)的一個簡單的例子開始了。有以下改動你的榜樣應該工作,但是:

app.yaml文件:

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

helloworld.helloworld.application實際上指的是在中的HelloWorld定義helloworld.py應用變量包(在index.py中,它被命名爲app)。

然後,您可以從index.py刪除HelloWorld的路線,因爲/HelloWorld的路由到helloworld.py的爲app.yaml中定義:

的index.py:

app = webapp2.WSGIApplication([('/', HomePage)], debug=True) 
相關問題