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

    
  

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

    
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/

discord

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

discord

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

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

コメント

0 件のコメント:

コメントを投稿

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