LoginSignup
8
21

More than 5 years have passed since last update.

【Python】Djangoアプリケーションの作成と初期設定 / 2017年10月

Last updated at Posted at 2017-10-18

はじめに

スクレイピングで取得したデータを用いて、ログイン画面、レゴデータの管理、欲しいものリストの作成、更新ができるアプリケーションを作成しました。

「Djangoインストール~初期設定作成完了まで」を4節程度に分けて学習メモやエラーメモとして残して置こうと思います。

1節目の今回は「Djangoアプリケーションの構成、インストール、初期設定など」について記述します。
記述ミスなどがあれば編集依頼をいただけると幸いです..!

While editing...
--> 「Djangoのリクエスト処理の流れ(ビュー、テンプレート、ルーティング)(2)」
--> 「DjangoのモデルとCRUD機能提供管理サイト(3)」 
--> 「レゴ管理アプリケーションの作成(4)」

環境

MacbookPro Sierra 10.12.6
Python 3.6.3
Django 1.11.6

Djangoアプリケーションの構成(インストール)

はじめに、アプリケーションを開発するための環境を準備します。venvを利用して仮想環境を構築してDjangoをインストール!

$ python3.6 -m venv env
$ . env/bin/activate
(env) $ pip install Django==1.11.6

コマンドを入力して、Djangoが正常にインストールされているかを確認します。

(env) $ python -m django --version
1.11.6

これでDjangoのインストールは完了です。

蛇足ですが、私が初めてDjangoを入れようとした頃は色んなエラーが出てハマった記憶があります。原因は「xcodeのCLTがN/A」でしたが、当時のエラーメッセージはその旨が直接的には記載していないし情報が少なかった気がします。しかも「xcode -V」でバージョン確認できていたしiOSアプリ開発で最新のものを使用していたので恥ずかしながら気付きにくかったです。DjangoCLTエラー記事は全然なかったのでそのうち書こうと思います。

プロジェクトとアプリケーション

Djangoを用いてWebアプリケーションを開発する場合は、プロジェクトとアプリケーションと呼ばれる要素を作成して開発を進めます。
プロジェクトはDjangoのWebアプリケーション全体を表し、「全体設定、DB設定、CLT、その他」が含まれます。
アプリケーションは、具体的な機能を提供するWebアプリケーションになります。

参考:
Djangoアプリケーションの単位
Django Best Practiceへの道

プロジェクトの作成

Djangoをインストールするとdjango-adminコマンドが使用できるようになります。

プロジェクトやアプリケーションの作成、開発サーバーの起動などにdjango-adminコマンドや後述するmanage.pyコマンドを利用します。

プロジェクト作成コマンド:
django-admin startproject <プロジェクト名>

今回はプロジェクト名を「brickset_app」で作成します。

(env) $ django-admin startproject brickset_app

上記でプロジェクトに必要なファイルが生成されました。

