【Django入門】viewsを使ってページを表示させよう

今回は、PythonのDjangoで使われるviewの書き方、使い方について解説します。

viewだけではなく、MTVモデルについても併せて学んでいきましょう。

この記事では、

・MTVモデルとは何か
・viewとは何か

について解説します。さらに、

・view関数、viewクラスについて
・クラスベース汎用ビューの使い方

についての解説を通して、複雑なviewに対しての知識も深めていきましょう。

MTVモデルとは

今回学ぶviewの前に、まずはMTVモデルと呼ばれる設計思想について学んでいきましょう。

DjangoはMTVモデルを採用しています。

MTVとは、

・Model(データベースに格納されているデータ)
・Template(テンプレートファイルによって定義されたそれぞれのページのデザイン)
・View(どのページを表示させるかを決定する処理)

の頭文字を取ったものです。

図にしてみるとこのようになります。

よく似た設計にMVC(Model、View、Controller)というモデルもあります。

MVCモデルの場合は、

・Model(データベースに格納されているデータ)
・View(ページをどのように見せるのかを決定する処理)
・Controller(ユーザーからの入力をModelに伝える処理)

になります。

MVCモデルを採用しているフレームワークには、Ruby on Railsがあります。

viewとは

これから学んでいくviewは具体的にどのような役割をするのか、見ていきましょう。

viewではどのページを表示するかを決定する処理をしています。

具体的には送られてきたリクエストをもとに、どのページを表示させるかの決定をしています。

関数で実装されているviewや、クラスで実装されているviewもあります。

一緒にviewに触れてみましょう!

view関数の使い方

ここからは実際にview関数を書いて、動作をさせてみます。

Djangoのインストール方法

まずはDjangoをインストールしましょう。

Djangoはパッケージとして提供されています。

インストール方法はこちらの記事をご覧ください。

【Django入門】あなたのパソコンにDjangoをインストール!
更新日 : 2019年1月29日

プロジェクトとアプリケーションの作成

インストールが出来たら、次はプロジェクトアプリケーションを作成していきます。

詳しくはこちらの記事で解説されているのでご覧下さい。

【Django入門】Djangoアプリの設計哲学!MTVモデルをmodelsを通して学ぼう!
更新日 : 2019年1月29日

簡単なview関数の作成

プロジェクトとWebアプリケーションのテンプレートまでは出来ましたか?

myappディレクトリに入ると、views.pyというファイルがあります。

これが、MTVモデルのViewを司る今回の肝となる部分です。

views.pyにこのような記述をしましょう。

indexという関数名で引数にrequestを受け取り、「Hello,World.」というHTTPレスポンスを返します。

HTTPレスポンスとは、ページなどに関するサーバーからの返信と考えて良いでしょう。

しかし、これだけではまだ動きません。

views.pyと、URLを紐付けする必要があります。

urlpatternsを使ってurls.pyに設定を追加

先程はviews.pyにindex関数を追加しました。

しかし、views.pyを編集するだけではアクセスすることができません。

viewを呼ぶために、urls.pyというファイルを作って紐付けをする必要があります。

これは自動で生成されないので、views.pyと同じディレクトリに自分で作りましょう。

そしてこのように編集します。

views.pyに追加したindex関数を、urls.pyに紐付けします。

今編集したurls.pyは、myapp/urls.pyでしたが、mySite/urls.pyも編集する必要があります。

このコードをmySite/urls.pyに書きましょう。

これで、すべての準備は完了です。

ターミナルでmySiteディレクトリに入り、このコマンドを実行しましょう。

これで、すべての準備は完了です。

ターミナルでmySiteディレクトリに入り、このコマンドを実行しましょう。

これで、 http://127.0.0.1:8000/ にブラウザでアクセスするとサーバーが起動していることがわかると思います。

さらに、http://127.0.0.1:8000/myapp にアクセスすると、views.pyのHTTPレスポンスで指定したHello, World.が表示されます。

これですべての紐付けが出来ました。

viewクラスの使い方

viewには関数だけではなくクラスも使うことができます。

リクエストがシンプルなものであれば関数でも構いません。

しかし、関数を使う場合、リクエストによって処理を変える場合はif文を使って多くの分岐を書かなければなりません。

そこで、viewクラスを使うことによってviews.pyに書く量を減らすことができます。

現在は関数のviewよりもクラスのviewが一般的になっているのでぜひ覚えておきましょう。

また、クラスで使われる継承などについてはこちらの記事をご覧ください。

【Python入門】クラスの使い方を簡単解説で楽々マスター
更新日 : 2019年7月31日

簡単なviewクラスの作成

ここで、viewクラスを使ったviews.pyを書いてみましょう。

すでにDjangoに用意されているTemplateViewというクラスから継承して、独自のメソッドを書いています。

メソッドはありませんが、プロパティでtemplate_nameを指定しています。

urls.pyも同時に変更しましょう。

クラスベースのViewを使う時はas_view()メソッドを使うことを覚えておきましょう。

これで、テンプレートとviewクラスを使ってページを表示させることができました。

クラスベース汎用ビューの応用

クラスを利用したviews.pyについてわかったところで、応用について学んでいきましょう!

TemplateViewで変数を使う方法

今まではHttpResponseで返した「Hello,World.」という文字列しか返すことができませんでした。

しかしテンプレート変数を利用することで、データベースに格納されているものを表示することができます。

ここではデータベースには触れず、変数が使えることの確認をしたいと思います。

このようにviews.pyを編集をします。

contextという変数には、継承元のメソッドを呼び出しています。

これで、index.htmlというファイルにこのような編集をします。

これで、titleという変数がindex.htmlに書き加えられました。

これはtemplateファイルとも呼ばれるものです。

詳しくはこちらの記事をご覧ください。

【Django入門】templateとHTMLを使ってWebページを表示しよう
更新日 : 2019年5月13日

views.pyではtitleという変数にMyPageが入っているので、ページが表示されるとMyPageという文字が表示されます。

まとめ

MTVモデルのひとつを担う大切なViewについて、学習してきました。

views.pyの書き方や、urls.pyがどのような働きをするかについて、覚えておきましょう。

また、Djnagoを扱う上でこれらの内容は基本的な部分になります。

クラスベース汎用ビューは中でも大切な部分になるので、しっかりと身につけておきましょう!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

ryo

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説