Что может вызвать ошибку 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.