Webフレームワークは各言語にいろいろありますね、RubyだったらRoR(RubyOnRails)、PHPだったらLaravelなどなど。。PythonではDjangoとFlaskが有名ですね、フレームワークを使うことでデータベースとの接続やURLのハンドリング、画面表示の実装などを行いやすい環境を準備してくれます。Pythonでは最近機械学習などが人気ですが、Webなどでその結果を表示する場合は当然言語が同じDjangoなどが採用されるケースは多いでしょう。とまぁそんなわけで今回はこれから人気がもっと高まるかもしれないDjangoについてインストールと抑えておきたいフォルダの説明をします!
インストールの手順
今回は次のような手順でインストールをしていきます。
- Pythonのバージョン確認
- pipのバーション確認
- 仮想環境の作成
- resuirements.txtの作成
- Djangoのインストール
- ローカルサーバーの立ち上げ(動作確認)
仮想環境とrequirements.txtでインストールする理由はずばりチーム開発を想定してパッケージの管理をしやすくするためです。インストールや開発に仮想環境の構築は必須ではありませんが、チーム開発をする場合や、後々自分がコードを見返した際に使用しているパッケージとバージョンを確認しやすいです。
今回の記事で使用したコード全体はcode-databaseのgithubリポジトリに上げてあるので、手元で確認したい方は参考にしてみてください。また、最終的に作成するフォルダのディレクトリ構成は以下のようになります。
事前準備
本記事は以下のことができることを前提としています。
- Pythonのインストールとパスの設定
python --version
やpython3 --version
などのコマンドが使用できれば大丈夫です。 - pipのインストール
pip --version
のコマンドが使用できれば大丈夫です。
また、OSはMacOSを想定しています。
インストールしてみよう
それでは実際にインストールしましょう。手順は先ほど紹介したステップでやっていきます。
Pythonのバージョン確認
まずはPythonのバージョンを確認しましょう。
python --version
またはpython3 --version
のコマンドで以下のような出力で確認します。
Python 3.7.7
上のようにPythonのバージョンが3.4であることを確認してください。本記事はvenvというPythonの3.4バージョン以降に標準実装された機能を用いて仮想環境を構築するためです。
pipのバーション確認
次にPythonのパッケージ管理を行うpipのバージョンを確認します。
pip --version
やpip3 --version
のコマンドでバージョンを確認します。
pip 20.0.2
念の為最新バージョンにしておいた方がいいでしょう。
仮想環境の作成
続いて仮想環境を作成します。まずは仮想環境を作成するディレクトリを作成してそのディレクトリに移動しましょう。
(ターミナル)
$ mkdir python_install $ cd python_install
そして、venvで仮想環境を作成します。以下のようなコマンドで仮想環境を作成することができます。-mオプションはその後に続くモジュール(今回であればvenv)を実行するためのものです。
$ python -m venv (作成する仮想環境の名前) (仮想環境を作成する場所のパス)
作成する場所のパスに関しては指定しなければ今いるディレクトリに作成してくれます。今回は作成したディレクトリに仮想環境を作成するので以下のようなコマンドになります。
$ python -m venv myvenv
以下のようなディレクトリが作成されれば完了です。
django_install/ └ myvenv/ └ local/ ├ bin/ ├ include/ └ lib/
仮想環境は以下のようにsource
コマンドで立ち上げることができます。
$ source myvenv/bin/activate
binのフォルダ内にあるactivateを実行して立ち上げます。仮想環境を立ち上げると以下のようにターミナルで立ち上げている仮想環境が表示されます。
(一例)
仮想環境を終了する場合はdeactivate
コマンドを用います。
$ deactivate
以降の内容は仮想環境を立ち上げた状態で行っていきましょう。
requirements.txtの作成
続いてpipでのインストールに用いるrequirements.txtファイルを作成していきます。.txtファイルを用いたpipのインストールはチームで共有することで必要なPythonパッケージを一括で入れることができるので非常に便利です(JavaScriptのnpm管理でのpackage.jsonのようなものです)。
はじめに作成したディレクトリの直下にrequirements.txtという名前のtxtファイルを作成し、そこにインストールするパッケージを記載します。txtファイルの名前はなんでも良いですが、requirements.txtという名前が通例みたいです。
(requirements.txt)
Django==3.0.5
今回はDjangoのみをインストールするので一行のみですが、他のいろいろなパッケージを入れる場合は改行して羅列していきましょう。また、今回Djangoのバージョン3.0を使用していますが、ここはお好きなバージョンでも大丈夫です。ただし、Djangoのサポートは古いものからなくなっていくのでバージョン2.2以降をインストールするのがおすすめです(参考:Djangoのサポートに関する情報 https://www.djangoproject.com/download/)。
Djangoのインストール
先ほど作成したrequirements.txtファイルを使ってDjangoをインストールしましょう。以下のコマンドでインストールできます。
$ pip install -r requirements.txt
インストールが完了したらpip freezeコマンドでインストールされているパッケージを確認しましょう(pip listコマンドも使えます)。
$ pip freeze asgiref==3.2.7 Django==3.0.5 pytz==2020.1 sqlparse==0.3.1
Djangoがインストールされていれば大丈夫です。
Djangoでプロジェクトを立ち上げる
Djangoがインストールできたらプロジェクトを立ち上げて必要なファイルを用意しましょう。以下のコマンドで行うことができます。
$ django-admin startproject (作成するアプリ名)
今回はsample_siteという名前のアプリを立ち上げます。
$ django-admin startproject sample_site
sample_siteというディレクトリができていれば大丈夫です。これでアプリの立ち上げに必要なファイルが整いました。
ローカルサーバーの立ち上げ(動作確認)
最後にローカルサーバーを立ち上げてアプリの動作確認をしましょう。
manage.pyというファイルがあるsample_siteディレクトリに移動しましょう。
$ cd sample_site
基本的にサーバーの立ち上げやデータベースのmigrateなどはこのディレクトリでmanage.pyを用いて行います。
Djangoではdjango-adminコマンドでプロジェクトを立ち上げることでデータベースをみたり操作したりするadmin画面がデフォルトで作成されています。ですので、まずはじめにadminの表示に必要なデータベースをmigrateしましょう。
$ 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 admin.0003_logentry_add_action_flag_choices... 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 auth.0009_alter_user_last_name_max_length... OK Applying auth.0010_alter_group_name_max_length... OK Applying auth.0011_update_proxy_permissions... OK Applying sessions.0001_initial... OK
デフォルトではインストール不要のSQLite3がデータベースとして利用されています。これはデータベース一つにつき.sqlite3ファイルを作成する形でデータを管理するものです。したがって、adminに必要なデータがdb.sqlite3というファイルによって作成されていることが確認できると思います。
ここまでできたらローカルサーバーを立ち上げて確認してみましょう。
$ python manage.py runserver
この状態でhttp://127.0.0.1:8000/にアクセスして以下のような画面が表示されていたら成功です。
また先ほどデフォルトでadmin画面があると言いましたがadmin画面にはhttp://127.0.0.1:8000/adminでアクセスすることができます。すると以下のような画面が出てくると思います。
しかしユーザーネームもパスワードも作成していませんね。なのでこれを以下のコマンドで作ります。
$ python manage.py createsuperuser
名前やらパスワードを聞かれるので入力しましょう(パスワードが単純すぎると怒られますが作成できます)。
そしてこの状態で再びサーバを立ち上げてadmin画面で先ほど指定したユーザーネームとパスワードを入力しましょう。すると以下のようにadmin画面に入れると思います。
まだ初期設定にある二つのデータしか見ることができませんが、自分で作成したテーブルなどをここで閲覧、編集することができます。これで動作確認は終了です。
フォルダの説明
最後にdjango-adminコマンドで作成されたフォルダの中身について重要な部分について説明したいと思います。まず、作成されたファイルとフォルダは以下のようになっているはずです。
django_install/ ├ myvenv/ ├ sample_site/ │ ├ db.sqlite3 │ ├ manage.py │ └ sample_site/ │ ├ __pycache__/ │ ├ __init__.py │ ├ asgi.py │ ├ settings.py │ ├ urls.py │ └ wsgi.py └ requirements.txt
このうちのdjango_install/sample_siteのディレクトリのファイルについては先ほどざっくり説明したので、django_install/sample_site/sample_siteディレクトリのファイル(ディレクトリ)について説明します。
__pycache__/ | キャッシュが保存されるディレクトリ(基本的に何もいじらない) |
__init__.py | ディレクトリがあることを示すためのファイル(ディレクトリ内で初期化したいこと(ライブラリのimportなど)がある意外にはいじらない) |
asgi.py | asgiに関する設定を行うファイル(asgiでのデプロイ時のみファイルをいじる) |
settings.py | アプリケーションの設定(データベースの指定などのオプション)をするファイル |
urls.py | リクエストがきたURLに対するハンドラを記述するファイル |
wsgi.py | wsgiに関する設定を行うファイル(wsgiでのデプロイ時のみファイルをいじる) |
基本的にurls.pyとsettings.py以外はあまり内容を変更することはありません。ですが、何をしているファイルなのかを把握することは何かの役に立つでしょう。きっと。
この記事のまとめ
本記事では仮想環境でDjangoのインストールを行う方法について紹介しました。最後に記事の要点についてまとめておきます。
- pythonでは仮想環境を用いることでpythonのバージョンやライブラリを開発するアプリ独自で指定することができる
- txtファイルを用いたパッケージのインストールを行うことでパッケージ管理が容易になる
- Djangoでアプリの基盤を準備してくれる
皆さんもDjangoで開発してみましょう!