Bottleフレームワークでのフォームの扱い
Webアプリケーションでは、ユーザーからの入力を受け取るためにフォームを使用することが一般的です。
Bottleフレームワークでは、フォームデータの取得やバリデーションを簡単に行うことができます。
この章では、GETリクエストとPOSTリクエストでのフォームデータの取得方法と、フォームデータのバリデーションについて解説します。
GETリクエストでのフォームデータの取得
GETリクエストでフォームデータを取得する場合、URLのクエリパラメータにデータが含まれます。
Bottleフレームワークでは、request
オブジェクトのGET
属性を使って、クエリパラメータを取得できます。
例えば、以下のようなフォームがあるとします。
<form action="/search" method="get">
<input type="text" name="keyword">
<input type="submit" value="検索">
</form>
このフォームから送信されたデータを取得するには、以下のようにrequest.GET
を使います。
from bottle import route, request, run
@route('/search')
def search():
keyword = request.GET.get('keyword', '').strip()
return f'検索キーワード: {keyword}'
run(host='localhost', port=8080)
POSTリクエストでのフォームデータの取得
POSTリクエストでフォームデータを取得する場合、データはリクエストボディに含まれます。
Bottleフレームワークでは、request
オブジェクトのPOST
属性を使って、リクエストボディのデータを取得できます。
例えば、以下のようなフォームがあるとします。
<form action="/login" method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" value="ログイン">
</form>
このフォームから送信されたデータを取得するには、以下のようにrequest.POST
を使います。
from bottle import route, request, run
@route('/login', method='POST')
def login():
username = request.POST.get('username', '').strip()
password = request.POST.get('password', '').strip()
return f'ユーザー名: {username}, パスワード: {password}'
run(host='localhost', port=8080)
フォームデータのバリデーション
フォームデータのバリデーションは、ユーザーからの入力が正しい形式であることを確認する重要なプロセスです。
Bottleフレームワークでは、バリデーションを行うための特別な機能は提供されていませんが、Pythonの標準機能やサードパーティのライブラリを使って簡単にバリデーションを実装できます。
例えば、以下のようにre
モジュールを使ってメールアドレスのバリデーションを行うことができます。
import re
from bottle import route, request, run
def is_valid_email(email):
pattern = r'^[\w\.-]+@[\w\.-]+\.\w+$'
return re.match(pattern, email) is not None
@route('/register', method='POST')
def register():
email = request.POST.get('email', '').strip()
if not is_valid_email(email):
return '無効なメールアドレスです。'
return f'登録されたメールアドレス: {email}'
run(host='localhost', port=8080)
このように、Bottleフレームワークを使ってフォームデータの取得やバリデーションを簡単に実装することができます。
これらの機能を活用して、ユーザーフレンドリーなWebアプリケーションを作成しましょう。