2011-03-21 11 views
1

ページのコンテンツはフォーム投稿の後に表示されませんが、ページを直接表示すると表示されます。私はPython App Engineのコードを新しいページに誘導し、プログラムで定義された(つまりコードではなくHTMLで)テキストを表示しようとしています。しかし、フォームの送信ボタンを押すと、空白のページが表示され、エラーメッセージは表示されません。PythonのGoogle App Engineでフォーム投稿後に表示する

私はGoogle Appエンジンのコード例を使用しています。フォームにはいくつかのオプションがありますが、そこから何も収集していないので、新しいページに行くべきですが、そうではありませんし、どこが間違っているかも知れません。

私は

class MainPage(webapp.RequestHandler): 
    def get(self): 

     path = os.path.join(os.path.dirname(__file__), 'index.html') 
     self.response.out.write(template.render(path, template_values)) 

class Confirm(webapp.RequestHandler): 
    def post(self): 
     self.response.headers['Content-Type'] = 'text/plain' 
     self.response.out.write('You have confirmed!') 



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

def main(): 
    run_wsgi_app(application) 

if __name__ == "__main__": 
    main() 

とHTMLでを持っている:

<html> 
     <body> 
      <form action="/confirm" method="post"> 
      <div><textarea name="content" rows="3" cols="60"></textarea></div> 
      <div><input type="submit" value="Submit"></div> 
      </form> 
     </body> 
     </html> 

index.htmlを私がフォームを送信する場合は、私がいない理由を知りたいですあなたは確認してください!私が行く/確認する場合、私はします。ありがとう。 -F http://my-app.appspot.com」提出=提出

カール-v0 -Fコンテンツ=何とか:

+0

MainPageハンドラにはインデントの問題があるようです。ここで編集している間にインデントするのが問題だったのですか、それともそんなに好きですか? – MC78

+0

インデント問題はS.O. –

+0

template_values = {}、BTW。 –

答えて

0

私は、POSTが何かを投稿するカールを使用して正しく動作することを確認することをあなたの主張をテストします/ confirm '

それがうまくいくなら、私はHttpFox(FF拡張子)を使ってサーバーに送信されたものを確認します。

あなたが思っているものを送信していないか、POSTハンドラが思ったとおりに動作していないようです。上記の手順のどちらもどちらがどちらであるかを明確にするのに役立ちます。

+0

コマンドラインでdev_serverの出力を見ていますページが送信されるたびに405エラーが表示されます。これは権限の問題ですか? –

+0

HTTP 1.0、本文の末尾にあると仮定

+1

@Rusty POSTを実行しているときに、 GETではなく、あなたのスニペットは実際のコードと同じではありません。あなたは 'post()'ではなく、 'Confirm()'クラスで 'get()'を定義しています。 –

1

コードはかなり円滑に実行されます。おそらく、奇妙なインデントエラーのためにpostメソッドを正しく実装していないでしょう(これは405エラーを説明します)。

コピーして自分のapplication.pyを貼り付けて、もう一度試してください:

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

class MainPage(webapp.RequestHandler): 
    def get(self): 
     path = os.path.join(os.path.dirname(__file__), 'index.html') 
     self.response.out.write(template.render(path, {})) 

class Confirm(webapp.RequestHandler): 
    def post(self):  
     self.response.headers['Content-Type'] = 'text/plain' 
     self.response.out.write('You have confirmed!') 

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

def main(): 
    run_wsgi_app(application) 

if __name__ == "__main__": 
    main() 
0

@Rusty私はあなたがGETまたはPOST、あなたがとapplication.pyで同じことを書かれていることを確認するために、フォーム送信方法を変更する必要がありますどちらかだと思いますよくまたはこのようなことをすることができます

class Confirm(webapp.RequestHandler): 
    def post(self):  
     self.response.headers['Content-Type'] = 'text/plain' 
     self.response.out.write('You have confirmed!') 
    def get(self): 
     return Confirm.post(self) 
関連する問題