「燃えるゴミは月曜日」

テクノロジー、趣味、雑談、etc... 基本的に備忘録として運営してます。

Python,Djangoを使ってWebアプリを開発する #1 -導入編-


Django(ジャンゴ)を使ってWebアプリを作ります。はじめに · Django Girls Tutorialに沿って進めていきます。
今回は「仮想環境にDjangoを導入し、ローカル環境でサーバを起動し、ブラウザにページを表示させる」ことが目標です。

Djangoとは

Pythonを利用したWebアプリケーションフレームワーク*1。無料で公開されている。
Djangoってなに? · Django Girls Tutorial

環境

  • macOS Mojave (10.14.6)
  • 仮想環境: conda (4.8.3) もしくは venv
  • Python (3.7.3)
  • Django (3.0.3)

前提条件

  • Pythonが扱える(*ver 3.3以上でvenvが使えます)
  • Anacondaがインストールされている(なければAnaconda - python.jp参照) (仮想環境にvenvを使う場合はいらないです)

作業手順

1. 仮想環境の準備とDjangoのインストール

まずは作業するディレクトリを mkdir ディレクトリ名 コマンドで新たに作ります。作成したら、 cd コマンドで作成したディレクトリに移りましょう。以後、ここで作成したディレクトリで作業をしていきます。

$ mkdir myproject
$ cd myproject

次に仮想環境を準備していきます。conda(Anaconda)もしくはvenvを使って仮想環境を整え、Djangoをインストールしましょう。

condaを使う場合
ターミナルを開き、 conda create -n 任意の環境名 Pythonの実行環境を作成します。コマンド実行途中に確認が出るので[Enter]キーを押すと、仮想環境が作成できます。

$ conda create -n py37
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##
  environment location: /Users/XXX/anaconda3/envs/py37
...(省略)...
Proceed ([y]/n)? [Enter]
...(省略)...
# To activate this environment, use
#     $ conda activate py37
# To deactivate an active environment, use
#     $ conda deactivate

$

続けて、 source activate 環境名 を実行することで、仮想環境が起動できます。
(*仮想環境から抜けるには、 conda deactivate を実行します。)

$ source activate py37
(py37)$ 

次に、 conda install django を実行し、Djangoに必要なパッケージをインストールします。こちらもコマンド実行途中に確認が出るので[Enter]キーを押してください。

(py37)$ conda install django
Collecting package metadata (current_repodata.json): done
Solving environment: done

...(省略)...
Proceed ([y]/n)? [Enter]

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
(py37)$ 

condaでの操作は以上です。

▶︎ venvを使う場合
ターミナルを開き、 python3 -m venv 任意の環境名 を実行し、Pythonの仮想環境を作成します。

$ python3 -m venv py37
$

作成が完了したら、カレントディレクトリに、指定した任意の環境名のディレクトリが生成されます。
続けて、 source 環境名/bin/activate を実行すると、仮想環境が起動できます。

$ source py37/bin/activate
(py37)$ 

次に、 python -m pip install --upgrade pip を実行し、Djangoをインストールするためのpipを最新バージョンにします。

(py37)$ python -m pip install --upgrade pip
Collecting pip
...(省略)...
Successfully installed pip-20.1.1
(py37)$

次に、インストールする依存関係の一覧を記載する requirements.txt ファイルを作成します。ファイル内容は Django~=3.0.3 と記述します。(echoコマンドによってファイルを作成しています。)

(py37)$ echo "Django~=3.0.3" >> requirements.txt
(py37)$

最後に、 pip install -r requirements.txt を実行し、Djangoに必要なパッケージをインストールします。

(py37)$ pip install -r requirements.txt 
Collecting Django~=3.0.3
...(省略)...
Successfully installed Django-3.0.3 asgiref-3.2.10 pytz-2020.1 sqlparse-0.3.1
(py37)$

venvでの操作は以上です。

インストールが完了したら、condaまたはvenvの仮想環境でDjangoが使えるようになります。

2. Djangoを使ってページを表示させる

仮想環境内でDjangoが使えるようになったので、プロジェクトを生成しましょう。
ターミナル上で仮想環境を起動し、 django-admin startproject プロジェクト名 . を実行することで、プロジェクトのファイルが作成されます。カレントディレクトリを確認すると、manage.pyとプロジェクト名のディレクトリが作成されていることが確認できます。

(py37)$ django-admin startproject mywebapp .
(py37)$ ls
manage.py	mywebapp
(py37)$ 

階層構造は以下のようになります。

myproject
├─ manage.py
└─ mywebapp
    ├─ __init__.py
    ├─ asgi.py
    ├─ settings.py
    ├─ urls.py
    └─ wsgi.py

続いてターミナル上で、 python manage.py runserver を実行すると、サーバが起動されます。

(py37)$ python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 17 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.

July 03, 2020 - 09:20:38
Django version 3.0.3, using settings 'mywebapp.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

ターミナルに表示されているURL(http://127.0.0.1:8000/)にブラウザでアクセスします。

f:id:H473N4:20200703183005p:plain
ページの表示

サーバを正常に起動できていると、上の画像のようにDjangoで用意されたWebページが表示されます。今回はこれで目標達成です。
ターミナルで動いているサーバは、[control]+[c]を入力することで停止できます。

まとめ

今回はWebアプリケーションフレームワークであるDjangoを使って、ブラウザにページを表示させました。
以下に使用したコマンドをまとめておきます。

概要 コマンド
仮想環境の作成 conda create -n [envname] python=[version]
仮想環境の一覧 conda info -e
仮想環境の起動 source activate [envname]
仮想環境の停止 conda deactivate
パッケージ追加 conda install [package]
プロジェクト作成 django-admin startproject [projectname]
サーバ起動 python manage.py runserver

次回は、アプリケーションの設定や自作ページの表示方法を説明しようと思います。
おもしろいWebアプリが作れるといいですね :)

*1:Webアプリの土台となり、開発の手助けをしてくれる便利なツール