проблема статического файла, вызывающая ошибку django 500? - PullRequest
0 голосов
/ 29 июня 2018

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

Я попытался запустить свой локальный сервер django сегодня после того, как ngbuild поместил мои файлы в назначенную папку,

работает python manage.py collectstatic

, который он успешно работает.

затем я запускаю свой сервер django, перехожу на мою страницу и получаю 500 ответов.

Поскольку я использую angular, я настроил свой сервер django в качестве бэкэнда для отдыха.

каждая конечная точка, которую использует служба rest, начинается с URL api /

so localdomain / api / <- restful service </p>

только локальный домен обслуживает угловое приложение.

Я получаю сообщение об ошибке 500, только когда пытаюсь запустить приложение.

Вот все мои настройки, касающиеся статических файлов:

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',

#angular distro root
ANGULAR_APP_DIR = os.path.join(BASE_DIR, 'frontend/dist/')
#image distro root
ASSETS_DIR = os.path.join(BASE_DIR, 'frontend/dist/assets/')


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/
#STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(ANGULAR_APP_DIR),
    os.path.join(ASSETS_DIR),

]

мои настройки шаблона:

ROOT_URLCONF = 'suitsandtables.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': ['suitsandtables/templates',
                 'stemail/templates'],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

мой URL для обслуживания статических файлов и мой URL для отображения страницы index.html

url(r'^(?!/?static/)(?!/?media/)(?P<path>.*\..*)$',
        RedirectView.as_view(url='/static/%(path)s', permanent=False)),
 url(r'^$', views.RootView.as_view()),

мой класс root для отображения index.html

class RootView(TemplateView):
    def get(self, request, **kwargs):
        return render(request, 'index.html', context = None)

1 Ответ

0 голосов
/ 29 июня 2018

Это обычная проблема с белым шумом. Я потратил бесчисленные часы на это. Вот как вы можете решить эту проблему.

поместите эти две строки в ваши settings.py

DEBUG = False
DEBUG_PROPAGATE_EXCEPTIONS = True

и попробуйте запустить приложение на героку. Он сломается, как всегда.

Теперь перейдите к

https://dashboard.heroku.com/apps/<app_name>/logs

Обычно вы не сможете видеть журналы, когда debug имеет значение False , но благодаря DEBUG_PROPAGATE_EXCEPTIONS = True вы можете видеть журналы

Там найдите файл, который белый шум не может найти, и сделайте белый шум бесполезным. В моем случае это был какой-то случайный файл CSS, который был ссылкой в ​​моем base.html .

Либо вы можете исправить его местоположение, либо просто удалить строку из base.html, которая ссылается на этот файл.

после этого, если проблема с другим файлом (ами), продолжайте делать это.

В конце концов, белый шум будет счастлив, как и вы.

...