今回はviews.pyの役割と書きかたについてやっていきましょう。
views.pyの役割とは?
・簡単に言うと...
views.pyはなにか処理をするときに必要。また、各ファイルとの橋渡し役。
・views.pyの処理って?
データベースから値を持ってきたり、繰り返したい処理をしたり、Webサイトに来てくれた人からの情報を保存する処理など...
views.pyの書きかた
classとdefで書く2パターンがあるが、classで書いたほうが見やすく書きやすいためclassで書くことをおすすめする。
・class(クラス)で書く場合
class FruitView(views.View): def get(self, request): -- 何かの処理 -- return -- HTMLに出力するコード -- def post(self, request): -- 何かの処理 -- return -- HTMLに出力するコード --
- 基本Viewクラスを継承する
- get/postの処理が明確に分かるため見やすくテストしやすい
- FruitView自体を継承できるため、使いまわせる
・Viewクラス?
Djangoが標準で用意してくれてるclass。クラスベースビュー入門 | Django ドキュメント | Djangoにくわしく書いてあるのでどうぞ。
・継承って?
classで作った処理を別のclassでも同じ処理が使えたり、処理を追加したりできること。1から処理を書く必要がなく便利。
・def(関数)で書く場合
def fruit_view(request): -- 何かの処理 -- return -- HTMLに出力するコード --
- HTMLとやりとりする場合requestを必ずつける
- パパっと書きたいときに使う
- 処理が長くなる場合がある
views.pyで使う処理の流れ
・views.pyでの処理の仕方
- urls.py→views.py→Templates
- models.py→views.py→Templates
- forms.py→views.py→Templates
処理の流れ1: urls.py→views.py→Templetes
一番オーソドックスな処理のやりかた。たとえばURLをクリック→ホームページの内容を表示。そんな流れをするのが1つ目の流れ。
- サイトに来てくれた人からURL情報受けとる
- urls.pyから一致しているURLを探す
- URL情報から紐づいてるviews.pyの処理を選択
- views.pyで処理をする
- 処理した情報を見た目部分Templates(HTML)に表示させる
処理の流れ2: models.py→views.py→Templates
保存されているデータを、見た目部分に表示したいときに使う流れ。たとえば、次のようなデータを表示したいとすると...
・Fruit(果物)
name(名前) | origin(産地) |
---|---|
ぶどう | 山梨県 |
みかん | 愛媛県 |
りんご | 青森県 |
1. models.pyに次のようなデータベースがある場合
class Fruit(models.Model): name = CharField(max_length=10) origin = CharField(max_length=10) def __str__(self): return self.name
2. views.pyでは次のような処理をします
def fruit_desplay(request): models = Fruit() return render(request, "index.html", {"model": models})
- modelsという変数に、さっきのFruitを代入
- index.htmlにmodels情報をmodelという名前にしてindex.htmlに渡す流れ
3. index.htmlにmodel情報(データ)を表示させる
{% for m in model %} <p>{ m.name }</p> <p>{ m.origin }</p> {% endfor %}
・models.pyをもっと知りたい場合
【入門】Django/models.pyの書きかた使いかたで解説してるのでどうぞ。
処理の流れ3: forms.py→views.py→Templetes
サイトに来てくれた人に入力してほしいとき使う流れ。コードの流れとしては、さっき紹介したmodels.pyのときと大体同じ。
・forms.pyでデータ登録が可能
forms.pyとmodels.pyをつなげればデータを入力してもらって、そのデータを保存することも可能
・forms.pyについてもっと知りたい?
【入門】Django/forms.pyの役割と使いかた -Windowsで解説してるのでどうぞ。
まとめ
- views.pyはなにか処理をするときに必須
- 他のファイルとの橋渡し役
- 基本的な書きかたはclassをおすすめ
views.pyを理解して使えるようになるとアプリケーションつくるのがもっと楽しくなるので、ぜひ覚えておきましょう。
・Djangoで必須なMTVを知っていますか?
DjangoにとってMTVは知らなくてはならない存在。【基礎】Django/MTVモデルを知って効率的にWebアプリを作ろうで解説してるのでどうぞ。