मूल समस्या यह है कि मैं कुछ Django विकासशील रहा हूँ, लेकिन (सहयोगियों के साथ) एक से अधिक मेजबान, विभिन्न सेटिंग्स के साथ सभी पर है। मैं परियोजना/settings.py फ़ाइल में इस तरह कुछ करने के लिए उम्मीद कर रहा था:
from platform import node
settings_files = { 'BMH.lan': 'settings_bmh.py", ... }
__import__(settings_files[ node() ])
यह एक सरल उपाय है (इस प्रकार सुरुचिपूर्ण) लग रहा था, लेकिन मैं इस बात से सहमत हैं कि यह करने के लिए एक गंध है और सादगी बाहर चला जाता है लूप जब आपको तर्क मिलता है कि जॉन मिलिकिन ने क्या पोस्ट किया है (धन्यवाद)। यहां अनिवार्य रूप से समाधान है जिसके साथ मैं गया:
from platform import node
from settings_global import *
n = node()
if n == 'BMH.lan':
from settings_bmh import *
# add your own, here...
else:
raise Exception("No host settings for '%s'. See settings.py." % node())
जो हमारे उद्देश्यों के लिए ठीक काम करता है।
स्रोत
2008-10-02 02:33:33
शायद बेहतर: मीटर में .__ all__ attr के लिए? –
@ सेर्गेई: इस बात की कोई गारंटी नहीं है कि मॉड्यूल __all__ –
@ जॉन मिलिकिन को परिभाषित करेगा: लेकिन यदि कोई मॉड्यूल __all__ को परिभाषित करता है तो आपको इसे देखना चाहिए –