Что может вызвать ошибку Django при отладке = False, чего нет при отладке = True - PullRequest
16 голосов
/ 11 февраля 2011

Используя сервер разработки, он работает с debug = True или False.

В работе все работает, если debug = True, но если debug = False, я получаю ошибку 500, и журналы apache заканчиваются наошибка импорта: «ImportError: невозможно импортировать имя Project».

Ничто в импорте не делает ничего условного при отладке - единственный код, который делает, должен ли сервер разработки обслуживать статические файлы или нет (в производстве, apacheдолжен справиться с этим - и это проверено отдельно и работает нормально).

Ответы [ 4 ]

76 голосов
/ 11 марта 2013

Просто скажу, что сегодня я столкнулся с подобной ошибкой, и это потому, что Django 1.5 требует в настройках параметр ALLOWED_HOSTS. Вам просто нужно разместить этот ряд, чтобы он работал;)

...
ALLOWED_HOSTS = '*'
...

Однако, имейте в виду , что вам нужно правильно установить этот параметр в соответствии с фактическими хостами (https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts)!

)

Значения в этом списке могут быть полностью определенными именами (например, «www.example.com»), и в этом случае они будут точно сопоставлены с заголовком Host запроса (без учета регистра, не включая порт). Значение, начинающееся с точки, можно использовать в качестве подстановочного знака субдомена: «.example.com» будет соответствовать example.com, www.example.com и любому другому субдомену example.com. Значение '*' будет соответствовать чему угодно; в этом случае вы несете ответственность за обеспечение собственной проверки заголовка хоста (возможно, в промежуточном программном обеспечении; если это так, это промежуточное программное обеспечение должно быть указано первым в MIDDLEWARE_CLASSES).

Так что, в принципе, вам лучше использовать этот тип конфигурации, когда вы находитесь в производстве:

...
ALLOWED_HOSTS = [
    '.yourdomain.com',
]
...

спасибо gertvdijk за указание на это

7 голосов
/ 12 февраля 2011

Это происходит, если у вас есть циклический импорт в один из ваших файлов. Проверьте и посмотрите, импортируете ли вы что-либо из Project, а затем импортируете что-то в Project из исходного файла, который изначально импортировал Project.

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

1 голос
/ 08 мая 2013

У меня тоже была эта проблема. Хотя это сохранялось даже при установке Allowed_hosts и уже имеющем 404 и 500 шаблонов.

Я также проверил круговой импорт, но это было не так.

Я наконец-то заставил django создать файл журнала, https://stackoverflow.com/a/15100463/1577916

Я случайно ушел в функцию "get_host", которая теперь существует в HttpRequest (изменен на HttpRequest.get_host ()) с Django 1.5.

по какой-то причине, которая не выдает ошибку с Debug True OR False.

1 голос
/ 17 августа 2012

Это также может произойти, если у вас нет шаблонов 500.html и 404.html.Только 500 недостаточно, даже для URI, которые не будут выдавать 404!

...