Django

Pythonフレームワーク「Django」を利用したアプリで検索機能を追加してみた

Django(ジャンゴ)に含まれるデータベースとアクセスするModelには、条件に合ったオブジェクトを取得するfilterメソッドがある。

今回は、作成済の「Django」を利用したアプリケーションに、filterメソッドを利用した検索機能を追加してみたので、そのサンプルプログラムを共有する。

なお、filterメソッドについては、以下のサイトを参照のこと。
https://yu-nix.com/archives/django-filter/

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

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

demoフォルダ下、templatesフォルダ下の検索画面(search.html)の内容は以下の通り。



また、demoフォルダ下、view.pyの内容は以下の通りで、検索画面表示処理(IndexView)、検索処理(SearchView)、一覧画面表示処理(UserListView)を追加している。なお、検索処理ではModelのfilterメソッドを利用している。

さらに、demoフォルダ下、urls.pyの内容は以下の通りで、検索画面表示パス(index)、検索処理のパス(search)、一覧画面表示パス(list)を追加している。

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

また、demoフォルダ下、forms.pyの内容は以下の通りで、検索画面で利用するFormクラス(SearchForm)を追加している。

さらに、入力画面(input.html)、削除確認画面(delete_confirm.html)の内容は以下の通りで、一覧画面に遷移するための「戻る」ボタンを追加している。

また、一覧画面(list.html)、完了画面(complete.html)の内容は以下の通りで、「検索画面に戻る」ボタンを追加している。

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



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

サンプルプログラムの実行結果は以下の通りで、検索処理を正常に行えることが確認できる。

1) 実行前のuser_dataテーブルの中身は、以下の通り。

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

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

3) Webブラウザを起動し、「http://127.0.0.1:8000/demo/」にアクセスすると、以下のように、検索画面(search.html)が表示されることが確認できる。また、何も条件を入力せず「検索」ボタンを押下すると、以下のように、user_dataテーブルの中身が全て一覧画面(list.html)に表示されることが確認できる。
サンプルプログラムの実行結果_3_1

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

4) 一覧画面(list.html)で「データ追加」ボタンを押下すると、以下のように、入力画面(input.html)⇒確認画面(confirm.html)⇒完了画面(complete.html)に遷移することが確認できる。
サンプルプログラムの実行結果_4_1

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

5) 完了画面(complete.html)で「検索画面に戻る」ボタンを押下すると、検索画面(search.html)に戻ることが確認できる。
サンプルプログラムの実行結果_5_1

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

6) データ追加後のuser_dataテーブルの中身は、以下の通り。

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

7) 検索画面で生年月日の範囲を指定し「検索」ボタンを押下すると、指定された範囲の生年月日をもつデータが検索され、一覧画面(list.html)で「検索画面に戻る」ボタンを押下すると、検索画面に戻ることが確認できる。
サンプルプログラムの実行結果_7_1

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

8) 検索画面で名前を指定し「検索」ボタンを押下すると、指定された名前を含むデータが検索されることが確認できる。
サンプルプログラムの実行結果_8_1

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

9) 検索画面で性別を指定し「検索」ボタンを押下すると、指定された性別をもつデータが検索されることが確認できる。
サンプルプログラムの実行結果_9_1

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

10) 検索画面で不正な生年月日を指定すると、以下のように、エラーメッセージが表示されることが確認できる。
サンプルプログラムの実行結果_10_1

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

11) 一覧画面で「削除」リンクを押下すると、以下のように、削除処理が行われることが確認できる。
サンプルプログラムの実行結果_11_1

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

12) データ削除後のuser_dataテーブルの中身は、以下の通り。

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

要点まとめ

  • Django(ジャンゴ)に含まれるデータベースとアクセスするModelには、条件に合ったオブジェクトを取得するfilterメソッドがあり、検索機能で利用できる。