2012-02-21 24 views
0

Google App Engineを使用して簡単なアプリケーションを作成しようとしています。以下はスクリプトハンドラの設定Google App Engine

私のコード

helloworld.py

print "hello" 

class helloworld(): 
     def myfunc(self): 
       st = "inside class" 
       return st 

test.py

import helloworld 

hw_object = helloworld.helloworld() 
print hw_object.myfunc() 

app.yaml

handlers: 
- url: /.* 
    script: helloworld.py 

- url: /.* 
    script: test.py 

I RUです私のアプリケーションはhttp://localhost:10000経由でhelloしか出力されませんが、私の予想される出力はhelloinside classです。

私のディレクトリ構造

E:\helloworld>dir 
app.yaml  helloworld.py test.py 

私は、これはハンドラと何それらを定義する私の方法で間違っているを定義するための正しい方法は何かScript Handlers。だから、とは何かを持っているかなり確信しています。

+0

2つの同一のルート正規表現を使用しますか? – bernie

+0

私のフォルダ内に複数のスクリプトがある場合、私は 'app.yaml'をどのように設定すればいいのでしょうか?上記のパターンを試しました。私が必要とするのは' localhost:10000'です。実行されているが、これは起こっていない。 – RanRag

+0

@AdamBernier:私は 'url:/ test /.*'を試しましたが、運がまだありません。 – RanRag

答えて

3

最初のハンドラパターン/.*http://localhost:10000と一致すると、残りのハンドラはすべて無視されます。

あなたのapp.yaml

handlers: 
- url: /hello 
    script: helloworld.py 

- url: /test 
    script: test.py 

を更新し、私も同様の問題があったhttp://localhost:10000/test

0

AppengineのドキュメントからGetting Startedガイドを参照してください。このような初期セットアップの問題を解決するのに役立ちます。ここで

http://code.google.com/appengine/docs/python/gettingstarted/helloworld.html

そのドキュメントからのサンプルハンドラです。

from google.appengine.ext import webapp 
from google.appengine.ext.webapp.util import run_wsgi_app 

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

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

def main(): 
    run_wsgi_app(application) 

if __name__ == "__main__": 
    main() 

またクラスがwebapp.RequestHandler、メソッド名が取得(またはあなたがHTTP POSTリクエストに応答している場合は後)で延びていることが注意アプリケーションを設定するための下部に余分なコード。 WSGIApplicationに引数を追加することにより、余分なURLをアプリケーションに追加することができます。たとえば:

application = webapp.WSGIApplication(
           [('/', MainPage)], 
           [('/help/', HelpPage)], 
           debug=True) 

はまた、両方のスクリプトが同じURLパターンを参照してくださいとをapp.yamlで、すべての要求がこれまでtest.py.ようになるだろうという方法はありませんのでご注意します通常のパターンは、上部に特定のURLパターンを持ち、最後にキャッチオールパターンを持つことです。

Good Luck。

0

を閲覧することができます。角括弧がある最後の部分をハミッシュの答えに拡大、および訂正:

application = webapp.WSGIApplication([ 
          ('/', MainPage), 
          ('/help/', HelpPage)], 
          debug=True) 

参考:私はまた、上記の私のコード内の余分な閉じ括弧を持っていた https://webapp-improved.appspot.com/guide/routing.html

**編集。それを今変更しました。