Что может вызвать ошибку Django, когда debug = False, которого нет там, где debug = True

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

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

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

Ответ 1

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

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

Ответ 2

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

...
ALLOWED_HOSTS = '*'
...

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

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

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

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

благодаря gertvdijk для указания этого

Ответ 3

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

Ответ 4

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

Я также проверил для циклического импорта, но это было не так.

Наконец, я создал django файл журнала, fooobar.com/info/26810/...

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

по какой-то причине это не вызвало ошибки с Debug True OR False.