項目
- 入力フォームと軽くフォームとは
- POSTメソッドで掲示板的なやつ
- GETメソッドで掲示板的なやつ
1.入力フォームでフォームを触る
- ただフォームを作るだけならpy側は何もいじらなくて大丈夫
html
<form action="/result" method="post">
<label for="article">投稿</label>
<input type="text" name="article">
<p></p>
<label for="name">名前</label>
<input type="text" name="name">
<button type="submit">送信する</button>
</form>
-
action="/result"
で/resultにデータを送るよと指定している -
method="post"
でなんのメソッド使うかを決める -
input type="text" name="article"
はtext
で1行入力欄を作るって決めて、そこに入力されたデータにarticleって色付けをしている - 下もだいたい同じ
-
<button type="submit">送信する</button>
はsubmit
って指定する事で、データを送るボタン作ってる
- この
<form>
は入力・送信フォームを作成する際に使用する
2.POSTメソッド使って入力データを受信する
- まず受信するためのpython側での準備
python
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route("/")
def show():
message = "Hello World"
return render_template("form.html", message = message)
@app.route("/result", methods=["POST"])
def result():
article = request.form["article"]
name = request.form["name"]
return render_template("form.html",article = article, name = name)
-
request
を使うって上で宣言する -
@app.route("/result", methods=["POST"])
で上のhtml側で指定したアドレスを指定して、POSTメソッドを使うよとも書いとく - 変数やってた所は
request.form["~~~"]
で、html側でつけたname属性のデータを受け取れるようにする
ここではarticle
とかを受け取ってる - あとは大体見たまま
html
<form action="/result" method="post">
<label for="article">投稿</label>
<input type="text" name="article">
<p></p>
<label for="name">名前</label>
<input type="text" name="name">
<button type="submit">送信する</button>
</form>
<p>{{ article }} {{ name }}</p>
- 上のhtmlと大体同じなんだけど、
{{ article }} {{ name }}
ここだけ違う
まあ変数表示するのと同じこと
3.GETメソッド使って入力データを受信する
- GETメソッド使うと、入力データを受信して
/result
を表示する時、/result?article=Hello&name=World
って感じで、アドレスに入力内容が出ちゃう
python
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route("/")
def show():
message = "Hello World"
return render_template("form.html", message = message)
@app.route("/result", methods=["GET", "POST"])
def result():
if request.method == "POST":
article = request.form["article"]
name = request.form["name"]
else:
article = request.args.get("article")
name = request.args.get("name")
return render_template("form.html", article = article, name = name)
-
methods=["GET", "POST"]
でどっちのメソッドも対応するようにしてる -
if request.method == "POST":
でリクエストしたメソッドがPOSTの時...って感じ - GETは
article = request.args.get("article")
の様に、request.args.get("~~~")
って書く
- htmlに関してはメソッド書いたところを
method="get"
にしておけばOK
4.終わりに
- とりあえずこんな感じで