Django

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

Django(ジャンゴ)には、ページ遷移を行うためのPaginatorクラスが用意されている。Paginatorクラスについては、以下のサイトを参照のこと。
https://en-junior.com/paginator/

今回は、作成済の「Django」を利用したアプリケーションに、Paginatorクラスを利用したページ遷移機能を追加してみたので、そのサンプルプログラムを共有する。

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

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

demoフォルダ下、templatesフォルダ下の一覧画面(list.html)の内容は以下の通りで、ページ遷移を行うためのリンクを追加している。

なお、上記ソースコードでは、Djangoテンプレート内で加算を行うための「add」フィルターを利用している。Djangoテンプレート内で四則演算を行う方法については、以下のサイトを参照のこと。
https://freeheroblog.com/django-calculation/

また、demoフォルダ下、urls.pyの内容は以下の通りで、ページ遷移を行うためのURL(move_page)を追加している。

さらに、demoフォルダ下、view.pyの内容は以下の通りで、検索処理(SearchView)で検索後に、Paginatorオブジェクトを利用したページ遷移処理を行っている。また、ページ遷移処理(MovePageView)を追加すると共に、一覧画面に戻ってきた処理(UserListView)も修正している。

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

ウズウズカレッジJavaコースはわかりやすい動画教材と充実した就業サポートで優良企業を目指せるプログラミングスクールだったJavaは、世界中で広く使われていて、現在の需要が高く将来性もある開発言語になります。 https://www.acrovision....

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

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

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テーブルのうち2件が一覧画面(list.html)に表示され、ページ遷移のためのリンクが表示されることが確認できる。

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

4) 一覧画面(list.html)で「次へ」リンクを押下すると、以下のように、ページ遷移して次ページのデータが表示されることが確認できる。
サンプルプログラムの実行結果_4_1

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

5) 一覧画面(list.html)で「前へ」リンクを押下すると、以下のように、ページ遷移して前ページのデータが表示されることが確認できる。
サンプルプログラムの実行結果_5_1

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

6) 一覧画面(list.html)で「最後へ」リンクを押下すると、以下のように、ページ遷移して最終ページのデータが表示されることが確認できる。
サンプルプログラムの実行結果_6_1

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

7) 一覧画面(list.html)で「先頭へ」リンクを押下すると、以下のように、ページ遷移して先頭ページのデータが表示されることが確認できる。
サンプルプログラムの実行結果_7_1

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

要点まとめ

  • Django(ジャンゴ)にはPaginatorクラスが用意されていて、ページ遷移機能で利用できる。
  • Djangoテンプレート内で加算を行うためには、「add」フィルターを利用すればよい。