見出し画像

Djangoでアプリ作成〜体重管理アプリ編2〜

こんにちは、こちょすです。

今日も体重・体脂肪率管理アプリを作っていきまっしょい🔥

前回の復習

前回はプロジェクトを作って、その中の初期設定の一部を実施しました。最後に実施したのが、projectフォルダ内のurls.pyファイルなわけですが、「urls.py」はビューを呼び出すために書いてるはずだけど、またurls.py呼び出してない??と思われた方もいると思います。

スクリーンショット 2020-04-18 22.41.26

↑イメージ図。↓実際の指定。

スクリーンショット 2020-04-18 22.45.35

その疑問は正しいです!イメージ図をざっくり書いた結果表現されていないのですが、このproject>urls.pyの中でやっているのは、「selfrecord/〜で始まるURLが指定されたらselfrecord内のurls.pyを見に行ってね」ということです。

そう、つまり例えば「selfrecord/index」だったり、「selfrecord/register」だったりが指定された場合にはselfrecord>urls.pyを見に行き、全く違うアプリ、例えば「diary/index」や「ruby/list」みたいなURLが指定されれば別のurls.pyを見に行くようにしているのです。こうすることで、Djangoプロジェクト内で複数のアプリを、お互いに干渉させずに管理できるようになるわけですね!

というわけで、次にやるべきことは、、、?そう!selfrecord内のurls.pyを作ることです。

selfrecord内の設定ファイル作成と修正

urls.pyの作成・編集

上で書いたように、project内のurls.pyから、selfrecord内のurls.pyが呼ばれた時に参照するurls.pyを編集しましょう。

スクリーンショット 2020-04-19 12.21.22

こんな感じ。元々存在していないファイルなので、新たにファイルを作って編集が必要です。コンソールからtouchで作っても、エディタなりファインダーから新規作成しても構いません!

ユーザがアクセスしてきているのは「selfrecord/〜」であることは確定しています。ここのファイルで定義しているのは、この「〜」以下のパスがどうなっているかです。上の指定だと、コメント部にも書いている通り、「selfrecord/」が指定された場合のビューの参照先を定義しています。たとえば「selfrecord/register」であれば「path('register/',views.register, name='register')」のようになるわけですね!


views.pyの修正

さて、ルーティングの定義は終わったので、次はその呼び出し先のロジック部分を書いて行きましょう!

スクリーンショット 2020-04-19 8.49.34

上のurls.pyに書いたのは「selfrecord/が指定されたとき、views.pyの中のindex関数を呼び出してね」ということです。

なので、views.pyの中にindex関数を定義します。以下の感じ。

スクリーンショット 2020-04-19 8.52.39

もう少し詳細に説明すると、この関数でやっていることは、

1、requestを受け取る
2、render関数にrequestを渡して呼び出す
3、render関数ではselfrecord/day_list.htmlというテンプレートを描画する
4、描画された結果ファイルを返す

です。

ここで、requestを引数と受け取っているのは、WEBサーバーのお約束ごとだと思ってください。ユーザは「この情報がほしい!」と要求(=request)をしてきます。それに対してサーバは「はいはい、これどうぞ。」と応答(=response)します。

なので、ユーザからの要求(=request)がわからないと、何をしていいかがわからないので、必ずrequestを受け取るものなんだと考えておけばOKです。

少しDjangoについて応用的な話をしますので、読み飛ばしちゃってもいいのですが、今は「def」という形で関数で宣言していますね。これを関数ビューといいます。これは上で書いたようなresponseを受け取ったら何をするか、どのhtmlテンプレートを返すのかなどを詳細に定義していく必要があります。一から設定できるので、カスタママイズが容易な一方、コーディングが多く、難しいところもあります。

一方でDjangoには「class」という形でビューを宣言することもできます。これをクラスビューといいます。こちらはDjangoフレームワークとして「response受け取ったら良い感じにやっとくよー」という仕組みです。これを使うと、requestやresponse、さらにはこの後出てくるテンプレートの呼び出し先もあまり意識することなく書くことができます。シンプルで簡単に作りたいならこれをオススメします。が、ある意味ブラックボックス化(中身がよくわからないけど動いている)ということになるので、まずは仕組みを理解するために、関数ビューでこれから実装していきます!(もちろん関数ビューで動くところまでいったらクラスビューへの書き換え作業もやりますよー!)

イメージこんな感じ。

スクリーンショット 2020-04-19 11.08.02

応用的な話はここまで!そして今回のnoteもここまでにしておきましょう!次回はテンプレートファイルの作成をしていきましょう🔥

読んでいただきありがとうございました!次回もよろしくお願いします!

またねー


ツイッターやっています!なるべく新鮮で有益な情報を発信していきたいと考えておりますので、フォローお願いします!


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

この記事が気に入ったらサポートをしてみませんか?