2010-12-30 8 views
13

मैं सिर्फ अपनी कंपनी के लिए Django पर एक व्यवहार्यता अध्ययन शुरू कर दिया है और मैं settings.py पर पूर्ण पथ के लिए की जरूरत पर ध्यान दिया है पर settings.py में रास्तों से निपटने के लिए कैसे:Django - सहयोगी परियोजनाओं

TEMPLATE_DIRS = (
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". 
    # Always use forward slashes, even on Windows. 
    # Don't forget to use absolute paths, not relative paths. 
) 

मेरा सवाल है: जब आप किसी टीम के साथ सहयोग कर रहे हों तो इन पूर्ण पथ से कैसे निपटें? कहें, अगर किसी टीम के सदस्य को स्रोत नियंत्रण से प्रोजेक्ट प्राप्त करने के बाद पथ को संशोधित करना है, न केवल यह त्रुटि प्रवण और समय बर्बाद हो जाएगा, लेकिन यह उपयोगकर्ताओं को settings.py में किए गए परिवर्तन को करने के लिए जटिलताओं का भी कारण बन जाएगा। इससे कैसे बचा जा सकता है?

उत्तर

27
import os.path 

#Get the absolute path of the settings.py file's directory 
PWD = os.path.dirname(os.path.realpath(__file__)) 

TEMPLATE_DIRS = (
    # Put strings here, like "/home/html/django_templates" or 
    # "C:/www/django/templates". 
    # Always use forward slashes, even on Windows. 
    # Don't forget to use absolute paths, not relative paths. 

    #Add Templates to the absolute directory 
    os.path.join(PWD, "Templates") 
) 

की सूची के अनुसार पथ सेट हो जाएगा। ध्यान दें कि आमतौर पर एक अलग localsettings.py फ़ाइल, या कुछ समान होना बुद्धिमान होता है।

+0

डिफ़ॉल्ट 'PWD = os.path.dirname (os.path.dirname (__ फ़ाइल __)) क्यों है? कोई अंतर? – User

+0

ध्यान दें कि विंडोज़ पर यह विधि बैकस्लैश वाले पथ बनाएगी, जो Django दस्तावेज़ों के विपरीत होती है (उदाहरण के लिए, [https://docs.djangoproject.com/en/1.7/ref/settings/](https://docs .djangoproject.com/en/1.7/ref/सेटिंग्स/# नाम) और उपरोक्त स्निपेट में टिप्पणियां)। – dhobbs

2

settings.py सिर्फ एक और पायथन मॉड्यूल है। अपने पथ बनाने के लिए os.path में विभिन्न कार्यों को आयात और उपयोग करें।

3

यह करें:

import os 
ROOT_PATH = os.path.dirname(__file__) 
. 
. 
. 
TEMPLATE_DIRS = (
    os.path.join(ROOT_PATH, 'templates'), 
) 

यह है कि कैसे मैं रिश्तेदार आयात करना settings.py फ़ाइल

1

settings.py फ़ाइल से सापेक्ष पथ का उपयोग करने का विकल्प, प्रत्येक डेवलपर के लिए अपनी सेटिंग्स.py रखना है।

# settings.py 
TEMPLATE_DIRS = (
    'c:\django\templates\', 
) 

# dev-x-settings.py 
import settings 
TEMPLATE_DIRS = (
    'd:\dev\django\project\templates\' 
) 

आधार फ़ाइल से सभी सेटिंग्स dev-x-settings.py आयात, और बदल जाता बिट और टुकड़े वे की जरूरत है। स्थानीय स्क्लाइट डेटाबेस और इसी तरह के बनाए रखने के लिए भी बहुत आसान है।

हम आम तौर पर के रूप में हमारे सेटिंग्स बाहर सेट:

/settings/ 
    __init__.py 
    production.py 
    staging.py 
    test.py 
    dev-x.py 
    dev-y.py 

तो तुम सब के बारे में सर्वर चल रहा है और यह सही settings.py फ़ाइल गुजर रहा है चिंता करने की जरूरत।

1

os.path का उपयोग कर के अलावा आप आप settings.py के अंत में

try: 
    import * from settings_local 
except: 
    pass 

जोड़ सकते हैं। प्रत्येक डेवलपर तब अपनी settings_local.py फ़ाइल बना सकता है जिसे वीसीएस में चेक नहीं किया गया है!

संबंधित मुद्दे