【Python で Web 開発入門】〜 Django でプロジェクト開始編〜

何の記事??

python の webアプリケーションフレームワークである Django を使ってプロジェクトを開始するところまで紹介します。


Django のインストール

まずは、Django が既に入っているかもしれないので確認しましょう。下記コマンドで確認ができます。

django-admin --version

これでバージョンが出てくれば既に Django がインストールされているのでこの節は飛ばしてくださいね。

バージョンが出てこない方は下のコマンドを打ってくださいね。

pip install django

以上でインストールは完了です!!


プロジェクトの作成

それではプロジェクトを作成してみましょう。
Django のコマンドを使うと、プロジェクトに必要な SQLite だったり view, RequestMapping だったりを作成してくれます。
Rails でいうところの rails new が一番イメージ近いかと思います。 

django-admin startproject hoge

hoge には作成したいプロジェクトの名前を入れてください。

さて、正常終了していれば hoge というフォルダができており、その配下に manage.py と hoge ができているかと思います。
manage.py はプロジェクトの管理・操作するための python プログラムです。自動的に生成され、基本的にはいじることのないファイルです。

そこまで確認ができればプロジェクトの作成は完了です!!


いざ実行!!!

それでは早速実行してみましょう。

おそらく下記のようなメッセージが表示されるかと思いますが、後ほど「マイグレーションの実行」で説明をしますので一旦気にしないでおいてください。

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.


Django には開発用の Webサーバが含まれています。このサーバを使用してサービスを起動してみましょう。
manage.py のあるディレクトリに移動して、下記のコマンドを実行してみてください。

python manage.py runserver 8080

December 04, 2018 - 15:43:17
Django version 1.11.17, using settings 'microblog.settings'
Starting development server at http://127.0.0.1:8080/
Quit the server with CONTROL-C.

それではブラウザから localhost:8080 にアクセスしてみましょう。
「It worked!!」と出ていたりタブタイトルが「Welcome to Django」になっていれば起動成功です!!

runserver の後の 8080 は Webサーバが通信に使用するポート番号です。

それではサービスを止めましょう。
止め方は、コンソール(ターミナル)で Ctrl + C です。
(ちなみに止めなくてもプログラムを変更すると再起動してくれるので止めなくても問題はありません)


自動生成されるファイル

それではここで簡単に django-admin startproject で自動作成されたファイルをいくつか紹介します。

まずは __init__.py です。
このファイルは、モジュールをインポートした時に実行されます。この仕組みを使うと、__init__.py が存在して入ればそのディレクトリはモジュールとして扱えるということです。
つまり今回プロジェクト自体が python のモジュールとして実現されているということですね。

次に settings.py です。
プロジェクトの設定ファイルです。名前のまんまですね。

url.py は、サイト内の URL マッピング設定を格納しています。

wsgi.py は、WSGI(Web Server Gateway Interface)を使ったデプロイを行うためのものです。


アプリケーションの作成

次に先ほど作成したプロジェクトにアプリケーションを作りましょう。

Django ではプロジェクトとアプリケーションは完全に独立しているということを頭に入れておいてください。
つまり、複数のアプリケーションをプロジェクト内に配置することも可能になっています。

それでは下記コマンドでアプリケーションを作成しましょう。

python manage.py startapp appName

無事に終了しましたか?
指定したアプリの名前でディレクトリができているかと思います。


マイグレーションを実行

先ほど一旦飛ばしてくださいと言った 

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.

これですね。
解決していきます。

エラーにある通り migration(マイグレーション)が行われていないために吐かれています。

Django アプリは、初回の登録時とアプリが使用するモデルを変更した時に、マイグレーションと呼ばれる操作をしなければなりません。
マイグレーションは、モデルの内容を DB に反映する管理操作です。

それでは migration をしてみましょう。

 

python manage.py migrate

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying sessions.0001_initial... OK

こんな感じで正常終了すれば OK です!

さて先ほどから DB と言っていますが・・・DB なんて用意する説明なかったじゃないか!!とお思いの方、、、
Django では、サーバー不要の DB 管理システムである SQLite が含まれています。

プロジェクト生成後の設定ファイルでは SQLite を使用するように設定されています。
SQLite のデータは db.sqlite3 に格納されています。


Django の管理ユーザの作成

Django には admin というサイト管理機能が備わっています。
それでは早速ユーザを作成してみましょう。

 python manage.py createsuperuser

 

ユーザ名やアドレス、パスワードが尋ねられるので会話するように回答してください。

 

素直に答えていけば問題なく作成されるはずです。

 

それではまたプロジェクトを起動したら http://localhost:8080/admin にアクセスすると管理画面に遷移ができます。


最後に

Django のプロジェクト開始部分まで見ていきました。
また機会があれば続きを書いていきたいと思います。

それではまた次回〜