Почему установка DEBUG = False приводит к сбою доступа к моим статическим файлам в django? - PullRequest
304 голосов
/ 29 апреля 2011

Я создаю приложение, используя Django в качестве моей рабочей лошадки.До сих пор все было хорошо - заданные настройки БД, настроенные статические каталоги, URL-адреса, представления и т. Д. Но проблемы начали красться в тот момент, когда я захотел отрисовать свои собственные красивые 404.html и 500.html страницы.

Я прочитал документы по пользовательской обработке ошибок и установил необходимые конфигурации в UrlsConf, создал соответствующие представления и добавил 404.html и 500.html в каталог шаблонов моего приложения (также указанный в settings.py).

Но в документах написано you can actually view custom error views until Debug is Off, поэтому я отключил его, чтобы протестировать свои вещи, и вот тут все приходит в бешенство!

Мало того, что я не могу просмотреть пользовательский 404.html (на самом деле, этозагружается, но так как каждая из моих страниц с ошибками содержит графическое сообщение об ошибке (как хорошее изображение), источник страницы с ошибкой загружается, но больше ничего не загружается!Даже не связанный CSS или Javascript!

Как правило, после установки DEBUG = False загружаются все представления, но любой связанный контент (CSS, Javascript, Изображения и т. Д.) Не загружается!Что происходит?Чего-то не хватает в отношении статических файлов и настройки DEBUG?

Ответы [ 12 ]

0 голосов
/ 29 октября 2016

Хотя это не самый безопасный, но вы можете изменить в исходном коде.перейдите к Python/2.7/site-packages/django/conf/urls/static.py

Затем отредактируйте следующим образом:

if settings.DEBUG or (prefix and '://' in prefix):

Итак, если settings.debug==False, это не повлияет на код, также после запуска попытайтесь python manage.py runserver --runserver запустить staticфайлы.

ПРИМЕЧАНИЕ : информация должна использоваться только для тестирования

0 голосов
/ 20 января 2016

Поддержка аргументов строкового представления для url () устарела и будет удалена в Django 1.10

Мое решение - просто небольшая поправка к решению Конрадо выше.

from django.conf import settings
import os
from django.views.static import serve as staticserve

if settings.DEBUG404:
    urlpatterns += patterns('',
        (r'^static/(?P<path>.*)$', staticserve,
            {'document_root': os.path.join(os.path.dirname(__file__), 'static')} ),
        )
...