Как отладить django статических файлов, подаваемых с белыми, ружьями и герою? - PullRequest
1 голос
/ 10 апреля 2020

У меня есть проект, который работает на Heroku из Dockerfile и heroku.yml.

Сайт, как правило, работает, но у меня возникают проблемы с файлами * stati c.

collectstatic запускается при сборке пакета.

Если я установил DEBUG в True, он находит файлы.

Я пытаюсь использовать белый шум, но не уверен, почему это не работает. Это звучит так просто, поэтому я уверен, что это что-то глупое.

heroku.yml

setup:
    addons:
        - plan: heroku-postgresql
build:
    docker:
        web: Dockerfile
release:
    image: web
    command:
        - python manage.py collectstatic --noinput
run:
    web: gunicorn records_project.wsgi

settings.py

MIDDLEWARE = [
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.contrib.sites.middleware.CurrentSiteMiddleware',
]
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'whitenoise.runserver_nostatic',
    'django.contrib.staticfiles',
    'django.contrib.sites',
    ... more stuff here...
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.0/howto/static-files/

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
# for referencing files with a URL
STATIC_URL = '/static/'
# where to find static files when local
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),]
# location of satatic files for production
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
# how Django should look for static file directories; below is default
STATICFILES_FINDERS = [
    # defaults
    "django.contrib.staticfiles.finders.FileSystemFinder",
    "django.contrib.staticfiles.finders.AppDirectoriesFinder",
]
# This gives me a 500 error
# STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

urls .py

urlpatterns here...
...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020

У меня была похожая проблема, потому что при запуске отсутствовали файлы stati c, собранные на стадии выпуска Поэтому я изменил свой код на:

heroku.yml

setup:
  addons:
    - plan: heroku-postgresql
build:
  docker:
    web: Dockerfile
release:
  image: web
  command:
    - chmod u+x entrypoint_heroku.sh
run:
  web: ./entrypoint_heroku.sh

Dockerfile

FROM python:3.7

WORKDIR /usr/src/app

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

RUN apt-get update
RUN apt install -y netcat

RUN pip install pipenv
COPY Pipfile* /usr/src/app/
RUN pipenv install --system --dev

COPY . /usr/src/app/

RUN mkdir -p /storage/static/

entrypoint_heroku. sh

#!/bin/sh
python manage.py migrate --noinput
python manage.py collectstatic --noinput
gunicorn app.wsgi

settings.py

STATIC_URL = '/static/'
MEDIA_ROOT = '/storage/'
STATIC_ROOT = MEDIA_ROOT + 'static/'
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

Не лучшее решение. Но это помогло мне запустить сервер с Debug = False

0 голосов
/ 11 апреля 2020

Есть ли вероятность, что вы ссылаетесь на файл stati c (например, файл CSS или изображение) в вашем шаблоне, который не существует? У меня была такая же проблема, потому что у меня было следующее в базовом шаблоне:

<link rel="stylesheet" href="{% static 'css/styles.css' %}"> 

Но нет стилей. css файл в моей папке css.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...