Django

Pythonフレームワーク「Django」を利用して複数画面をもつWebアプリケーションを作成してみた

Django(ジャンゴ)を利用すると、PythonによるWebアプリケーションを作成することができる。

今回は、入力画面・確認画面・完了画面の3画面を含み、HTMLオブジェクトとしてテキストボックス・ラジオボタン・チェックボックス等を含むWEBアプリケーションを作成してみたので、そのサンプルプログラムを共有する。

前提条件

下記記事のDjangoによる環境構築と実装が完了していること。

Pythonフレームワーク「Django」を利用したWebアプリケーションを作成してみたDjango(ジャンゴ)とは、Pythonで開発する際のWebフレームワークの1つで、無料のオープンソースとして公開されていて、高品質な...

サンプルプログラムの作成

作成したサンプルプログラムの構成は、以下の通り。
サンプルプログラムの構成
なお、上記の赤枠は、前提条件のプログラムから追加・変更したプログラムである。

djangoAppフォルダ下、settings.pyの変更内容は以下の通りで、言語設定を日本語に変更している。

また、demoフォルダ下、templatesフォルダ下のHTMLファイルの内容は以下の通りで、入力画面(input.html)・確認画面(confirm.html)・完了画面(complete.html)を作成している。

さらに、demoフォルダ下、staticフォルダ下のCSSファイルの内容は以下の通りで、入力画面で利用している。

また、demoフォルダ下、forms.pyの内容は以下の通りで、入力画面で利用するフォームオブジェクトを定義している。

なお、日付の入力項目はSelectDateWidgetで生成している。また、日付の妥当性チェックや「required=False」属性の無い項目の必須チェックも、自動で実施されるようになっている。

さらに、demoフォルダ下、urls.pyの内容は以下の通りで、入力画面・確認画面・完了画面の画面遷移時に呼び出すURLパスを指定している。

また、demoフォルダ下、views.pyの内容は以下の通りで、各画面でボタンが押下された場合の処理を定義している。

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/python/tree/master/make-django-web-somescreen/djangoApp

なお、今回は利用していないが、以下のサイトのように、フォームのas_p, as_ul, as_tableを利用できる場合は利用すると、簡単なソースコードでフォーム値の表示をきれいに行える。
https://www.nblog09.com/w/2019/04/09/django_form/



「FlexClip」はテンプレートとして利用できる動画・画像・音楽などが充実した動画編集ツールだったテンプレートとして利用できるテキスト・動画・画像・音楽など(いずれも著作権フリー)が充実している動画編集ツールの一つに、「FlexCli...

サンプルプログラムの実行結果

サンプルプログラムの実行結果は以下の通りで、画面遷移やエラーチェック処理が行えることが確認できる。

1) コマンドプロンプトでDjangoプロジェクト名のフォルダに移動し、「python manage.py runserver」コマンドを実行して、Webサーバーを起動する。
サンプルプログラムの実行結果_1

2) Webブラウザを起動し、「http://127.0.0.1:8000/demo/」にアクセスすると、以下のように、入力画面(input.html)の内容が画面表示されることが確認できる。
サンプルプログラムの実行結果_2

3) 何も入力せず「確認」ボタンを押下すると、以下のようなエラーメッセージが表示されることが確認できる。なお、下記は「名前」の例だが、「性別」「入力確認」も同様のエラーメッセージが表示される。
サンプルプログラムの実行結果_3

4) 生年月日に存在しない日付を入力し「確認」ボタンを押下すると、以下のようなエラーメッセージが表示されることが確認できる。
サンプルプログラムの実行結果_4

5) 以下のように、エラーにならないデータを指定し「確認」ボタンを押下すると、確認画面に入力画面の内容が表示される。さらに「戻る」ボタンを押下すると、入力画面に戻り入力値が復旧されることが確認できる。
サンプルプログラムの実行結果_5_1

サンプルプログラムの実行結果_5_2 サンプルプログラムの実行結果_5_3

6) 以下のように、メモを入力しないで「確認」ボタンを押下した場合も、確認画面に入力画面の内容が表示される。さらに「送信」ボタンを押下すると、完了画面に遷移することが確認できる。
サンプルプログラムの実行結果_6_1

サンプルプログラムの実行結果_6_2 サンプルプログラムの実行結果_6_3

要点まとめ

  • Pythonフレームワーク「Django」には、HTML のフォームを生成するためのFormクラスが用意されていて、入力値のチェックを行う機能も含まれている。
  • 画面遷移時のパスは、HTML formタグ内のaction属性のURLで、urls.pyに定義した画面遷移先のname属性の値を指定する。
  • Djangoでは、デフォルトでCSRFの検証を行うため、POSTメソッドでフォームを送信する場合は「{% csrf_token %}」というタグを追加する必要がある。
  • view.pyで、POSTメソッドで送信されたフォームの値を取得するには、requestオブジェクトのPOSTメソッドを利用する。
  • view.pyでフォームの入力チェック結果を取得するには、Formクラスのis_validメソッドを利用する。