2008-09-23 1 views
5

Я готов к развертыванию своего приложения Django, и я заметил, что когда я меняю настройку «DEBUG» на False, все ссылки на статические файлы (то есть на JavaScript, CSS и т. Д.) Приводят к ошибкам HTTP 500.Почему Django генерирует ошибки HTTP 500 для статических носителей, если для параметра «Отладка» установлено значение «Ложь»?

Любая идея, что вызывает эту проблему (и как ее исправить)?

ответ

12

Я бы очень рекомендовал разрешить веб-серверу обрабатывать статические запросы, не доходя до Django. В моем urls.py я добавляю только статический обработчик запросов, когда для отладки установлено значение Истина.

Технически, Django, обслуживающий статические работы, отлично работает. Определенно прочитайте страницу коротких документов, http://docs.djangoproject.com/en/dev/howto/static-files/. Вы хотите использовать такую ​​запись в urls.py

(r'^static/(?P<path>.*)$', 'django.views.static.serve', 
    {'document_root': '/path/to/media'}) 
+0

Ha. Это может помочь, если я посмотрю на свои собственные urls.py. У меня есть все настройки. Фу ... это был долгий цикл развития. :) – Huuuze 2008-09-23 16:20:52

6

Это звучит, как вы, возможно, пытается служить статичные носители, используя сервер разработки Django. Взгляните на http://docs.djangoproject.com/en/dev/howto/deployment/ для некоторых сценариев развертывания/howtos и http://docs.djangoproject.com/en/dev/howto/static-files/ для обслуживания статических файлов (но обратите внимание на отказ от использования этих методов в процессе производства).

В общем, я бы посмотрел журналы вашего сервера и посмотрел, откуда он пытается извлечь файлы. Я подозреваю, что 500 ошибок - это действительно 404 ошибки, но они становятся 500 ошибками, потому что Django не может найти или отобразить шаблон 404.html. Если это не так, было бы полезно, если бы вы могли опубликовать конкретную ошибку 500, которую вы получаете.

0

Вы также должны проверять свои URL-адреса повсюду. Если для DEBUG установлено значение False, все URL-адреса без трейлинга «/» рассматриваются как ошибка, в отличие от того, когда у вас есть DEBUG = True, и в этом случае Django добавит «/» везде, где он отсутствует. Короче говоря, убедитесь, что все ссылки заканчиваются косой чертой.

0

Оказывается, я прокомментировал переменную SECRET_KEY. Однако мне не удалось понять. Просто пришлось попробовать все.

Смежные вопросы