Ошибка развертывания приложения Cookiecutter- Django в Heroku - PullRequest
0 голосов
/ 21 апреля 2020

Я работаю с Django шаблоном Cookiecutter, используя Docker. Все отлично работает локально, поэтому теперь я пытаюсь развернуть приложение в Heroku, следуя этому руководству: Развертывание в Heroku . Я использую Django 3 и остальные рамки. Docker для разработки.

После запуска команд конфигурации я отправляю sh мастеру Heroku и получаю эту ошибку:

Error while running '$ python manage.py collectstatic --noinput'.

Вот след:

remote: -----> $ python manage.py collectstatic --noinput
remote:        Traceback (most recent call last):
remote:          File "/app/.heroku/python/lib/python3.7/site-packages/environ/environ.py", line 273, in get_value
remote:            value = self.ENVIRON[var]
remote:          File "/app/.heroku/python/lib/python3.7/os.py", line 679, in __getitem__
remote:            raise KeyError(key) from None
remote:        KeyError: 'SENDGRID_API_KEY'
remote:        During handling of the above exception, another exception occurred:
remote:        Traceback (most recent call last):
remote:          File "manage.py", line 31, in <module>
remote:            execute_from_command_line(sys.argv)
remote:          File "/app/.heroku/python/lib/python3.7/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
remote:            utility.execute()
remote:          File "/app/.heroku/python/lib/python3.7/site-packages/django/core/management/__init__.py", line 395, in execute
remote:            self.fetch_command(subcommand).run_from_argv(self.argv)
remote:          File "/app/.heroku/python/lib/python3.7/site-packages/django/core/management/__init__.py", line 231, in fetch_command
remote:            settings.INSTALLED_APPS
remote:          File "/app/.heroku/python/lib/python3.7/site-packages/django/conf/__init__.py", line 76, in __getattr__
remote:            self._setup(name)
remote:          File "/app/.heroku/python/lib/python3.7/site-packages/django/conf/__init__.py", line 63, in _setup
remote:            self._wrapped = Settings(settings_module)
remote:          File "/app/.heroku/python/lib/python3.7/site-packages/django/conf/__init__.py", line 142, in __init__
remote:            mod = importlib.import_module(self.SETTINGS_MODULE)
remote:          File "/app/.heroku/python/lib/python3.7/importlib/__init__.py", line 127, in import_module
remote:            return _bootstrap._gcd_import(name[level:], package, level)
remote:          File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
remote:          File "<frozen importlib._bootstrap>", line 983, in _find_and_load
remote:          File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
remote:          File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
remote:          File "<frozen importlib._bootstrap_external>", line 728, in exec_module
remote:          File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
remote:          File "/tmp/build_027dd19e3113d3ba2634e63f0f93e673/config/settings/production.py", line 128, in <module>
remote:            "SENDGRID_API_KEY": env("SENDGRID_API_KEY"),
remote:          File "/app/.heroku/python/lib/python3.7/site-packages/environ/environ.py", line 123, in __call__
remote:            return self.get_value(var, cast=cast, default=default, parse_default=parse_default)
remote:          File "/app/.heroku/python/lib/python3.7/site-packages/environ/environ.py", line 277, in get_value
remote:            raise ImproperlyConfigured(error_msg)
remote:        django.core.exceptions.ImproperlyConfigured: Set the SENDGRID_API_KEY environment variable

Под ошибкой я получаю сообщение об отключении сбора данных c с помощью этой команды:

$ heroku config:set DISABLE_COLLECTSTATIC=1

Я запускаю команду выше и продолжаю, но следующая команда не работает, потому что Heroku может ' t найти файл manage.py

heroku run python manage.py createsuperuser

Я искал в Интернете различные руководства по развертыванию, но похоже, что развертывание приложения Django в Heroku не так просто, как в Rails.

1 Ответ

1 голос
/ 22 апреля 2020

Ошибка говорит о том, что в приложении отсутствует переменная среды SENDGRID_API_KEY. Это звучит как ошибка документации, если у вас есть минутка, я был бы признателен, если бы вы могли сообщить об этом .

По сути, в Deployment for Heroku предполагается, что вы используете Mailgun в качестве службы электронной почты, поскольку он просит вас выполнить:

heroku addons:create mailgun:starter

Однако вы, похоже, выбрали Sendgrid, который опция, которая была введена недавно (см. PR # 2435 ), но эта страница не обновлялась соответствующим образом.

Чтобы решить вашу проблему, вам нужно добавить Sendgrid add- на в вашем приложении. После добавления из Heroku вы сможете щелкнуть надстройку, чтобы получить доступ к панели мониторинга Sendgrid, где вам необходимо создать ключ API согласно этому руководству и добавить его в конфигурационные файлы приложения Heroku, следуя этому руководству .

...