0
0

More than 3 years have passed since last update.

【はじめてのFlask】GETとPOSTで値を受け取る

Posted at

概要

前回、URLルーティングを回すところまでやった。
今回は、画面からの入力を受け取るところをやる(ほんまちょっとずつやな…)。

/try_login/writeのところ。

/try_login

/loginでは login.html を表示。その中で form でユーザ名とパスワードを送る。
とりあえずGETを使うことにする。

login.htmlのformの部分。

<form action="/try_login" method="get">
    <label>名前:<input type="text" id="name" name="user_name"></label><br>
    <label>パスワード:<input type="password" name="password"></label>
    <input type="submit" name="送信する">
</form>

app.pyの/try_loginの部分。

@app.route('/try_login', methods=['GET','POST'])
def try_login():

    if "name" in request.form:
        name = request.form["name"]
    if "password" in request.form:
        password = request.form["password"]

    if (name == None) or (password == None):
        return redirect('/login')

    for user in users:
        if user.name == name and user.password == password:
            user_id = user.get_id()

    return redirect(url_for('index'))

/write

こっちは掲示板の本文ということで長めのテキストを受け取るのでPOSTで受け取ることにする。

index.htmlのformの部分。

<form action="/write" method="post">
    <textarea name="msg" rows="6" cols="60"></textarea><br>
    <input type="submit" name="書込">
</form>

app.pyの/writeの部分。

@app.route('/write', methods=['POST'])
def write():
    if request.form["msg"] is not None:
        msg = request.form["msg"]
    return redirect('/')

変更点は、1行目と3,4行目。
/writeのメソッドとしてはPOSTが使われるようにFlask側を設定。
FlaskでPOSTでデータを受け取る場合は、request.form['XXX']

0
0
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
0
0