آشنایی کامل با Django Settings: پیکربندی، مدیریت محیط، و بهترین شیوه‌ها

این مقاله یک راهنمای جامع دربارهٔ سیستم تنظیمات در Django ارائه می‌دهد. موضوعاتی مانند ساختار فایل تنظیمات، نحوهٔ تعیین DJANGO_SETTINGS_MODULE، استفاده از settings در کد، امنیت، پیکربندی دستی با configure()، استفادهٔ مستقل از Django با django.setup() و ایجاد تنظیمات سفارشی بررسی می‌شوند.

تنظیمات جنگو، Django settingsDJANGO_SETTINGS_MODULE، settings.configuredjango.setup، global_settings، پیکربندی جنگو

~3 دقیقه مطالعه · آخرین به‌روزرسانی ۲۴ اسفند ۱۴۰۴

مقدمه

فایل تنظیمات Django شامل تمام پیکربندی‌های پروژه است. این فایل در واقع یک ماژول پایتون است که متغیرهای سطح ماژول را تعریف می‌کند و رفتار پروژه را کنترل می‌کند—از دیتابیس و اپلیکیشن‌ها گرفته تا امنیت، ایمیل، کش و موارد دیگر.

چون فایل تنظیمات یک ماژول پایتون است:

  • نباید خطای نحوی داشته باشد
  • می‌تواند مقادیر را به‌صورت پویا تولید کند
  • می‌تواند از ماژول‌های دیگر import کند

ساختار پایهٔ فایل تنظیمات

نمونه‌ای از تنظیمات معمول:


ALLOWED_HOSTS = ["www.example.com"]
DEBUG = False
DEFAULT_FROM_EMAIL = "[email protected]"

اگر DEBUG = False باشد، باید ALLOWED_HOSTS را به‌درستی تنظیم کنید.


مشخص کردن فایل تنظیمات

متغیر محیطی DJANGO_SETTINGS_MODULE

Django باید بداند از کدام فایل تنظیمات استفاده کند. این کار با متغیر محیطی DJANGO_SETTINGS_MODULE انجام می‌شود.

مقدار آن باید مسیر پایتونی فایل تنظیمات باشد:


mysite.settings

این ماژول باید در sys.path قرار داشته باشد.

استفاده از django-admin

در لینوکس:


export DJANGO_SETTINGS_MODULE=mysite.settings
django-admin runserver

در ویندوز:


set DJANGO_SETTINGS_MODULE=mysite.settings
django-admin runserver

یا با آرگومان:


django-admin runserver --settings=mysite.settings

در سرور WSGI


import os
os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings"

تنظیمات پیش‌فرض

تمام تنظیمات پیش‌فرض Django در django/conf/global_settings.py قرار دارند. فایل تنظیمات شما فقط مواردی را که تغییر می‌دهید بازنویسی می‌کند.

برای مشاهدهٔ تفاوت‌ها:


python manage.py diffsettings

استفاده از settings در کد

برای دسترسی به تنظیمات:


from django.conf import settings

if settings.DEBUG:
    ...

نکات مهم:

  • settings یک شیء است، نه ماژول
  • نمی‌توان تنظیمات را مستقیم import کرد
  • نباید از فایل تنظیمات یا global_settings مستقیماً import کنید

تغییر تنظیمات در زمان اجرا ممنوع است

هرگز این کار را انجام ندهید:


settings.DEBUG = True

تنظیمات فقط باید در فایل تنظیمات تعریف شوند.


امنیت فایل تنظیمات

فایل تنظیمات شامل اطلاعات حساسی مانند:

  • رمز دیتابیس
  • کلیدهای API
  • SECRET_KEY

بنابراین باید دسترسی به آن محدود باشد، مخصوصاً در هاست اشتراکی.


ایجاد تنظیمات سفارشی

می‌توانید تنظیمات مخصوص اپلیکیشن خود بسازید. قوانین:

  • نام تنظیمات باید تماماً با حروف بزرگ باشد
  • تنظیمات موجود را دوباره اختراع نکنید
  • برای لیست‌ها از list استفاده کنید (رسم Django)

استفاده از Django بدون DJANGO_SETTINGS_MODULE

اگر نمی‌خواهید متغیر محیطی تنظیم کنید، می‌توانید Django را دستی پیکربندی کنید:


from django.conf import settings

settings.configure(DEBUG=True)

هر تعداد آرگومان دلخواه می‌توانید بدهید. اگر تنظیمی ارائه نشود، Django مقدار پیش‌فرض را استفاده می‌کند.


تنظیمات پیش‌فرض سفارشی

می‌توانید ماژول پیش‌فرض را تغییر دهید:


from django.conf import settings
from myapp import myapp_defaults

settings.configure(default_settings=myapp_defaults, DEBUG=True)

در این حالت باید تمام تنظیمات لازم را خودتان تعریف کنید.


