formからPOST送信したデータをPythonで受け取る

POST メソッドで自サイトに向けて送信したフォームデータを Python 3.6 で取得するとき,Flask を使っているとかなり簡単に処理を行うことができます.

GET と POST

フォームデータの送信には POST 以外に GET メソッドもあります.

GET メソッドは送信するときにデータを URL に埋め込む形で送信するため,パスワードなどを含むデータには向いていません.一方,POST はリクエストボディにデータを持っているため,表から見えることはありません.

その他にも違いが色々あるので,用途ごとに使い分けられています.

HTML

まず,フォームを用意しておきます.

<form action="/login" method="post">
  <input type="text" name="user" placeholder="username" />
  <input type="password" name="pass" placeholder="password" />
</form>

メソッドで POST を指定しなければ GET になります.

また,受信するプログラムは /login に置いてあります.

Python

from flask import Flask, request

app = Flask(__name__)

@app.route('/login')
def login():
    username = request.form['user']
    password = request.form['pass']

if __name__ == '__init__':
    app.run()

flask の request を使えば,こんなに簡単です.

フォームの送信先で /login を指定していますが,相対パスなので Flask のルーティングと一致させなくてもいいです.

最後に

Web アプリケーションのフレームワークの便利さに感服です.