質問

私はWSGIを使用してPOSTデータにアクセスする方法を見つけ出すように見えることはできません。私はwsgi.orgのウェブサイト上の例を試してみましたが、それはうまくいきませんでした。私は今のPython 3.0を使用しています。それは私が探しているものではありませんようWSGIフレームワークをお勧めしないでください。

私はのFieldStorageオブジェクトにそれを取得する方法を見つけ出すしたいと思います。

役に立ちましたか?

解決

あなたはのFieldStorageオブジェクトにだけPOSTデータを取得しようとしていると仮定します:

# env is the environment handed to you by the WSGI server.
# I am removing the query string from the env before passing it to the
# FieldStorage so we only have POST data in there.
post_env = env.copy()
post_env['QUERY_STRING'] = ''
post = cgi.FieldStorage(
    fp=env['wsgi.input'],
    environ=post_env,
    keep_blank_values=True
)

他のヒント

body= ''  # b'' for consistency on Python 3.0
try:
    length= int(environ.get('CONTENT_LENGTH', '0'))
except ValueError:
    length= 0
if length!=0:
    body= environ['wsgi.input'].read(length)

そのWSGIはまだPythonの3.0の完全指定、および変換されていない人気のWSGIインフラの多くはないことに注意してください(または2to3dされていますが、適切にテストしていません)。 (でもwsgiref.simple_server実行されません。)あなたは今日3.0にWSGIをやってラフの時間のためにしています。

このは(Python 3.0で)私の仕事ます:

import urllib.parse

post_input = urllib.parse.parse_qs(environ['wsgi.input'].readline().decode(),True)

でさえ短い

l = int(env.get('CONTENT_LENGTH')) if env.get('CONTENT_LENGTH') else 0
body = env['wsgi.input'].read(l) if l > 0 else ''

このコードは、生産で動作します。

私はあなたには、いくつかのフレームワークは、例えばそれを行う方法を見てお勧めします。 (私は例としてそれらを使用して、任意の単一のものを推奨していません。)

ここからコードは WERKZEUG

http://dev.pocoo.org/projects /werkzeug/browser/werkzeug/wrappers.py#L150する

タグ呼び出します

http://dev.pocoo.org/projects /werkzeug/browser/werkzeug/utils.py#L1420する

これは、私はしませんが、ここにまとめるには少し複雑だ。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top