Djangoのプロジェクトを仮想環境で作るの概要
注意 ※バージョンや環境によっては正常に動作しない可能性があります。
Pipenvで作ったPythonの仮想環境にDjangoをインストールし、最低限のプロジェクトを作る記事です。
プロジェクトを作った時に最初に作られるファイルと、そのファイルを何に使うのかをメモっておきます。
Pythonがインストールされていること、PipenvでPythonの仮想環境が作られていることを、前提として進めていきます。
OSはwindows10です。どこにでもある普通のパソコンで、Djangoの勉強ができる仮想環境を作ることが目的です。
- 「pipenv install django」でdjangoをインストール
- バージョン指定の場合はdjango==3.1.1とする
- 「django-admin startproject プロジェクト名」でプロジェクト作成
- 「python manage.py runserver」で開発サーバーが起動
- 「python manage.py startapp アプリ名」でアプリケーション作成
Djangoを仮想環境にインストールする
「pipenv install django」コマンドでインストールできます。
バージョンを指定する場合は「pipenv install django==3.1.1」になります。
C:\python_venv\test-site>pipenv install django Installing django… Adding django to Pipfile's [packages]… Installation Succeeded Pipfile.lock not found, creating… Locking [dev-packages] dependencies… Locking [packages] dependencies… Locking...Building requirements... Resolving dependencies... Success! Updated Pipfile.lock (a6086c)! Installing dependencies from Pipfile.lock (a6086c)… ================================ 0/0 - 00:00:00 To activate this project's virtualenv, run pipenv shell. Alternatively, run a command inside the virtualenv with pipenv run.
以下が、仮想環境でのpip listの実行結果です。Djangoがインストールされています。
(.venv) C:\python_venv\test-site>pip list Package Version ---------- ------- asgiref 3.2.10 Django 3.1.1 pip 20.1.1 pytz 2020.1 setuptools 49.2.1 sqlparse 0.3.1 wheel 0.34.2
pip、setuptools、wheelは、仮想環境にPythonをインストールしたときのものです。
そこに、Django、asgiref、pytz、sqlparseが追加されています。
これでDjangoの準備が整いました。
Djangoのプロジェクトを作る
Djangoのプロジェクトを作るのは簡単で、ターミナルからコマンドを入力するだけです。
この際に、ほんのちょっとの違いで、作られるフォルダ構成が変わります。
その時々で自分が必要な方法を選べばよいかと思います。
「.」をつけない
(.venv) C:\python_venv\test-site>django-admin startproject config test-site │ └─config │ ├── manage.py │ └── config ├── asgi.py ├── settings.py ├── urls.py ├── wsgi.py └── __init__.py
1つ目はコマンドで「django-admin startproject config」とすることです。
コマンドはdjango-admin startprojectの後に、作るプロジェクトの名前を入れます。今回はconfigという名前にしています。
すると、test-siteの中にconfigというファルダができ、その中にmanage.pyができます。
さらに、そのconfigフォルダ内に同名のconfigフォルダが作られ、その中に、djangoの基本的なファイルが作られます。
djangoのディレクトリはmanage.pyが入っているフォルダを「プロジェクト」と呼び、adgi.pyやsetting.pyが入っているフォルダを「設定ディレクトリ」と呼びます。
で、「.」をつけない形でコマンドを実行すると、プロジェクト名と同名で設定ディレクトリも作られるのです。
良く見るのが、作った後に設定ディレクトリの名前を変えるとかですが、設定ディレクトリの名前は作成したファイルの中に使われているため、変更する場合はそちらも書き換えないといけないのです。
なので、後述する「.」をつけて作ったほうが少し楽かな~と個人的には思います。
プロジェクトのフォルダもこのコマンドで作るよ、という時は「.」をつけない、という言い換えもできますね。
「.」をつける
(.venv) C:\python_venv\test-site>django-admin startproject config . test-site │ ├── manage.py │ └── config ├── asgi.py ├── settings.py ├── urls.py ├── wsgi.py └── __init__.py
2つ目は「django-admin startproject config .」とすることです。
コマンドの違いは違いは「.」をつけるかつけないかです。
作成されるディレクトリ構成か微妙に違いまして、こちらではtest-siteの直下にmanage.pyが作られます。
さらに、test-site内にconfigフォルダが作られ、その中に基本的なDjangoのファイルが作られます。
こちらの方法では、プロジェクトとなるフォルダはtest-siteになります。その中に設定ファイルのconfigがある、という形になります。
直感的にわかりやすいので、個人的にはこの方法が好きです。
この方法だと、手動でプロジェクトフォルダを作るので、プロジェクト名にハイフンや.が使えます。コマンドラインでハイフンなどは使えないので、そう言う場合にも有効な方法です。
「.」をつけるコマンドは、プロジェクトフォルダ内のファイルだけ作る、という言い換えもできるかと思います。
プロジェクトの起動
(.venv) C:\python_venv\test-site>python manage.py runserver
「python manage.py runserver」とすると、開発用のサーバーが起動します。
ブラウザでローカルホストに接続すると、以下のページが出てきます。
これで、プロジェクトが正常に動作していることがわかります。
setting.pyの文字コードをjaにすれば、日本語で表示されるようになります。
アプリケーションを作る
プロジェクトを作り、最低限の準備をしたので、次はそのプロジェクト内で動作するアプリを作ります。
「python manage.py startapp アプリ名」とコマンドを実行することで、アプリが作られます。
(.venv) C:\python_venv\test-site>python manage.py startapp top test-site │ ├── manage.py ├── db.sqlite3 │ ├── config │ ├── asgi.py │ ├── settings.py │ ├── urls.py │ ├── wsgi.py │ └── __init__.py │ └── top ├── admin.py ├── apps.py ├── models.py ├── tests.py ├── views.py ├── __init__.py │ └─migrations └── __init__.py
今回は「top」という名前でアプリを作りました。
topというフォルダが作成され、その中にファイルと、さらにmigrationsというフォルダが作成されます。あと、SQLite用のデータベースが作られています。
これがDjangoで作るアプリケーションの基本形になります。
config内でも動作するものを作ろうと思えば作れますが、管理がめんどくさいですし、流用できないので、各種のアプリを個別に作ることが一般的のようです。
このアプリケーションを動作させるためには、以下のようにsetting.pyにアプリケーションを登録する必要があります。
# Application definition INSTALLED_APPS = [ 'top.apps.TopConfig', #追加 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ]
とりあえず、このひな形を作るところまでがこの記事の内容になります。
まとめ
いくつかのサイトや本を読んだ時に、プロジェクトを作る場合の「.」についてあまり言及がなかったので、何が違うのか気になっていたのですが、作ってみたらわかりました。
またプロジェクト名、設定ディレクトリの名前についてですが、何かに限定されているわけではなく任意なようです。良く見るのがprojectとかconfigとかです。
とりあえず、これでDjangoでアプリを作るための最低限の準備ができた形です。
Djangoは有名なpythonのフレームワークです。InstagramがDjangoで開発された、というのは有名な話ですね~。
とりあえずDjangoが何なのかはわかっている前提で、プロジェクトを作るところを自分用にまとめておきました。
一回環境を作ってしまうと、再度作るときに細かい部分を忘れてしまったりするので。