「Django使ってるけど、views.pyってなに?なんかけっこう複雑なんだけど」
views.pyはなにか処理(計算とか)をするときに必須なファイルですね

今回は、views.pyについて分かりやすく話していきましょうか。

views.pyっていったいなんなの?

簡単に言えば、views.pyは、なにか処理(計算とか)をするときに必須なファイルですね

処理したあと、見た目部分(Templates,HTML)に表示します。

それとmodels.pyやforms.pyと見た目部分とのつなぎ役もしてるんです。
どんなアプリケーションつくるときも必須なファイルですよ。

大まかなパターンとしては3パターンありますね。

  • urls.py→views.py→Templates
  • models.py→views.py→Templates
  • forms.py→views.py→Templates

urls.py→views.py→Templetes

views.pyの基本的な流れは下記のようになるんです。

  1. サイトに来てくれた人からURL情報受けとる
  2. urls.pyから一致しているURLを探す
  3. URL情報から紐づいてるviews.pyの処理を選択
  4. views.pyで処理をする
  5. 処理した情報を見た目部分Templates(HTML)に表示させる

models.py→views.py→Templates

これは、保存されているデータを、見た目部分に表示したいときに使う流れですね。

たとえば、下記のようにデータがあるとするじゃないですか。

Fruit(果物)
name(名前)origin(産地)
ぶどう山梨県
みかん愛媛県
りんご青森県

これを表示したいとき、下記からコードにして説明していきましょう。

まずはmodels.pyから

models.py

class Fruit(models.Model):
    name = CharField(max_length=10)
    origin = CharField(max_length=10)

    def __str__(self):
        return self.name

つぎは、views.pyを書いてみますね。

views.py

def fruit_desplay(request):
    models = Fruit()
    return render(request, "index.html", {"model": models})

modelsというので、さっきのFruitというのを代入してますよ。

そのあと、index.htmlにmodels情報をmodelという名前にしてindex.htmlに渡してる流れですね。

そしたら、index.htmlを書いてみましょうか。

index.html

{% for m in model %}
  <p>{ m.name }</p>
  <p>{ m.origin }</p>
{% endfor %}

ここで、views.pyから渡されたmodelデータを表示してね、と指示をしてる流れですね。
for文を使ってるのは、複数のデータがあるからです。

ちなみに、urls.pyは下記のような感じ。

path('fruit/', views.fruit_display, name="fruit")

これはたとえば、『https://examples/fruit/』というURLを開いた場合に、views.pyのfruit_displayにある処理をしてくださいねっていうコードですよ。

これで、ちょっとは処理の流れつかめましたか?

『もっとmodels.pyのこと知りたいよ!』ってなったら下記記事を見てみてね。

forms.py→views.py→Templetes

つぎは、サイトに来てくれた人に入力してほしいとき使う流れですよ。

コードの流れとしては、先ほど紹介したmodels.pyのときと大体同じですね。

もっとforms.pyについて『くわしく知りたいよ!』ってなったら下記の記事を見てみてね。

まとめ

  • views.pyは、なにか処理(計算とか)をするときに必須なファイル
  • アプリケーションつくるときは必ず必要になってくる
  • 基本的な使いかたは3パターン

views.pyを理解して使えるようになるとアプリケーションつくるのがもっと楽しくなるので、ぜひ覚えておきましょうね。

人気記事【必読】"見やすく修正しやすいコード"につながる本『リーダブルコード』