前回の続きで、Djangoについて学んでいきます。
今回はフォームについて勉強していきます。
Djangoの勉強内容は以下の本を参考にしています。
参考
Python Django3超入門 (日本語) 単行本 – 2020/6/13 掌田 津耶乃 (著)
コードは以前の記事を参考にしてください。
Djangoを勉強してみる_テンプレートを学ぶ_その2(入門編)
フォームとは
フォームとは、ユーザからデータ入力を受け付けるために使うものです。
例えば、ショッピングサイトで自分の情報(名前や住所、メールアドレス)を入力する項目です。
フォームを利用することによりユーザ独自の情報を提供したりすることができます。
さっそくフォームを作っていきます。
フォームを作成する
1.index.htmlに以下のコードを追加します。
ファイル:sample_app>hello>templates>hello>index.html
コード:
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>{{ title }}</title>
</head>
<body>
<h1>{{ title }}</h1>
<p>{{ msg }}</p>
#ここから追加-----
<form action="{% url 'form' %}" method="post">
{% csrf_token %}
<label for = "msg">message:</label>
<input id = "msg" type = "text" name = "msg">
<input type = "submit" value="click">
</form>
<a href ="{% url 'index' %}">INDEXへ</a>
#ここまで--------
</body>
</html>
このコードでは、テキストメッセージを入力するフォームを用意しています。
そして、以下のコードでフォームを動作させたときに、「form」という名前のパスを実行するようにしたため、urls.pyとviews.pyにformの動作を書く必要があります。
<form action=”{% url ‘form’ %}” method=”post”>
ちなみに、{% csrf_token %}ですが、これはWebサイトの攻撃であるCSRF(クロスサイトリクエストフォージュリ)対策のためのコードです。
2.views.pyを編集する
続いて、フォームが実行された時に使う、form関数を書いていきます。
ファイル:sample_app>hello>views.py
コード:
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
params = {
'title': 'Hello World!!',
'msg': 'これはサンプルページです。',
# 'page': 'next',
}
return render(request, 'hello/index.html', params)
def form(request):
msg = request.POST['msg']
params = {
'title': 'Hello Formページ',
'msg': 'リクエストされた文字は『' + msg + '』です。',
}
return render(request, 'hello/index.html', params)
フォーム関数を追加しました。
ここでは、フォームで受け取ったPOSTメッセージを「msg」変数に代入しています。
3.urls.pyを編集する
最後にurls.pyにpathを登録します。
ファイル:sample_app>hello>urls.py
コード:
from django.urls import path
from . import views
urlpatterns = [
path('',views.index, name='index'),
path('form/',views.form, name='form'),
# path('next/',views.next, name='next'),
]
pathに「form」が呼び出された場合、views.pyのform呼び出すようにしました。
以上で設定が終わったので、動作確認してみます。
動作確認
python manage.py runserver
ブラウザで以下にアクセスします。
http://localhost:8000/helloちゃんと、テキストを入力できるフォームが表示されています。

次はこのメッセージフォームに「テスト」と入れてクリックを押します。

リクエストした文字が表示されました!
簡単なフォームの作成することができました。
次回はDjangoが用意しているフォームを使ってみたいと思います。
以上です。ありがとうございました。
P.S.
勉強を継続することが苦手ですか?
少し前からココナラというサービスで習慣化のテクニックについて教えるサービスを始めました。
もし、いつも3日坊主で終わってしまうという方や、ダイエットを続けたい、勉強したい、運動したいなど何か習慣化したいと思っている方がいましたら全力でサポートしますので、まずは覗いてみてください。
すでに何人かの方に実践してもらって効果が出ているという感想をいただいてます。

コメント