公式TutorialでDjangoを学ぶ
はじめに
Djangoの公式チュートリアルは実際にDjangoを活用して基本的なWebアプリケーションの開発を体験しながらDjangoについて学ぶことができます。
今回は公式チュートリアルに記載のあるWeb投票フォームの作成を行い、Djangoを学びます。
公式チュートリアルでのアプリ開発は8項目に分かれており、Djangoの概要、PythonやDjangoのインストールを行うクイックインストールガイドがあった後にアプリ開発を始める流れになっています。8項目が終わった後には追加項目として高度なチュートリアルも用意されていますので、アプリ開発後に確認すると周辺知識も含めて学びが深まるでしょう。
良かったこと
それでは早速、公式チュートリアルの良かったところですが、カリキュラムの充実が挙げられるかと思います。
充実したカリキュラム
かなりのボリュームがあります。それもそのはずでPythonのインストールやデータベース設定の項目があり、その後にDjangoのインストールの項目があるので、Pythonを学んだばかりであっても確認しながら進めることができます。もちろん、Pythonを学んでからDjangoを学ぶべきではあります。
公式チュートリアルの項目は下記の通りです。
公式チュートリアル
- さぁ始めましょう
- Django の概要
- クイックインストールガイド
- はじめての Django アプリ作成、その 1
- はじめての Django アプリ作成、その2
- はじめての Django アプリ作成、その 3
- はじめての Django アプリ作成、その 4
- はじめての Django アプリ作成、その 5
- はじめての Django アプリ作成、その 6
- はじめての Django アプリ作成、その 7
- はじめてのDjangoアプリ作成、その8
- 高度なチュートリアル: 再利用可能アプリの書き方
カリキュラムで学べること
公式チュートリアルで学べることを7つまとめてみます。
もちろん下記以外にも学べることはたくさんありますが、今回のチュートリアルを通じて、初めて学んだことや学びが深まったことをまとめています。
- Djangoでの環境構築方法
- Djangoでのアプリの作り方
- データベースの利用方法
- Django Adminの扱い方
- Userの作成方法からAdmin画面でのコンテンツの追加方法、Admin画面の表示項目の変更などを学ぶことができます。
- URLルーティングのハンドリング方法
- TemplatesファイルやViewファイルの作り方
- 実際にユーザーが目にするhtmlファイルのベースファイルを作成して各htmlファイルへの反映したり、Pythonの範囲になりますが、View s.pyの中ではユーザーの動きにあわせて、例外処理を設定します。
- 基本的なテストの方法
- パート5では自動テストについて取り上げられています。
- 自動テストがなぜ必要なのか、テストの方針など、言語が変わっても使える基本的なことから、テストの作成方法の説明、viewのテストなどを学ぶことができます。
学んだこと
カリキュラムで学べることに関しては7つをまとめてみましたが、一方でカリキュラムを通じて学んだことをまとめてみると以下の3つになります。
シンプルでありつつ、必要な機能を備えたWebアプリケーションの構築とテストの方法
Web投票フォームはシンプルではありますが、機能としてはフォームやビューページを実装します。
また、Admin画面で管理したい項目を表示させたり、サードパーティ製のパッケージをインストールすることで、より活用できる環境を整えることができました。
また、Webアプリケーションの自動テストについて学んだことも個人的にはとても良かったと感じています。バグの発生しないプログラムはないと思うので、バグの修正ができることは単に開発することよりも大事だと考えられるためです。
DjangoのMTV
Djangoを理解するにはMTV (Model-Template-View) の関係性の理解が不可欠です。
公式チュートリアルではMTVを順に作成していきますので、一連の流れの中でそれぞれの役割と関係性について理解を深めることができます。とはいえ、図解されているわけではないため、個人的には自分で図解してみると理解が深まると感じています。

基本的なWeb開発の概念
Web開発に必要なことを一通り学ぶことができます。
つまり、クライアントサーバーモデルであったりデータベース操作、URLルーティング、テンプレートとレンダリングなどです。
Djangoに限らず、Web開発における基本的な概念ということができます。Djangoだけでなく他の言語やフレームワークを利用する際も多少の違いはあるにせよ、知識としては活かせると思います。
難しかったこと
翻訳が若干わかりにくい
機械的に訳されているので仕方ない部分もありますが、日本語版だけでは理解するのが難しく感じる箇所が私にはありました。(個人差があると思います。)
例えばPart6(その6)の下記のような記述です。
静的ファイルの名前空間
テンプレートと同じように、静的ファイルを直接 polls/static` に置くこともできますが(別の polls サブディレクトリを作るのではなく)、実際には良くない考えです。
Django は最初に見つけた静的ファイルの中から名前が一致するものを選んでしまいます。
Django に正しいものを指し示す必要がありますが、それを確実にするための最良の方法は、それらを namespacing することです。
つまり、静的ファイルをアプリケーション自身の名前を付けたディレクトリの中に置くのです。
静的ファイルの名前空間と言われても、なんのことか私はわかりませんでした。
ちなみに、英語バージョンだと下記になります。
Static file namespacing Just like templates, we might be able to get away with putting our static files directly in polls/static (rather than creating another polls subdirectory), but it would actually be a bad idea. Django will choose the first static file it finds whose name matches, and if you had a static file with the same name in a different application, Django would be unable to distinguish between them. We need to be able to point Django at the right one, and the best way to ensure this is by namespacing them. That is, by putting those static files inside another directory named for the application itself.
namespacing がタイトルでは名前空間となっていて、本文中では英語のまま表記されているという言葉の訳し方もあります。加えて、and if you had a static file with the same name in a different application, Django would be unable to distinguish between them. の一文が抜けてしまっていることで、最初に見つけられるようにすればいいのではないか?という誤解をしてしまう可能性も考えられます。
英語バージョン自体もそこまで難しい単語は出ていてないので、日本語バージョンと英語バージョンを読み比べながら進めると良さそうだと感じました。
終わりに
ここまでPythonのフレームワークの1つであるDjangoについて、Djangoの公式チュートリアルを通じて学んできました。
やはり全体的な構成を自分で図解できるようになるところまで学ぶと難しさも実感できますが、フレームワークの便利さも理解できます。
今後も日々少しずつでも学んで前進していきたいと思います。