体育の日の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とか使って公開してみたいです。