2014-07-24 10 views
24

यहां एक उदाहरण है जो मैं प्राप्त करने की कोशिश कर रहा हूं। वांछित प्रभाव यह है कि एक विशेष सुविधा प्रभावी होनी चाहिए यदि केवल और यदि इसकी प्रासंगिक सेटिंग मौजूद है तो परिभाषित किया गया है। अन्यथा, सुविधा अक्षम की जानी चाहिए।Django: जांचें कि सेटिंग्स चर सेट है

settings.py:

SOME_VARIABLE = 'some-string' 
ANOTHER_VARIABLE = 'another-string'

random_code_file.py:

from django.conf import settings 

if settings.is_defined('ANOTHER_VARIABLE'): # <- I need this. 
    do_something(settings.ANOTHER_VARIABLE) 
else: 
    do_something_completely_different() 

उपरोक्त कोड में, मैं जो कुछ भी मैं settings.is_defined के बजाय क्या करना चाहिए याद कर रहा हूँ।

यदि यह पूरी तरह से समस्या का गलत दृष्टिकोण है, तो मुझे वैकल्पिक दृष्टिकोणों के बारे में भी सुनकर खुशी होगी। वांछित प्रभाव एक स्वत: सक्रिय सुविधा है जो प्रासंगिक सेटिंग मौजूद होने पर ही प्रभावी होती है। मैं कुछ खास settings.ACTIVE_FEATURES सेटिंग या एक विशेष मूल्य जैसे कि रिक्त स्ट्रिंग या फीचर के लिए कोई विशेष रूप से यह आकलन करने के लिए पसंद करता हूं कि यह प्रभावी है या नहीं।

आखिरी चीज जो मैं करना चाहता हूं वह कोशिश/छोड़कर उपयोग करना है। मैं सुविधा के बहिष्कार को इंगित करने वाले खाली मूल्य के लिए जाना चाहूंगा। - लेकिन यदि कोशिश करें/इसे छोड़कर वास्तव में पसंदीदा तरीका है, तो संपूर्ण स्रोत या स्पष्टीकरण प्रदान किए जाने पर मैं उत्तर को सही के रूप में चिह्नित करूंगा। वास्तव में यह किसी भी उत्तर के लिए चला जाता है।

तो संक्षेप में, मुझे यह जांचने का उचित तरीका चाहिए कि Django में सेटिंग्स चर परिभाषित किया गया है या नहीं।

अग्रिम धन्यवाद!

+2

यह Django के लिए विशिष्ट क्यों है? मेरा मानना ​​है कि एक अंतर्निहित पायथन विधि है जो आपको यह – nmagerko

+0

करने की अनुमति देती है, मुझे लगता है कि 'सेटिंग' ऑब्जेक्ट Django के लिए अद्वितीय था। मुझे नहीं लगता कि आप मुझे पाइथन में ऐसा करने के तरीके पर शिक्षित कर सकते थे? :) – Teekin

उत्तर

43

ऐसा लगता है कि आपने इसे सही तरीका बना दिया है: आयात सेटिंग मॉड्यूल और जांचें।

और आप उपयोग करने का प्रयास कर सकते हैं:

if hasattr(settings, 'ANOTHER_VARIABLE'):

के बजाय:

if settings.is_defined('ANOTHER_VARIABLE'):

मैं the documentation पाया, आशा है कि यह मदद कर सकता है।

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