Heroku загрузить статическую папку не найден - PullRequest
0 голосов
/ 28 октября 2019

Я пытался воспроизвести учебное приложение Django и загрузить его на сервер Heroku, но не могу решить проблемы со статическими файлами.

Вот ссылка на все файлы на github: https://github.com/Rufus90/poll.git

Когда я пытаюсь запустить heroku, запустите python manage.py collectstatic --noinput

Я получаю эту ошибку:

Running python manage.py collectstatic --noinput on ⬢ hidden-plains-30510... up, run.1265 (Free)
Traceback (most recent call last):
  File "manage.py", line 21, in <module>
    main()
  File "manage.py", line 17, in main
    execute_from_command_line(sys.argv)
  File "/app/.heroku/python/lib/python3.7/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "/app/.heroku/python/lib/python3.7/site-packages/django/core/management/__init__.py", line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/app/.heroku/python/lib/python3.7/site-packages/django/core/management/base.py", line 323, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/app/.heroku/python/lib/python3.7/site-packages/django/core/management/base.py", line 364, in execute
    output = self.handle(*args, **options)
  File "/app/.heroku/python/lib/python3.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 188, in handle
    collected = self.collect()
  File "/app/.heroku/python/lib/python3.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 105, in collect
    for path, storage in finder.list(self.ignore_patterns):
  File "/app/.heroku/python/lib/python3.7/site-packages/django/contrib/staticfiles/finders.py", line 131, in list
    for path in utils.get_files(storage, ignore_patterns):
  File "/app/.heroku/python/lib/python3.7/site-packages/django/contrib/staticfiles/utils.py", line 23, in get_files
    directories, files = storage.listdir(location)
  File "/app/.heroku/python/lib/python3.7/site-packages/django/core/files/storage.py", line 315, in listdir
    for entry in os.scandir(path):
FileNotFoundError: [Errno 2] No such file or directory: '/app/static'

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

Может кто-нибудь объяснить, что я сделал не так? Помимо копирования папки и переименования ее ..

1 Ответ

0 голосов
/ 28 октября 2019

Согласно документации heroku , вам нужно создать этот каталог /app/static внутри базы кода, чтобы он был доступен при запуске collectstatic. Вот что упоминалось в документации:

Django не будет автоматически создавать целевой каталог (STATIC_ROOT), который использует collectstatic, если он недоступен. Вам может понадобиться создать этот каталог в вашей кодовой базе, чтобы он был доступен при запуске collectstatic. Git не поддерживает пустые каталоги файлов, поэтому вам придется создать файл и внутри этого каталога.

В качестве альтернативы вы можете использовать whitenoise в heroku. Так как django не обслуживает статические файлы в производственном режиме (когда вы устанавливаете DEBUG=False в настройках), здесь whitenoise становится удобным. Может обслуживать статические файлы в производственном режиме. Также легко интегрировать его в проект django.

Сначала установите его, используя pip install whitenoise.

Затем добавьте WhiteNoiseMiddleware в settings.py:

MIDDLEWARE_CLASSES = (
    # Simplified static file serving.
    # https://warehouse.python.org/project/whitenoise/
    'whitenoise.middleware.WhiteNoiseMiddleware',
    ...

Наконец, если вы хотите использовать GZIP-хранилище для статических файлов, поместите в файл settings.py следующую строку:

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

Более подробную информацию о белесовости можно найти здесь .

...