安心・健康・痩せる方法

アンヘルシープログラマーの備忘録

Django入門その後に(2)〜プロジェクトとアプリケーションを作ろう〜

ここから先は声優情報ポータルサイトを作ることを実例にして進めていこうと思います。

まずはプロジェクトとアプリケーションを作りましょう。

1.そもそもプロジェクトとかアプリケーションって何?

この疑問に対しては公式からの回答があります。
はじめての Django アプリ作成、その 1 | Django documentation | Django

プロジェクトとアプリケーション プロジェクトとアプリケーションの違いとは何でしょうか?アプリケーションとは、実際に何らかの処理を行う Web アプリケーションを指します。例えばブログシステムや公開レコードのデータベース、単純な投票アプリといった具合です。プロジェクトとは、あるウェブサイト向けに設定とアプリケーションを集めたものです。一つのプロジェクトには複数のアプリケーションを入れられ ます。また、一つのアプリケーションは複数のプロジェクトで使えます。

イメージ的にはこんな感じじゃないでしょうか?

プロジェクトとアプリケーション
f:id:darakunomiti:20170503160016j:plain

ざっくり理解したところで次に進みましょう。

2.Djangoのプロジェクトを作ろう

以下のコマンドでプロジェクトが作れます。

書き方: $ django-admin.py startproject [好きなプロジェクト名]
実例: $ django-admin.py startproject seiyuu_info

プロジェクト名は小文字で単語をアンダースコアで繋ぐのが一般的です。

seiyuu_infoフォルダが作られます。 これはプロジェクトを管理するフォルダです。

 manage.py:  超大事だけど直すことはないので気にしない
└── seiyuu_info: フォルダ。プロジェクト名と同じ名前が付く
    ├── __init__.py: 各フォルダにはとりあえずこいつが必要ぐらいの認識でOK
    ├── settings.py: 色々な設定をここに書きます。超大事です。結構直します
    ├── urls.py: 大事です。直します。
    └── wsgi.py: とりあえず気にしない。

3.アプリケーションを追加しよう

書き方: $ python manage.py startapp [アプリケーション名]
実例: $ python manage.py startapp info

ここでは先ほど作ったseiyuu_infoプロジェクトの中にあった manage.pyを叩いてます。
manage.py 呼ぶ処理名 引数Djangoの機能を呼び出しているんですね。

これでinfoというアプリケーションができました。
名前についてはできれば単語一つ、プロジェクト名のように小文字のアンダースコア繋ぎが一般的です。[要出典]

アプリケーションを追加したことでinfoフォルダが増えました。中身を見てみましょう。

│   ├── __init__.py
│   ├── admin.py: データベースの中身を参照したり、更新したりできます。すごいです
│   ├── apps.py: とりあえず今はまだ気にしなくて良いです。django1.8からの機能です。
│   ├── migrations: データベースの変更に関するファイルを持ってます。後で説明します。
│   │   └── __init__.py
│   ├── models.py: データベースの設計を書きます
│   ├── tests.py: 余裕があったら書きます
│   └── views.py: 超大事です。詳しく説明します
├── manage.py
└── seiyuu_info
               省略

4.プロジェクトにアプリケーションを教えて上げよう

Djangoのプロジェクトのsettinngs.pyにinfoアプリを追加します。
settinngs.pyは時々直すので設定関係は全部ここぐらいの認識で良いんじゃないでしょうか?
seiyuu_infoプロジェクトにinfoアプリケーションを使うことを教えます。

seiyuu_info/seiyuu_info/settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'info'  # 追加したアプリケーション ←ここを追加
]

これでDjangoのseiyuu_infoプロジェクトとinfoアプリケーションができました。

次はDjangoのMTVモデルについて簡単に説明しようと思います

Django入門その後に(3)〜MTVモデルって何ですか? 難しいですか? 教えてもらって良いですか?〜 - 脱職エントリー

おまけ

アプリケーションの命名規則などについては気になる人はこちらのブログをご参照ください。

ottati.hatenablog.com