DjangoでFormを用いた値のやり取り

Djangoをインストールする

今回はPythonのWebアプリケーション用フレームワークのDjangoでFormの使い方について投稿します。

これまでの内容については、以下を参照してください。

Djangoのテンプレートを使ってみる

フォーム作成

discord

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

    
  

ファイルを作成したら以下の内容を記載します。

  1. from django import forms
  2. class ChatBotForm(forms.Form):
  3. chat_bot = forms.CharField(
  4. label = '入力欄',
  5. max_length = 20,
  6. required = True,
  7. widget = forms.TextInput()
  8. )
  1. from django import forms

djangoのパッケージからformsをインポートします。

  1. class ChatBotForm(forms.Form):

クラスを定義します。ここでは「ChatBotForm」という名前にします。

forms.Formを記載することでforms.Formを継承したクラスとなります。

  1. chat_bot = forms.CharField(
  2. label = '入力欄',
  3. max_length = 20,
  4. required = True,
  5. widget = forms.TextInput()
  6. )

CharFieldを作成します。

chatbot/views.pyコーディング

前回作成したchatbot/views.pyコードを修正します。

  1. from django.http.response import HttpResponse
  2. from django.shortcuts import render
  3. from . import forms
  4. def chatbot(request):
  5. get_message = ''
  6. if 'chat_bot' in request.GET:
  7. get_message = request.GET['chat_bot']
  8. form = forms.ChatBotForm(request.GET or None)
  9. d = {
  10. 'form': form,
  11. 'message': get_message,
  12. }
  13. return render(request, 'index.html', d)

template/index.htmlコーディング

index.htmlのファイルを修正します。

  1. <!DOCTYPE html>
  2. <html>
  3. <head lang="ja">
  4. <meta charset="utf-8">
  5. <title>チャットボット</title>
  6. </head>
  7. <body>
  8. <h1>ブラウザで音声チャットボットつくるぞぉ!</h1>
  9. <form action="" method="GET">
  10. <label>{{ form.chat_bot.label }} {{ form.chat_bot }}</label><br/>
  11. <input type="submit" value="送信">
  12. <br/>
  13. <br/>
  14. {{ message }}
  15. </form>
  16. </body>
  17. </html>

{{message}}にchatbot/views.pyで設定した値が渡ってきて文字列として表示されます。

まとめ

サーバーを起動します。

  1. python manage.py runserver

urlを入力します。

http://127.0.0.1:8000/chatbot/

discord

入力欄に値を入力し、送信ボタンを押します。

discord

GET形式なのでURLにパラメータが表示されます。

{{ message }}には入力欄で入力した値が設定されていることが分かります。

コメント

0 件のコメント:

コメントを投稿

コメントをお待ちしています。