みんなーーーー この記事では、Flask のフォームとその作成方法について見ていきます。
それではさっそく見ていきましょう。
この記事もチェック:Flaskのライブラリflask-wtfの使い方|簡単にフォームを作成するよ
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つを取り上げます。
- GET – このメソッドは、ウェブサーバーから特定の情報を取り出します(表示するだけです)。
- 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)' ,
. . } |
ここで
- フォームビューは HTML フォームテンプレートをユーザに表示します。
- ユーザがフォームを送信すると、フォームデータはPOSTメソッドでデータビューに(リクエストオブジェクトの一部として)送信されます。
-
- データビューはフォームデータの要素を変数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は、フォームのデータを表示します。
テンプレートについて詳しくは Flask Templates の記事を参照してください。
3. コードの実装
サーバを起動し、以下をチェックアウトします。
送信を押して
また、ブラウザから直接「/data」というURLを叩こうとすると、GETメソッドでこのウェブページが表示され、フォームデータが存在しないため、エラーが表示されます。
まとめ
以上、みなさん! 以上、Flask のフォームについてでした。
ではでは、ハッピーコーディング
</form