Djangonのチュートリアル

Djangoの構成

Djangoでは「プロジェクト」と「アプリケーション」という要素がります。
  • プロジェクト
    • DjangoのWebアプリ全体をさします。
  • アプリケーション
    • 機能や要素単位でまとめたものでプロジェクトは複数のアプリケーションを持ちます。
プロジェクトとアプリケーションの関係
1
Djangoプロジェクト
2
├── プロジェクト設定
3
├── アプリケーション1
4
├── アプリケーション2
5
:
6
└── アプリケーションxxx
Copied!
Djangoでは、アプリケーションごとに開発を進めていきます。
また、アプリケーションは疎結合(Loose coupling)という考えでアプリケーション間の依存は極力減らして開発をすることが推奨されてます。

プロジェクト構成

プロジェクトの作成は下記のコマンドで作成をします。 これがWebアプリのルートディレクトリとなります。
プロジェクト作成コマンド $ django-admin startproject <プロジェクト名> [<ディレクトリ>]
1
MacOSの場合
2
(env) $ django-admin startproject geodjango
3
(env) $ cd geodjango
4
5
Windowsの場合
6
(env) C:¥> python env\Scripts\django-admin.py startproject geodjango
7
(env) C:¥> cd geodjango
Copied!
Django標準のファイル構成
1
geodjango <-- プロジェクトのルート
2
├── manage.py <-- プロジェクトの管理用のスクリプト
3
└── geodjango <-- プロジェクト設定
4
├── __init__.py <-- Pythonの初期化処理パッケージファイル
5
├── settings.py <-- プロジェクトの設定ファイル
6
├── urls.py <-- プロジェクトのURLパターン設定ファイル
7
└── wsgi.py <-- プロジェクトのWSGI(ウィズギー)インターフェース設定ファイル
Copied!
Note
  • 「python manage.py help」と入力すれば管理コマンドのヘルプが表示されます。

設定変更

Webアプリの「言語」と「タイムゾーン」を自分の地域に設定します。 設定は設定ファイルの「geodjango/settings.py」を編集します。
(env) $ vi geodjango/settings.py
1
編集前
2
106: LANGUAGE_CODE = 'en-us'
3
107:
4
108: TIME_ZONE = 'UTC'
5
:
6
113:
7
114: USE_TZ = True
8
9
編集後
10
106: LANGUAGE_CODE = 'ja-JP'
11
107:
12
108: TIME_ZONE = 'Asia/Tokyo'
13
:
14
113:
15
114: USE_TZ = True
Copied!
Note:

データベースの設定

この現時点では、デフォルトのSQLiteデータベースで動作確認をします。 ENGINEの項目を変更することで、PostgreSQLやMySQLなどに他のデータベースに変更することが出来ます。
MacOSの場合で、SQLiteがインストールされて無い場合はbrewコマンドでイントールしてください。
1
(env) $ brew update
2
(env) $ brew install sqlite3
3
(env) $ sqlite3 -version
4
3.19.3 2017-06-27 16:48:08 2b0954060fe10d6de6d479287dd88890f1bef6cc1beca11bc6cdb79f72e2377b
Copied!
設定ファイル「geodjango/settings.py」でSQLiteデータベースの設定の確認をします。
$ vi geodjango/settings.py
1
DATABASES = {
2
'default': {
3
'ENGINE': 'django.db.backends.sqlite3',
4
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
5
}
6
}
Copied!
manage.py migrateコマンドを実行して、データベースにテーブルを作成します。
migrateコマンド $ python manage.py migrate
1
(env) $ python manage.py migrate
2
Operations to perform:
3
Apply all migrations: admin, auth, contenttypes, sessions
4
Running migrations:
5
Applying contenttypes.0001_initial... OK
6
Applying auth.0001_initial... OK
7
Applying admin.0001_initial... OK
8
Applying admin.0002_logentry_remove_auto_add... OK
9
Applying contenttypes.0002_remove_content_type_name... OK
10
Applying auth.0002_alter_permission_name_max_length... OK
11
Applying auth.0003_alter_user_email_max_length... OK
12
Applying auth.0004_alter_user_username_opts... OK
13
Applying auth.0005_alter_user_last_login_null... OK
14
Applying auth.0006_require_contenttypes_0002... OK
15
Applying auth.0007_alter_validators_add_error_messages... OK
16
Applying auth.0008_alter_user_username_max_length... OK
17
Applying auth.0009_alter_user_last_name_max_length... OK
18
Applying sessions.0001_initial... OK
19
20
(env) $ ls
21
db.sqlite3 geodjango/ manage.py
Copied!

Webアプリの動作確認

ここまで上手く出来ているかを確認します。
manage.pyのrunserverコマンドを実行することで、Djangoのサーバーを起動します。
Djangoのサーバー起動コマンド $ python manage.py runserver
1
Webアプリ起動
2
(env) $ python manage.py runserver
3
Performing system checks...
4
5
System check identified no issues (0 silenced).
6
June 12, 2018 - 16:54:28
7
Django version 2.0.6, using settings 'geodjango.settings'
8
Starting development server at http://127.0.0.1:8000/
9
Quit the server with CTRL-BREAK.
10
[12/Jun/2018 16:54:37] "GET / HTTP/1.1" 200 16510
11
[12/Jun/2018 16:54:37] "GET /static/admin/css/fonts.css HTTP/1.1" 200 423
12
[12/Jun/2018 16:54:37] "GET /static/admin/fonts/Roboto-Regular-webfont.woff HTTP/1.1" 200 80304
13
[12/Jun/2018 16:54:37] "GET /static/admin/fonts/Roboto-Bold-webfont.woff HTTP/1.1" 200 82564
14
[12/Jun/2018 16:54:37] "GET /static/admin/fonts/Roboto-Light-webfont.woff HTTP/1.1" 200 81348
15
Not Found: /favicon.ico
16
[12/Jun/2018 16:54:38] "GET /favicon.ico HTTP/1.1" 404 1975
Copied!
ブラウザからURL: http://127.0.0.1:8000/ にアクセスをします。 上手く作成できていれば、下記の画面が表示されます。
停止する時は、CTRL+C(コントロールとCボタンを同時に押す)です。 Windowsの場合は、Ctrl+Breakで停止することがあります。

管理画面

管理画面にログイン権限のある管理ユーザのアカウントを作成します。 Webアプリ起動されていたら、CTRL+Cで一旦止めます
管理ユーザのアカウント $ python manage.py createsuperuser
1
(env) $ python manage.py createsuperuser
2
Username (leave blank to use 'homata'): admin
3
Email address: [email protected]
4
Password: xxxxxx
5
Password (again): xxxxxx
6
Superuser created successfully.
7
8
Webアプリを再起動します
9
(env) $ python manage.py runserver
Copied!
Webアプリ起動後、http://127.0.0.1:8000/admin にアクセスして作成したアカウントでログインして確認します。
ログイン画面が表示されたら作成したアカウントとパスワードを入力します。
ログイン後、 管理画面が表示されれば管理画面は正常に動作しています。