LoginSignup
5
7

More than 5 years have passed since last update.

flaskで電話帳用のWEBアプリを作ってみる その2

Last updated at Posted at 2017-05-12

flaskで電話帳用のWEBアプリを作ってみる その1
(SQLITEとの接続、Flaskで表示させる)
flaskで電話帳用のWEBアプリを作ってみる その2
(FlaskにおけるPOST,GETの扱い方)
flaskで電話帳用のWEBアプリを作ってみる その3
(登録フォームを追加)
flaskで電話帳用のWEBアプリを作ってみる その4
(検索フォームを追加)

前回まで

電話帳用WEBアプリの表示部分まで実装できましたので、次は登録の部分を作成していこうと思いましたが、その前に躓きまくったのでここに整理用に書いておきます。

まずはPOSTとGETについて

Alt+Dで表示される部分に表示されるのがGET、それ以外に見えない状態でデータを受け取るのがPOSTだそうです。
今回はPOSTで受け取る方法を試してみます。

FlaskにおけるPOSTの受け取り方

チュートリアルが分かりやすかった。

つまったところを噛み砕いてこんな感じにしました。

まずはPOSTするための入力画面を作成します。

post.html
<!DOCTYPE html>
<html lang="en">
  <head>
      <meta charset = "utf-8">
  </head>
  <body>
    <form action = "{{url_for("add_ent")}}" method = "POST">
      <input name = "Name" placeholder="名前">
      <input type ="submit" value = "送信">
    </form>
  </body>
</html>

【ポイント】
{{url_for("アプリ内の関数"}}で実行する関数を選べます。
ここではPOSTでadd_ent関数を実行してくださいという命令です。

次に最低限のアプリを書きます。

formtest.py

# -*- coding:utf-8 -*_

from flask import Flask,request,render_template,redirect,url_for

app = Flask(__name__)

@app.route("/")
def hello():
    return render_template("form_test.html")

@app.route("/add_entry" ,methods = ["POST"])

def add_ent():
    try:
        print(request.form["Name"])
    finally:

        return redirect(url_for("hello"))

if __name__ == '__main__':
    app.run(debug = True)

【ポイント】
HTMLの方でadd_ent関数を実行してくださいとなってるのでadd_ent関数を定義します。
HTML側からadd_ent関数を実行したとき、自動的にlocalhost:5000/add にリダイレクトされます。
addディレクトリへのルーティングはPOSTメソッドを受け取るために必要みたいです。

formtest.pyを実行し、
2017-05-12_103736.jpg

2017-05-12_103800.jpg

ターミナルに送信した文章が表示されたら成功です。

2017-05-12_103845.jpg

自分はこれやってようやく理解できました。呪文多すぎや。

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7