Asosiy kontentga o‘tish

Maqolalar

Darslik · 2026-08-14 · ~2 daqiqa o‘qiladi · boshlang'ich

Django sozlamalarini .env bilan boshqarish: to‘g‘ri yo‘l

#django #backend #security

Mundarija

Django loyihalarida eng ko‘p uchraydigan xatolardan biri — settings.py ichida maxfiy qiymatlarning ochiq turishi: SECRET_KEY, ma'lumotlar bazasi paroli, API kalitlar. Bu kod git'ga tushadi, git esa ertami-kechmi GitHub'ga chiqadi — va parolingiz tarixda abadiy qoladi.

To‘g‘ri yondashuv: konfiguratsiya kodda emas, muhitda yashaydi (The Twelve-Factor App'ning 3-printsipi). Django'da buni django-environ bilan qilamiz.

O‘rnatish#

uv add django-environ

Loyiha ildizida .env fayl (va uni albatta .gitignore'ga qo‘shing):

SECRET_KEY=juda-maxfiy-kalit
DATABASE_URL=postgres://app:app@localhost:5432/app
ALLOWED_HOSTS=example.uz,www.example.uz

Jamoa uchun esa .env.example — qiymatlarsiz shablon — git'da qoladi.

settings.py'da o‘qish#

import environ

env = environ.Env()
environ.Env.read_env(BASE_DIR / ".env")

SECRET_KEY = env("SECRET_KEY")
DEBUG = env.bool("DEBUG", default=False)
ALLOWED_HOSTS = env.list("ALLOWED_HOSTS", default=[])
DATABASES = {"default": env.db("DATABASE_URL")}

E'tibor bering: SECRET_KEYda default yo‘q — u topilmasa loyiha yiqilishi kerak. Maxfiy qiymat uchun jimgina default ishlatish — kelajakdagi incident.

Settings'ni bo‘lish#

Bitta settings.py o‘rniga uchta fayl:

config/settings/
├── base.py   # umumiy sozlamalar
├── dev.py    # DEBUG=True, dev qulayliklari
└── prod.py   # xavfsizlik: HSTS, secure cookies, SSL redirect

dev.py va prod.pyfrom .base import * bilan boshlanadi va faqat farqni yozadi. Qaysi biri ishlashini DJANGO_SETTINGS_MODULE muhit o‘zgaruvchisi hal qiladi: lokalda config.settings.dev, serverda config.settings.prod.

Nega bu xavfsizlik masalasi#

  • .env git'da yo‘q — parollar tarixga tushmaydi
  • Prod sozlamalari (HSTS, SECURE_SSL_REDIRECT, secure cookies) alohida faylda — dev qulayligi uchun ularni "vaqtincha o‘chirish" vasvasasi yo‘qoladi
  • Kalit almashtirish deploy'siz: .env yangilanadi, servis restart bo‘ladi

Oddiy ko‘ringan bu tartib — loyihangiz o‘sganda eng arzon sug‘urta.