見出し画像

Djangoでアプリ作成〜体重管理アプリ編14(応用)〜

こんにちは、こちょすです。久々に換気扇の掃除をしたところ、油汚れが酷くて時間がかかりました、、、ですが綺麗になったのでスッキリです!

では今回もDjangoアプリ作成していきましょうー!💪

前回の復習

前回は詳細画面の作成を行いました。更新処理ととてもよく似ていたので、見ないでできた方も多いのではないでしょうか!🔥

今回は応用編第二弾ということで、これまで作成してきたviews.pyを書き換えていく作業をしていきます。💪

ちなみに、処理の内容は変えずに、簡潔なコードに書き換えて可読性をあげたり、処理性能をあげたりすることを、「リファクタリング」といいます。✍️

私の個人の意見ですが、まずは
1、とりあえず汚いコードでも動くことを優先してコーディングする

一通りの機能が完成したら
2、もっとシンプルに、簡潔にかけないかリファクタリングを検討する

の順番に進めるのがいいと思います。私もそうですが、いきなり初めから綺麗なコードを書くのは難しいですし、デッドロジックももしかしたら作り込んでしまうこともあるかもしれませんが、それでも構いません👌

今作成しているアプリについても、とりあえず動くところまでは完成しています。なので、これから2の段階に入っていきましょう!🔥

Djangoの汎用ビューって?

この連載の最初の方でも書いた覚えがありますが、Djangoの中枢を担うviews.py。この中にページごとの処理を書いていくわけですが、この書き方には大きく2種類あります。それは

「関数ビュー」と「クラスビュー(汎用ビュー)」です。

ここまで書いてきたのは関数ビューです。これは処理を一から書いていくものになります。自由に処理をかけるというメリットはありますが、冗長なコードになったり、統一性にかける実装になったりします。

一方でこれから書き換えようとしているのがクラスビュー(汎用ビュー)です。こちらはDjangoにもともと用意されているビューで、「一覧画面を作りたいならこういう処理が必要だよねー」とか「更新処理ならこうだよねー」というのがひとまとまりになっているものです。なので、とてもシンプルで簡潔に書くことができます。便利ですね✍️🔥

では前置き長くなりましたが、書き換えていきましょう💪

一覧機能の書き換え

まずは一覧機能から書き換えていきましょう!

<views.py>

画像1

これだけです!!グレーにしているところはコメントアウトなので、今回は変更点がわかりやすいように残していますが、削除してしまってもOKです👌

ポイントを解説していきます!🔥

ポイント1:genericのインポート
この汎用ビューを使うために、django.viewsからgenericライブラリのインポートが必要となります。それを2行目の部分に追記しています。

ポイント2:classビューを利用している
今回やりたかったのはここの部分ですね!吹き出しでわかりやすいように記載していますが、一覧表示をさせたい場合には、ポイント1でimportしたgenericライブラリから、generic.ListViewを引数として受け取ります。

その後、クラスの中にはどのオブジェクトを一覧表示させたいのかを書くだけです!これを書くだけで、Djangoは自動的にオブジェクトを取得して、一覧画面用のテンプレートを呼び出してくれます。
ここで呼び出し先のテンプレート名はday_list.htmlとなります。実は、ここの修正をするために、関数ビューのときからこの名前で作っていたんです!💪

というわけで今回はテンプレートファイルの修正は不要です!(場合によってはテンプレートファイル名を変更するか、views.pyのほうで指定するかしてください)

では次にurls.pyを修正します💪🔥

<urls.py>

画像2

修正点は少しだけ!先ほどviews.pyに追加したIndexViewを紐付けいます。ポイントは.as_view()をつけて呼び出している点です。ここは汎用ビューを利用するときのお約束だと思って覚えちゃってください💪✍️

そしてこれだけでリファクタリング完了でございます👏👏

というわけで、実際にサーバを動かして見てみましょう🔥

画像3

問題なく表示されましたね!この表示は変わっていませんが、中身があれだけ簡潔になりました。これぞリファクタリングの💪って感じ🤗

今回はここまでとしましょう!次回は一気に他の機能もやっちゃいますね!💪お楽しみに〜🙇


ツイッターもやっています!エンジニアの皆様に有益な情報を発信していきますので、ぜひフォローをお願いします🙇🙏


この記事が参加している募集

おうち時間を工夫で楽しく

この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
3
筋肉系エンジニア(Python/Java)/初心者向けプログラミング記事執筆/ブログ👉https://koleoblog.info/

こちらでもピックアップされています

Djangoアプリ〜体重・体脂肪管理アプリ編〜
Djangoアプリ〜体重・体脂肪管理アプリ編〜
  • 15本
コメント (2)
"処理の内容は変えずに、簡潔なコードに書き換えて可読性をあげたり、処理性能をあげたりすることを、「リファクタリング」といいます”

ふむふむ。
勉強になります。
トシヤさん
いつも購読・コメントありがとうございます🙇
動くものを作るだけならリファクタリングはしなくてもいいのですが、それを保守していく場合、自分以外の人が修正したり、内部ロジックを変えようとしたときに、修正が漏れてしまったり、調査に時間がかかってしまったりします。
なので効率的に保守していくためにも、簡潔でわかりやすいコードを書けるといいのかなと思っています!💪
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。