configure() یا DJANGO_SETTINGS_MODULE — فقط یکی

باید دقیقاً یکی از این دو را استفاده کنید:

  • DJANGO_SETTINGS_MODULE
  • settings.configure()

اگر هیچ‌کدام تنظیم نشوند → ImportError اگر هر دو تنظیم شوند → RuntimeError

برای بررسی:


if not settings.configured:
    settings.configure(...)

استفادهٔ مستقل از Django و django.setup()

اگر Django را خارج از محیط معمول (مثل اسکریپت مستقل) استفاده می‌کنید، باید:


import django
django.setup()

این کار تنظیمات را بارگذاری و رجیستری اپلیکیشن‌ها را مقداردهی می‌کند.

فقط یک‌بار باید فراخوانی شود.


جمع‌بندی

سیستم تنظیمات Django انعطاف‌پذیر، قدرتمند و ضروری برای پیکربندی پروژه است. با درک نحوهٔ بارگذاری تنظیمات، مدیریت محیط، پیکربندی دستی، امنیت و استفادهٔ مستقل از Django، می‌توانید پروژه‌هایی پایدار، امن و قابل نگهداری بسازید. Django ابزارهای لازم برای مدیریت پیکربندی در هر مقیاسی را در اختیار شما قرار می‌دهد.

نوشته و پژوهش‌شده توسط دکتر شاهین صیامی

مقالات مرتبط

فریم‌ورک Tasks در Django: راهنمای کامل اجرای کارهای پس‌زمینه در Django 6.0

Django 6.0 فریم‌ورک Tasks را معرفی کرده است؛ سیستمی داخلی برای تعریف و صف‌بندی کارهای پس‌زمینه خارج از چرخهٔ request–response. این مقاله نحوهٔ کار Tasks، پیکربندی backendها، تعریف و enqueue کردن Taskها، استفاده از context، و ادغام با سیستم‌های Worker خارجی را توضیح می‌دهد.

ادامه

پشتیبانی Asynchronous در Django: راهنمای کامل Async Views، ORM، Middleware، عملکرد و ایمنی

این مقاله پشتیبانی Django از برنامه‌نویسی غیرهم‌زمان (async) را توضیح می‌دهد. موضوعاتی مانند async views، اجرای Django تحت ASGI، رفتار middleware، قابلیت‌های ORM غیرهم‌زمان، sync_to_async، مدیریت قطع اتصال، نکات عملکردی، و مکانیزم‌های ایمنی Django برای جلوگیری از استفادهٔ ناامن async بررسی می‌شوند.

ادامه

System Check Framework در Django: راهنمای کامل نوشتن، ثبت، اجرا و تست چک‌های سیستمی

System Check Framework در Django مجموعه‌ای از بررسی‌های استاتیک برای تشخیص مشکلات رایج در پروژه است. این مقاله نحوهٔ اجرای چک‌ها، نوشتن چک‌های سفارشی، مدیریت پیام‌ها، برچسب‌گذاری چک‌ها، افزودن چک به مدل‌ها و فیلدها، و نوشتن تست‌های واحد و یکپارچه برای چک‌ها را توضیح می‌دهد.

ادامه

سیگنال‌ها در Django: راهنمای کامل استفاده، اتصال، ارسال و مدیریت Signalها

این مقاله سیستم سیگنال‌های Django را توضیح می‌دهد؛ مکانیزمی برای اطلاع‌رسانی رویدادها بین بخش‌های مختلف برنامه بدون ایجاد وابستگی مستقیم. موضوعاتی مانند نحوهٔ اتصال receiverها، استفاده از decorator، مدیریت senderهای خاص، محل مناسب قرارگیری کد سیگنال‌ها، هشدارهای مهم، و بهترین شیوه‌ها بررسی می‌شوند.

ادامه

سریال‌سازی و دسریال‌سازی در Django: راهنمای کامل کار با Serialization Framework

این مقاله سیستم سریال‌سازی Django را توضیح می‌دهد؛ از نحوهٔ تبدیل مدل‌ها به JSON، XML، YAML و JSONL گرفته تا دسریال‌سازی داده‌ها، سریال‌سازی فیلدهای انتخابی، کار با مدل‌های ارث‌بری، مدیریت روابط، و نکات مهم هنگام ذخیرهٔ داده‌های دسریال‌شده.

ادامه

بهینه‌سازی و افزایش کارایی در Django: راهنمای کامل Performance، Benchmarking، Caching و Laziness

این مقاله تکنیک‌ها و ابزارهای مهم برای بهبود کارایی در Django را بررسی می‌کند. موضوعاتی مانند تعریف اهداف بهینه‌سازی، Benchmarking، ابزارهای تحلیل عملکرد، انتخاب سطح مناسب برای انجام عملیات، استفاده از Caching، درک Laziness و رفتار QuerySetها توضیح داده شده است.

ادامه