【入門】Django/views.pyの役割と書きかた

今回は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つ目の流れ。

  1. サイトに来てくれた人からURL情報受けとる
  2. urls.pyから一致しているURLを探す
  3. URL情報から紐づいてるviews.pyの処理を選択
  4. views.pyで処理をする
  5. 処理した情報を見た目部分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アプリを作ろうで解説してるのでどうぞ。

本で学習【初心者用】Pythonで自動化したいなら学習に最適な2冊はこれ

あなた向け今まさに「きれいなコードを書かなくちゃ...」と考えているあなたへ。