因みに、(env)brickset_app $ tree -L 1 で確認してみるとこのようなツリーになっています。
.
|-- brickset_app
`-- manage.py

brickset_appの中には、
_int__.py
settings.py
urls.py
wsgi.py
が入っています。

プロジェクトの構成

ファイル(ディレクトリ) 役割
brickset_app(外側) プロジェクトを格納するためのディレクトリ
brickset_app(内側) brickset_appのパッケージ本体
_int__.py Pythonパッケージであることを知らせるためのファイル
settings.py プロジェクト全体の設定ファイル
urls.py ルーティングの設定を記載するファイル
wsgi.py WSGI用のファイル
manage.py Djangoのコマンドラインツール

以上でプロジェクトの作成は完了です。

もし、

(env) $ django-admin startproject brickset_app

CommandError: [Errno 13] Permission denied: '/brickset_app'

のエラーが出たときは、「sudo django-admin startproject brickset_app」で解決できます。

ディレクトリを作る権限が無いというだけのようですので、pipのインストール時にsudoを付けて管理者権限で実行した方が無難かと存じます。

開発サーバーの起動

作成したプロジェクトが正常に動作するかを確認します。
開発サーバーの起動には manage.py の runserver コマンドを使用します。

(env) $ cd brickset_app
(enc) $ python manage.py runserver

開発サーバーの起動に成功すると、

Performing system checks...

System check identified no issues (0 silenced).

You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

October 17, 2017 - 12:02:35
Django version 1.11.6, using settings 'brickset_app.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

http://127.0.0.1:8000/ に遷移してみると、
スクリーンショット 2017-10-17 21.08.38.png
のDjango初期画面が表示されれば成功です。

開発サーバーを停止するには ctl + c です。
これでDjangoアプリケーションの動作確認は完了です。

因みに、

django.db.utils.OperationalError: unable to open database file

のエラーが出たときは、また「sudo python manage.py runserver」で通ります。




プロジェクトの初期設定

プロジェクト作成が完了したので、開発を始める前にプロジェクト全体の初期設定を行います 。

プロジェクトの日本語化

デフォルトはDjango初期画面は英語で表示されていますが、プロジェクトの設定ファイル(brickset_app/settings.py)の言語コードとタイムゾーンを下記のように変更して日本語化できます。

LANGUAGE = 'Ja'
TIME_ZONE = 'Asia/Tokyo'

データベースの設定

次にプロジェクトで使用するデータベースの設定確認ですが、こちらもプロジェクトの設定ファイル(brickset_app/settings.py)に記載されています。
DjangoのデフォルトではSQLite3を使用する設定になっています。
MySQL、PostgreSQL、Oracleなどの他データベースを使用する場合は、追加の設定及びインストールが必要です。
Django + MySQLでの設定
今回はSQLite3なので特にいじらないです。

管理用テーブルの作成

Djangoではユーザー管理、セッション管理、管理サイトなどの機能が独立したアプリケーションとして提供されています。

設定ファイル内の INSTALLED_APPS にプロジェクトで有効にするアプリケーションを追加します。

デフォルトでは

アプリケーション 役割
django.contrib.admin 管理サイト
django.contrib.auth 認証管理
django.contrib.contenttypes コンテンツタイプ
django.contrib.sessions セッション管理
django.contrib.messages メッセージ管理
django.contrib.staticfiles 静的ファイル管理

が入っていますが、これらのアプリケーションを利用するためにはアプリケーション用のテーブルが必要です。

Djangoではマイグレーション機能を利用してテーブル作成や変更を行います。

テーブルを作成するには、manega.pyのmigrateコマンドを実行します。コマンドを実行すると、コンソールに次のような情報が表示されて、デフォルトで有効になっているアプリケーションに必要なテーブルが作成されます。

(env) $ python manage.py migrate
Operations to perform:
   Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
   Applying contenttyoes.001_initial...OK
   ...

以上でプロジェクトの初期設定は完了です。

アプリケーションの実行

プロジェクトの作成と初期設定が完了したので、アプリケーションの設定をします。このアプリケーションではレゴデータの一覧機能、編集機能などを実装していきます。
アプリケーションを作成するには、python manage.py startapp <アプリケーション名> のように指定してコマンドを実行します。

(env) $ python manage.py startapp item

コマンドを実行するとプロジェクト内にitemディレクトリが生成されます。

(env) :brickset_app y$ ls
brickset_app db.sqlite3 item manage.py

(env) :brickset_app y$ tree -L 1
.
|-- brickset_app
|-- db.sqlite3
|-- item
`-- manage.py

ファイル(ディレクトリ) 役割
item itemアプリケーションのパッケージ用ディレクトリ
_int__.py Pythonパッケージであることを知らせるためのファイル
admin.py 管理サイトの設定を記載するファイル
apps.py アプリケーションの構成情報を記載するファイル
migrations マイグレーション用スクリプトを格納するディレクトリ
models.py モデルを記載するファイル
tests.py テストを記載するファイル
views.py byu-を記載するファイル

以上でアプリケーションの作成は完了です。

アプリケーションの登録

アプリケーションを作成すると、item/apps.py内にアプリケーションの構成クラスである ItemConfig クラスが作成されます。これはアプリケーション名を元に作成され、アプリケーションの構成情報を格納しています。

アプリケーションをプロジェクト内で有効にするには、設定ファイル内の INSTALLED_APPS に、 ItemConfig クラスを追加します。

brickset_app/settings.py
# Application definition

INSTALLED_APPS = [
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',
   'item.apps.ItemConfig',   #追加だよ!
]

以上でアプリケーションの登録及び、初期設定は完了です。

まとめ

本節ではDjangoアプリケーションの構成について記述しました。

また、Djangoのインストールを行い、プロジェクトとアプリケーションを作成し、初期設定を行いました。

次節はビュー、テンプレート、ルーティングについて記述予定です。

While editing...
--> 「Djangoのリクエスト処理の流れ(ビュー、テンプレート、ルーティング)(2)」
--> 「DjangoのモデルとCRUD機能提供管理サイト(3)」 
--> 「レゴ管理アプリケーションの作成(4)」

8
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
21