Flaskでフォームを実装|ユーザーの入力を受け取る方法などを解説

スポンサーリンク

みんなーーーー この記事では、Flask のフォームとその作成方法について見ていきます。

それではさっそく見ていきましょう。

スポンサーリンク

Flask Forms の基礎知識

フォームとは、ユーザー認証のインターフェースから、Webサイトに必要なアンケートフォームまで、Webアプリケーションには欠かせないものです。

フォームの典型的な例としては

<form action="action_to_perform_after_submission" method = "POST">
    <p>Field1 <input type = "text" name = "Field1_name" /></p>
    <p>Field2 <input type = "text" name = "Field2_name" /></p>
    <p>Field3 <input type = "text" name = "Field3_name" /></p>
    <p><input type = "submit" value = "submit" /></p>
</form>

ここで、ユーザーが初めてページを要求したとき、私たちが “GETメソッド “と呼ぶものを介してページを受け取ります。

フォームに入力した後、ユーザーデータはPOSTメソッドでサーバーに送信されます。

この2つのメソッドについては、もう少し詳しく説明します。

これらのフォームは、HTMLの

サンプルのHTMLフォームは以下のようなものです。

from flask import Flask,render_template,request
 
app = Flask(__name__)
 
@app.route('/form')
def form():
    return render_template('form.html')
 
@app.route('/data/', methods = ['POST', 'GET'])
def data():
    if request.method == 'GET':
        return f"The URL /data is accessed directly. Try going to '/form' to submit form"
    if request.method == 'POST':
        form_data = request.form
        return render_template('data.html',form_data = form_data)
 
 
app.run(host='localhost', port=5000)

ここでは、フォームのデータに対して実行するアクションを action 属性で定義しています。

GET または POST によるデータ送信方法

HTTPメソッドとも呼ばれるこれらのメソッドは、それぞれサーバーのリソースに対して特定の動作を実行するものです。

それぞれのメソッドは、異なるタスクに対応しています。

今回は、その中からGETメソッドとPOSTメソッドの2つを取り上げます。

  1. GET – このメソッドは、ウェブサーバーから特定の情報を取り出します(表示するだけです)。
  2. POST – このメソッドは、ユーザーからサーバーにデータを送信します。

したがって、たとえば、Instagramのアプリケーションを考えてみましょう。

デフォルトでは、ブラウザは常にGETメソッドを使用して、ウェブページ上のリソースを表示します。

したがってここでは、(GETメソッドによる)投稿やミームなど、さまざまなコンテンツが表示されます。

しかし、あなたが写真を投稿するとき、基本的にあなたはInstagramアプリケーションサーバーに情報(写真とキャプション)を送信します。

したがって、このアクション(サーバーへのデータ送信)はPOSTメソッドで行われます。

同様に、ブログのWebサイトを考えてみましょう。

ウェブサイト上でブログを読んでいるときは、GETメソッドを介して行われます。

ブログを書いて公開するときは、POSTメソッドを介して行われます。

最初のFlaskフォームを作る

では、flask アプリケーションに簡単なフォームを作成してみましょう。

1. flaskファイルのコーディング

以下のコードを考えてみましょう。

form_data = {
'key1(field1_name)' : 'value1(field1_value)',
'key2(field2_name)' : 'value2(field2_value)',
.
.
}

ここで

  1. フォームビューは HTML フォームテンプレートをユーザに表示します。
  2. ユーザがフォームを送信すると、フォームデータはPOSTメソッドでデータビューに(リクエストオブジェクトの一部として)送信されます。
    1. データビューはフォームデータの要素を変数form_dataに再作成し、data.html テンプレートに送信して表示します。

request.formは辞書構造になっています。

<form action="/data" method = "POST">
    <p>Name <input type = "text" name = "Name" /></p>
    <p>City <input type = "text" name = "City" /></p>
    <p>Country <input type = "text" name = "Country" /></p>
    <p><input type = "submit" value = "Submit" /></p>
</form>

ここで、フォームが送信されると、ブラウザはデータ機能のウェブページにリダイレクトされます。

注:フォームから/dataに誘導されるとき、基本的にPOSTメソッドでdataウェブページにアクセスしています。

2. テンプレートファイル

ここでは、フォームのテンプレートである「form.html」を使用します。

{% for key,value in form_data.items() %}
<h2> {{key}}</h2>
<p> {{value}}</p>
{% endfor %}

data.htmlは、フォームのデータを表示します。

Form Example
Form Example

テンプレートについて詳しくは Flask Templates の記事を参照してください。

3. コードの実装

サーバを起動し、以下をチェックアウトします。

/form
/form

送信を押して

/data (POST)
/data (POST)

また、ブラウザから直接「/data」というURLを叩こうとすると、GETメソッドでこのウェブページが表示され、フォームデータが存在しないため、エラーが表示されます。

/data (GET)
/data (GET)

まとめ

以上、みなさん! 以上、Flask のフォームについてでした。

ではでは、ハッピーコーディング

</form

タイトルとURLをコピーしました