Heroku にデプロイする設定をしていきます。

requirements.txt

すでにある requirements.txt をコピーして、requirements-dev.txt を作成します。

requirements-dev.txt にdj-database-urldj-staticpython-decoupleを新たに追加します。

requirements-dev.txt

Django~=3.2.6
dj-database-url==0.5.0
dj-static==0.0.6
python-decouple==3.3

requirements.txt は下記のように修正します。

herokuの環境でインストールされます。

requirements.txt

-r requirements-dev.txt
gunicorn
psycopg2

Procfile

Procfileファイルを新しく作成します。

mysiteはご自身のプロジェクト名に変更してください。

Procfile

web: gunicorn mysite.wsgi --log-file -

runtime.txt

runtime.txtファイルを新しく作成します。

runtime.txt

python-3.8.7

wsgi.py

プロジェクトフォルダのwsgi.pyを修正します。

Clingをimportして、下記のように修正します。

wsgi.py

import os
from dj_static import Cling
from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')

application = Cling(get_wsgi_application())

settings.py

settings.pyを修正します。

ALLOWED_HOSTSは、一旦すべてのホストを許可しておきます。

セキュリティ上、ホストは特定した方がいいので、ご自身で変更してください。

settings.py

# 追加
from decouple import config
from dj_database_url import parse as dburl

# 変更
ALLOWED_HOSTS = ['*']

# 追加
default_dburl = 'sqlite:///' + str(BASE_DIR / "db.sqlite3")

# 変更
DATABASES = {
    'default': config('DATABASE_URL', default=default_dburl, cast=dburl),
}

STATIC_URL = '/static/'
# 追加
STATIC_ROOT = str(BASE_DIR / 'staticfiles')

動作確認

herokuにデプロイする前に動作確認をします。

requirements-dev.txtに追加したライブラリをインストールします。

$ pip3 install -r requirements-dev.txt

runserverでサーバーを起動して画面を確認します。

$ python3 manage.py runserver

問題なければ、デプロイ作業に入っていきます。