解説記事の構成
No. | タイトル | |
---|---|---|
1 | PythonのWebアプリケーション(Django)を初心者にもわかりやすく解説(1)【環境構築編】 | |
2 | [PythonのWebアプリケーション(Django)を初心者にもわかりやすく解説(2)【プロジェクト作成編】] (http://qiita.com/carat_yoshizaki/items/926f702198bdfe8c6bd2) | |
3 | [PythonのWebアプリケーション(Django)を初心者にもわかりやすく解説(3)【アプリケーション作成・DB設定編】] (http://qiita.com/carat_yoshizaki/items/c9a5299b77b99ff07e4a) | |
4 | PythonのWebアプリケーション(Django)を初心者にもわかりやすく解説(4)【ルーティング設定・MTVデザインパターン入門編】 | ← |
5 | PythonのWebアプリケーション(Django)を初心者にもわかりやすく解説(5)【Django shellでDB操作入門編】 | |
6 | PythonのWebアプリケーション(Django)を初心者にもわかりやすく解説(6)【MTVデザインパターン完成編】 |
開発環境
- OS: Mac OS Sierra (10.12)
- Python 3.5.2
Macの環境を前提として話を進めていきます。
Pythonのバージョン確認は以下の通りです。
$ python3 --version
Python 3.5.2
ウェブページの作成
ルーティングの設定
mysite/urls.py
にて管理画面(admin)とブログ用にルーティング(URL)の設定を行います。
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'', include('blog.urls')),
]
admin
に関しては、Django admin が自動的に設定してくれていますが、blog に関してはまだ何も作成していないため、設定を行っていきます。
blog/urls.py
という空ファイルを作成し、以下のように編集します。
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.post_list),
]
urlpatterns
については、Django Girls Tutorial より抜粋します。
これは^$というパターンのURLをpost_listというビューに割り当てたことを意味します。
^$ とは何を意味しているのでしょうか。
それは正規表現のマジックです:)分解してみましょう:
- 正規表現での^は「文字列の開始」を意味します。ここからパターンマッチを始めます。
- $は「文字列の終端」を意味していて、ここでパターンマッチを終わります。
この2つの記号を並べたパターンがマッチするのは、そう、空の文字列です。といっても、DjangoのURL名前解決では 'http://127.0.0.1:8000/' は除いてパターンマッチするので、このパターンは 'http://127.0.0.1:8000/' 自体を意味します。つまり、'http://127.0.0.1:8000/' というURLにアクセスしてきたユーザに対してviews.post_list
を返すように指定していることになります。
要するに、現状は urlpattern
で何も文字列のないURL (ルートディレクトリ)に対して、post_list
を割り当てると宣言しています。
post_list
のViewはまだ作っていないため、当然アクセスできません。
Djangoのデザインパターン
それでは、設定したURLに対応する表示画面を作っていくのですが、まずDjango内でどのように表示される画面やデータベースが管理されているか知っておく必要があります。
Djangoの話をする前に、代表的なデザインパターンであるMVCを見てみましょう。
MVCを理解しておけば今後の汎用性も高いですし、Djangoで採用されているMTVデザインパターンも簡単に理解できると思います。
Ruby on Railsなどで採用されているMVCデザインパターン
Webアプリケーションでは、よくMVCデザインパターンとして管理されることが多いです。
MVCは Model View Controller の略で、それぞれの役目は以下のようになります。
Ruby on RailsがこのMVCデザインパターンの典型的な例ではないでしょうか。
ユーザーからアクセスした情報をもとに、Controllerが仲介役となって、ModelとViewから必要な情報を引き出し、それらをまとめてユーザーに返すといったイメージです。
すごくざっくりと言うと、ViewがHTMLでModelがDB、Controllerがその管理役です。
そんな定番のMVCデザインパターンは慣れると非常に分かりやすく、そして扱い易いです。
DjangoはMTVデザインパターン
DjangoではMVCではなく、MTVデザインパターンと呼ばれるデザインパターンで管理しているようです。
※ この辺りは宗教争いのようなものでしょうか。
MTVは Model Template View の略称です。
色々と理由はあると思いますが、MVCデザインパターンで良いのに、、、というのが個人的な思いです。
基本的には、MVCとMTVは一対一対応するようなので、頭の中でMVCからMTVへと変換するようにしてください。
MTVの参考記事
Viewの設定
設定されたURLからどのTemplateを読み込むか、Templateにどのような情報を渡すかといった部分を制御しているのがViewです。
※ Ruby on RailsなどのMVCデザインパターンではControllerと呼ばれている部分です。
blog/views.py
を作っていきます。
from django.shortcuts import render
# Create your views here.
def post_list(request):
return render(request, 'blog/post_list.html', {})
さきほどのURLが post_list
というメソッドにアクセスするように設定されていたので、def post_list
を定義し、その中で request
を引数に取っています。
render
メソッドでは、blog/post_list.html
というテンプレートファイルを使って、引数で受け取った request
の内容を出力しています。
メソッド名とテンプレートファイル名を一致させておけば管理が楽ですね。
※ Ruby on Railsは基本的にメソッド名とテンプレートファイル名が一致することを前提として、render
はわざわざ書きません。
Templateの作成
それではテンプレートファイルを作りましょう。
まずTemplate用のディレクトリを作ります。
$ mkdir blog/templates
$ mkdir blog/templates/blog
この中に、post_list.html
を作成していきます。
<html>
<p>Hi there!</p>
<p>It works!</p>
</html>
これを保存したあとに、http://127.0.0.1:8000/ にアクセスすると、以下の用に、テンプレートが読み込まれて動作します。
HTMLの書き方に関しては、他にも参考文献がたくさんあるので、解説はそちらに譲るとします。
これで、URLを設定したオリジナルのテンプレートに対して、ウェブページを表示させることが出来るようになりました。
次回の解説記事
PythonのWebアプリケーション(Django)を初心者にもわかりやすく解説(5)【Django shellでDB操作入門編】
参考文献
おまけ
フォローお待ちしています!
- Qiita: Carat 吉崎
- twitter:@carat_yoshizaki
- はてなブログ:Carat COOのブログ
- ホームページ:Carat
サービス紹介
「数学→プログラミング→Webアプリケーション」まで一気に学べる機械学習のマンツーマン家庭教師サービス「キカガク」に興味のある方はお気軽にご連絡ください。