Djangoのチュートリアルを実施した
体育の日の3連休のうち2日を利用して、Djangoのチュートリアルを実施しました。
今回の記事は、ただの感想になります。
チュートリアル記載ページはこちら。
さぁ始めましょう。 | Django documentation | Django
なお、Djangoと書いて、「ジャンゴ」と読むそうです。(Wikipediaより)
環境
Visual Studio Codeを使っています。当ブログではおなじみです。
| ツール等 | バージョン |
|---|---|
| Python | 3.6.2 |
| Django | 1.11.6 |
| Visual Studio Code | 1.17.0 |
| (VSCode拡張機能)Python | 0.7.0 |
動作確認は、Microsoft Edgeで行っています。
Chromeでチュートリアル見ながらなので、別ブラウザのほうが都合が良いです。
チュートリアルで、このブラウザを使え!という指定は見当たらなかったので、なんでもよいと思います。
所要時間
上記環境構築の時間を除くと、約7時間です。
ソースはコピペせずに書いています。
筆者経験
まともに、Webアプリケーションを構築した経験はありません。
一応、この記事に少し書いたように、JavaのPlay Frameworkを使った経験はあります。
チュートリアル程度なら、ASP.NET MVCとRuby on Railsはやったことあります。
チュートリアルでできること
- サイトの立ち上げ
Modelを利用したDB構築(マイグレーション方法)
マイグレーションとは、簡単に言うと、ソースコード上の定義からDBのテーブル等を構築する作業です。Djangoでは、その機能を標準でサポートしています。- ルーティング定義
- View定義
- 自動テスト
- 管理サイトの操作
- パッケージ化(
setuptools利用)
チュートリアル所感
チュートリアルは、すごく単純なサイトを、ローカルで構築するものです。
Djangoには、サーバー機能が付属しているので、ローカルのみで実行できます。*1
特徴があると思った点を、いくつか書いてみます。
Viewの定義
{% %}のような、独特な記法を使います。
このソースは、最終的なindex.htmlの中身です。
{% load static %}
<link rel="stylesheet" type="text/css" href="{% static "polls/style.css" %}" />
{% if latest_question_list %}
<ul>
{% for question in latest_question_list %}
<li><a href="{% url "polls:detail" question.id %}">{{ question.question_text }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>No polls are available.</p>
{% endif %}
{% %}が、既定の構文で、{{ }}が、変数参照だと思います。
記載の通り、cssのロード等も可能です。
なんだか、Railsで見たような記法です。
管理サイト
正直、チュートリアルで作るサイトより、はるかに便利で綺麗です。
- チュートリアルで作ったサイト(トップ)

上でソースを載せた、index.htmlを表示したものです。
チュートリアルで、「右下に画像を載せよう!」というのがあったので、手元にあったSurfaceの画像を載せています。
- 最終的な管理サイト(登録画面)

デフォルトでの管理サイトの充実度は、正直すごいと思います。
アプリケーションの考え方
チュートリアルでは、pollsという投票サイトを作成します。
最終的には、そのpollsだけをアプリケーションとして配布する形となります。
管理ページ等からは、完全に分離しています。
サイトA
∟polls
という仕組みで構築しますが、pollsだけ分離して、
サイトB
∟polls
と組み替えることが、容易にできます。
感想
チュートリアル程度とはいえ、いくつかWebアプリケーションフレームワークを見た感想です。
個人的には、最終的には全部似るんだな、と思いました。
まあ、全てMVCだから、と言えばそれまでなんですが。
どの方法でも、
- 生のHTMLを触れる
- View(html)の記法に特殊なものを利用している
- Model層で、O/Rマッピングを提供する
という点では同じです。
Viewでは、
| 方式 | 拡張子 |
|---|---|
| ASP.NET MVC | .cshtml |
| Ruby on Rails | .erb |
| Play Framework | .scala.html |
| Django | .html |
という感じで、独自の似たような拡張を施していました。*2
Django感想
Djangoの感想ですが、チュートリアルだけだと、
controllerは何処に?
という疑問が残りました。
まあきっと、直接viewを呼び出すのを止めればいい、ということなんでしょう、きっと。
→調べたら、いくつか記述がありました。そもそも、MVCじゃないんだよ!ということらしい…
チュートリアルでいうviewが、controllerらしい…?
おわりに
全くプログラミングやったことない人が、このページにたどり着くことはあまりないかもしれません。
ただ、環境構築とかのハードルの低さを考えると、Djangoは簡単な部類に入ると思います。
あと、他のWebアプリケーションフレームワークを触ったことがある人が、他のフレームワークを触って比較して、という対象にするにはちょうどいいと思います。
いつか、実践的なアプリケーションを、herokuとか使って公開してみたいです。