Open3

Django×Herokuでポートフォリオサイトをデプロイした時に参考にした記事をまとめる

ともとも

https://zenn.dev/hathle/books/django-portfolio-book
ポートフォリオサイト作成で参考にさせてもらいました。購入済み。

https://qiita.com/ekzemplaro/items/41d39d398287774b9f1e

https://zenn.dev/treefield/articles/f6e8b879387d02

デプロイ自体は上記の2記事を参照しました。しかし500エラーが出まくるのでした…

問題の一つは、migrate→createsuperuserができないことでした。
DBをherokuからadd-onしてからmigrateしなくてはいけなかったのですが、(buildの際のコードをきちんと読まなかったので、 heroku-postgresql がプロビジョニングされていないことに気づくのが遅くなった。ちゃんと読みます)参照した記事には自動的に heroku-postgresql がプロビジョニングされるとの記載もあり、なぜ自動でプロビジョニングされなかったのかは今のところ不明です。申し込んでいるプランによったりするのだろうか…?

ともとも

これでも500エラーだったのですが、最終的にsettings.pyを

(前略)
if not DEBUG:
    SECRET_KEY = os.environ['SECRET_KEY']
    django_on_heroku.settings(locals())
    # アカウントの設定
    AWS_ACCESS_KEY_ID = os.environ['AWS_ACCESS_KEY_ID']
    AWS_SECRET_ACCESS_KEY = os.environ['AWS_SECRET_ACCESS_KEY_ID']
    AWS_STORAGE_BUCKET_NAME = os.environ['AWS_STORAGE_BUCKET_NAME']

    # 静的ファイルの設定
    AWS_LOCATION = 'static/'
    STATICFILES_STORAGE = 'storages.backends.s3boto3.S3StaticStorage'
    AWS_QUERYSTRING_AUTH = False
    S3_URL = 'http://tk-portfolio-storage.s3.amazonaws.com/'
    MEDIA_URL = S3_URL

    AWS_S3_FILE_OVERWRITE = False
    AWS_DEFAULT_ACL = None

    # S3へファイルをアップロードするための設定
    DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

    db_from_env = dj_database_url.config()
    DATABASES['default'].update(db_from_env)

という順番(django_on_heroku.settings(locals())を前に持ってきた)にしたところ、すべての静的ファイルが正常に読み込まれました。