DjangoでFormを用いた値のやり取り
今回はPythonのWebアプリケーション用フレームワークのDjangoでFormの使い方について投稿します。
これまでの内容については、以下を参照してください。
フォーム作成
webアプリの全体イメージです。黄色の箇所が前回からの差分になります。
ブラウザからリクエストを送ります。urlに書かれているパスをプロジェクトwebsiteのurls.pyで確認します。
urls.pyにはchatbot/urls.pyを参照するように記載します。
chatbot/urls.pyはchatbot/views.pyを参照します。
chatbotの関数でリクエストに値が設定されているか判定します。入っている場合はメッセージをテンプレートに渡します。
また、入力フォームの情報をFormクラスから取得します。
テンプレートにHTMLタグを記載します。
テンプレートの内容とchatbot/views.pyのメッセージを加工してブラウザに値を渡します。
chatbot/forms.pyコーディング
アプリのchatbotの配下にforms.pyのファイルを新規に作成します。
website/
┣ chatbot/
┃ ┣ forms.py
ファイルを作成したら以下の内容を記載します。
from django import forms
class ChatBotForm(forms.Form):
chat_bot = forms.CharField(
label = '入力欄',
max_length = 20,
required = True,
widget = forms.TextInput()
)
from django import forms
djangoのパッケージからformsをインポートします。
class ChatBotForm(forms.Form):
クラスを定義します。ここでは「ChatBotForm」という名前にします。
forms.Formを記載することでforms.Formを継承したクラスとなります。
chat_bot = forms.CharField(
label = '入力欄',
max_length = 20,
required = True,
widget = forms.TextInput()
)
CharFieldを作成します。
chatbot/views.pyコーディング
前回作成したchatbot/views.pyコードを修正します。
from django.http.response import HttpResponse
from django.shortcuts import render
from . import forms
def chatbot(request):
get_message = ''
if 'chat_bot' in request.GET:
get_message = request.GET['chat_bot']
form = forms.ChatBotForm(request.GET or None)
d = {
'form': form,
'message': get_message,
}
return render(request, 'index.html', d)
template/index.htmlコーディング
index.htmlのファイルを修正します。
<!DOCTYPE html>
<html>
<head lang="ja">
<meta charset="utf-8">
<title>チャットボット</title>
</head>
<body>
<h1>ブラウザで音声チャットボットつくるぞぉ!</h1>
<form action="" method="GET">
<label>{{ form.chat_bot.label }} {{ form.chat_bot }}</label><br/>
<input type="submit" value="送信">
<br/>
<br/>
{{ message }}
</form>
</body>
</html>
{{message}}にchatbot/views.pyで設定した値が渡ってきて文字列として表示されます。
まとめ
サーバーを起動します。
python manage.py runserver
urlを入力します。
http://127.0.0.1:8000/chatbot/
入力欄に値を入力し、送信ボタンを押します。
GET形式なのでURLにパラメータが表示されます。
{{ message }}には入力欄で入力した値が設定されていることが分かります。
0 件のコメント:
コメントを投稿
コメントをお待ちしています。