🐍 Django-разработчикам: `DEBUG=True` в проде опаснее, чем кажется.
Это не просто красивые страницы ошибок. При включённом DEBUG приложение может раскрывать stack trace, настройки, пути файлов, middleware, URL-паттерны и другие детали окружения.
Главная рекомендация - fail closed:
То есть по умолчанию DEBUG всегда выключен, а включается только локально.
Даже staging, QA и preview-среды, доступные из интернета, лучше запускать с
Отдельная ловушка - переменные окружения:
Здесь
Лучше явно парсить boolean или использовать
Мелкая настройка, которая однажды может спасти production от очень неприятной утечки.
https://lincolnloop.com/blog/setting-djangos-debug-safely/
#Python #Django #Backend #Security #DevOps
Это не просто красивые страницы ошибок. При включённом DEBUG приложение может раскрывать stack trace, настройки, пути файлов, middleware, URL-паттерны и другие детали окружения.
Главная рекомендация - fail closed:
DEBUG = False
То есть по умолчанию DEBUG всегда выключен, а включается только локально.
Даже staging, QA и preview-среды, доступные из интернета, лучше запускать с
DEBUG=False.Отдельная ловушка - переменные окружения:
DEBUG = os.environ.get("DEBUG", "False") != "False"
Здесь
DEBUG=false или DEBUG=0 могут неожиданно превратиться в True.Лучше явно парсить boolean или использовать
django-environ.Мелкая настройка, которая однажды может спасти production от очень неприятной утечки.
https://lincolnloop.com/blog/setting-djangos-debug-safely/
#Python #Django #Backend #Security #DevOps
❤6👍6🔥1😁1🎉1🤩1
🐍 В Python у
Выглядит непривычно:
Блок
Но есть важный нюанс. Если внутри сработает
Из-за этого
Например, цикл пытается найти нужное значение. Если нашёл, делает
Синтаксис существует в Python давно, но до сих пор выглядит как маленькая пасхалка языка.
#Python #Programming #Backend #PythonTips
while есть else. И многие разработчики узнают об этом спустя годыВыглядит непривычно:
number = 0
while number < 5:
print(number)
number += 1
else:
print("Цикл завершился")
Блок
else выполнится, если цикл закончился естественно, то есть условие while стало ложным.Но есть важный нюанс. Если внутри сработает
break, else уже не выполнится.
number = 0
while number < 5:
if number == 3:
break
number += 1
else:
print("Сюда не попадём")
Из-за этого
while...else удобно использовать там, где нужно отличить нормальное завершение поиска от досрочного выхода.Например, цикл пытается найти нужное значение. Если нашёл, делает
break. Если дошёл до конца без успеха, срабатывает else.Синтаксис существует в Python давно, но до сих пор выглядит как маленькая пасхалка языка.
#Python #Programming #Backend #PythonTips
❤16👍8🔥5😱4🎉2