日記

日々のことと、Python/Django/PHP/Laravel/nodejs などソフトウェア開発のことを書き綴ります

Djangoにかじりつく。

前準備

駆け足にPythonの基礎的なことを書いたので、今日は Djangoに。
インストールとかは書くのが面倒なので、セットアップはここを参照してください。良く書かれていると思います。

Djangoのアプリケーションを作るときには、まずはプロジェクトを作ります。

python django-admin.py startproject sample-project

これでカレントディレクトリに "sample-project" というディレクトリが作られるはずです。

設定について

設定はプロジェクトディレクトリ直下にできる settings.pyに定義します。
データベースやHTMLテンプレートファイルの場所、プロジェクト内で動作するアプリケーションの設定などができます。

アプリケーションを作る

次にプロジェクトのディレクトリに入って、アプリケーションを作ります。

python manage.py startapp app1

これを実行すると "app1" というディレクトリが作られ、その中には以下のファイルが作られます。

  • models.py
  • (urls.py)
  • views.py

Djangoでは、主にこの三つのファイルを編集して、アプリケーション開発を進めます。
このファイルたちのそれぞれの役割について解説していきます。

models.py

データベースのテーブルと1対1で結びつくモデルクラスを定義します。このファイル名は、基本的に決め打ちなので他のファイルに書いてもDjango側ではモデルであるということを認識しません。どうしても他のファイルにモデルを定義したいときには、Pythonのimportをうまく使って定義するとよさそうです。

urls.py

ブラウザがアクセスしてくるURLとViewの関数を結びつけます。要はURLのルーティングを管理しています。これもファイル名が決まっています。これをカッコつきで書いたのは、プロジェクトディレクトリにあるurls.py(こちらが大元になるルートのファイル)から参照するような形になるためです。
これは追々説明をしていきます。

views.py

Viewを定義するファイルです。JavaプログラマがViewと聞くと、JSPやVelocityを思い浮かべがちですが、Djangoの世界でのViewはコントローラに当たります。つまりServlet。関数の引数も当然、HttpRequestを受け取るような形で引数を定義します。

アプリケーションを追加する

アプリケーションは作っただけでは、プロジェクト側では認識してくれません。
どうすればよいかと言うと、settings.pyのINSTALLED_APPSに追記が必要です。

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'app1',
)

これを書かないと、せっかくモデルを書いても manage.py のサブコマンドがアプリケーションを認識できないため、モデルを扱えなかったりします。設定を忘れないようにしてください。

明日はちょろっと動くプログラムを解説する予定です。
そして、明日書いたら、三日坊主はクリアです。