3 Eylül 2009 Perşembe

Django'da iki sunucuda birden çalışmak ve settings.py

Şu sıralar uğraştığım bir Django uygulaması var geliştirirken karşılaştığım bir sorunu ve çözümünü paylaşayım dedim.

Geliştirdiğim uygulamayı sunucuya yükledikten sonra lokalde geliştirirken oluşturduğum bir çok seçeneğin sunucudayken değişmesi gerektiğini farkettim. Bu ayarları değiştirmek kolaydı fakat sıkıntı çektiğim nokta uygulamanın hem sunucuda hemde kendi laptopumda tek bir settings.py ile sorunsuzca çalışması gerekiyordu. Bende şöyle bir çözüm buldum :

settings.py :

from os import uname, getcwd
from os.path import join
MACHINE_NAME = uname()[1]
if MACHINE_NAME == "web77.webfaction.com":
DOCUMENT_ROOT = "/path/to/document/"
DATABASE_ENGINE = ...
DATABASE_NAME = ...
DATABASE_USER = ...
DATABASE_PASSWORD = ...
DATABASE_HOST = ...
DATABASE_PORT = ...
else:
DOCUMENT_ROOT = getcwd()
DATABASE_ENGINE = 'sqlite3'
DATABASE_NAME = join(DOCUMENT_ROOT,'sqlite3.db')
DATABASE_USER = ''
DATABASE_PASSWORD = ''
DATABASE_HOST = ''
DATABASE_PORT = ''

2 yorum:

  1. os.uname'in yerine platform.node kullanımı tercih edilmeli, mesela djangoproject.com'daki kullanım şu şekilde:

    import platform

    DEVELOPMENT_MODE = (platform.node() != "hostname_buraya_geliyor")

    if DEVELOPMENT_MODE:
    DEBUG = True
    else:
    DEBUG = False

    YanıtlaSil