【Django】ビューでのモデルや変数のテンプレートへの渡し方

DjangoはPythonにおける強力なWebアプリケーション作成ツールです。
さらにDjangoの中にはビューという定義があり、ビューを適切に設定することで、簡単にWebページを作成できます。

今回はこのビューにおいて、変数を渡す方法を解説していきます。

【Django】ビューでのモデルや変数のテンプレートへの渡し方

Djangoでビューを作成すると簡単にWebページが作成できます。
例えば、以下のような形です。

「template_name」で表示するhtmlファイルを、
querysetでDBから取ってきたデータを指定します。

これだけで、値をhtmlファイルに渡せていることになります。
ここまではいつもどおりのビューの定義ですね。

複数のモデルをビューからテンプレートに渡すには?

次に、複数のモデルを渡す場合です。
先ほどの例では「Songs」というモデルのみを渡していました。

ここで、例えば「Artists」というモデルも渡してみましょう。
これを行うには「get_context_data」を使用します。

例えば、以下のような形になります。

class内でdef宣言をすることで、複数のモデルを渡すことができます。
html内で渡したモデルを使用するには、context[‘変数’]の「変数」を使用します。

今回ならば、Artistsを使用します。
htmlファイルに「{{Artists}}」と記載すれば値を渡すことができます。

変数をビューからテンプレートに渡すには?

ついでにもう一つ。モデルではなく変数を渡す場合について。
Viewはデータベースとhtml、つまりバックエンドとフロントエンドを繋ぎます。
それゆえに、値に対して加工をすることが多いです。

ここで、例えば変数を渡す場合についても考えてみましょう。
今回のビューにおいて、変数「strexample = ‘1234567890’」を渡してみましょう。

上記のようになります。
ポイントは「self」を付け加えることですね。

モデルに関してはビューの戦闘でimportしているはずです。
そのためget_context_data内でも使えます。

しかしclass内で新しく設定した変数はそのままではget_context_data内で使えません。
引数に指定されているselfを先頭に付けることを忘れないでください。

ココだけの話ですが、単純に上記の例なら以下のようにしても問題ありません。
まあ、こんな値の渡し方はしないとは思いますが、念のために