2010/03/15

[Google App Engine]Form変数(POST送信によるデータ)を受け取る

参考になるかどうかまったわかりませんが、やっとForm変数(POST送信による変数)を表示する方法について書きたいと思います。

#app.yaml

application: paint
version: 1
runtime: python
api_version: 1

handlers:
- url: /paint/storingdata
script: storingdata.py

#storingdata.py
import cgi
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext import db

class StoringData(webapp.RequestHandler):
def post(self):
print self.request.get("hoge")

application = webapp.WSGIApplication(
[('/paint/storingdata', StoringData)]
, debug=True
)

def main():
run_wsgi_app(application)

if __name__ == "__main__":
main()

#任意のhtmlファイル(ここではtest.htmlとします)
<html>
<head>
</head>
<body>
<form name="testform"
action="http://localhost:8080/paint/storingdata"
method="post"
>
<input type="hidden"
name="hoge"
value="Hello Form Value"
>
<input type="submit" value="Run">
</form>
</body>
</html>

test.htmlをローカルかつ任意の場所で開いて「Run」ボタンを押すと、きちんと「Hello Form Value」が表示されました。

でもこれって、Google App Engineに書いてあるHandling Forms with webappの解説とどう違うんだよーという感じがありますが、ポイントとしては、違うディレクトリでPOSTされたデータを表示している点が違います。

リファレンスだと同じディレクトリで送信されたPOSTデータを表示しているだけなのです。

また、これができることで、Google App Engine上にはないディレクトリから送信されたデータを拾うことができるということです。

もっと言ってしまうと、Ajaxでデータを送信してデータを拾いたい場合もこのやり方が通用すると想定しています。
(なのでタイトルに、POST送信によるデータと書きました。)

徐々に徐々にですが前進してきました。

しかし、Pythonはプログラムをコンパイルをインデントで処理しているため、横に長くなりそうだなー。

きちんとブログに書ききれるかどうか若干不安です。

0 コメント:

コメントを投稿