Railway.app не может найти статические файлы после развертывания приложения django

Я пытаюсь развернуть свое приложение на Railway.app. Приложение в целом работает, но статические файлы не найдены. Я создал папку collectstatic с помощью команды django manage.py collectstatic, как советуют в руководствах по развертыванию, но это не помогает. Подскажите, что могло пойти не так?

settings.py

STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),]
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

папка staticfiles находится в директории, содержащей файл menage.py

развернуть журналы из railway.apps

Not Found: /staticfiles/style.css
Not Found: /staticfiles/base.css
Not Found: /staticfiles/MyImage.png
Not Found: /staticfiles/base.js

У меня была похожая проблема, я думаю, что это связано с Railway App, в итоге я использовал Cloudinary для хранения моих статических файлов

pip install django-cloudinary-storage

После этого добавьте cloudinary и cloudinary_storage к установленным приложениям в файле settings.py. Если вы собираетесь использовать этот пакет для статических и/или медиа файлов, убедитесь, что cloudinary_storage находится перед django.contrib.staticfiles:

INSTALLED_APPS = [
    # ...
    'cloudinary_storage',
    'django.contrib.staticfiles',
    'cloudinary',
    # ...
]

Далее необходимо добавить учетные данные Cloudinary в settings.py:

CLOUDINARY_STORAGE = {
    'CLOUD_NAME': 'your_cloud_name',
    'API_KEY': 'your_api_key',
    'API_SECRET': 'your_api_secret'
}

Затем запустить

python manage.py collectstatic --noinput

WhiteNoise работает для меня:

pip install whitenoise

В вашем settigs.py:

INSTALLED_APPS = [
    'django.contrib.staticfiles',
    'whitenoise.runserver_nostatic',    
]

MIDDLEWARE = [
    "django.middleware.security.SecurityMiddleware",
    "whitenoise.middleware.WhiteNoiseMiddleware",
]

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILES_STORAGE="whitenoise.storage.CompressedManifestStaticFilesStorage"

если вы используете общую проверку .gitignore и убедитесь, что ваш статический файл передается в ваше репо, альтернатива - найти способ изменить скрипт по умолчанию, который railway запускает при развертывании, и заставить его выполнять createstatic

Вернуться на верх