概要
前回、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']
。