2012-06-05 12 views
12

एक पिरामिड परियोजना में develop.ini या production.ini है। मैं की तरह INI फ़ाइलों में अपने ही config डेटा जोड़ने:मैं पिरामिड में आईएनआई डेटा कैसे प्राप्त कर सकता हूं?

[thrift] 
host = 0.0.0.0 
port = 8080 

और मैं इस परियोजना में py फ़ाइलों में से एक में config डेटा का उपयोग करना चाहते हैं। मैं अनुरोध ऑब्जेक्ट के बिना डेटा कैसे प्राप्त कर सकता हूं? (मैंने एक समाधान देखा है जो अनुरोध का उपयोग करता है।)

उत्तर

21

आप request.registry.settings या pyramid.threadlocal.get_current_registry().settings पर सेटिंग्स तक पहुंच सकते हैं। यह शब्दकोश की तरह व्यवहार करता है।

यदि आप दूसरे का उपयोग करना चाहते हैं, तो अनुरोध के बिना सेटिंग प्राप्त हो रही है, मुझे आपको चेतावनी देना है। the doc के अनुसार:

इस समारोह आमतौर पर केवल इकाई परीक्षण कोड में अत्यंत किफ़ायत से इस्तेमाल किया जाना चाहिए,। यह आमतौर पर आमतौर पर get_current_registry का परीक्षण संदर्भ के बाहर उपयोग करने की गलती है क्योंकि इसका उपयोग बनाता है जो कोड लिखना संभव है जिसे न तो आसानी से परीक्षण किया जा सकता है और न ही लिखित।

सेटिंग्स के उपयोग की आवश्यकता वाले आपके कोड का कोई भी हिस्सा वेब एप्लिकेशन का हिस्सा है, और अनुरोध को एक्सेस करना चाहिए, कुछ जादुई रूप से सुलभ वैश्विक नहीं। आपको लगता है कि आपके पास एक अच्छा कारण है, लेकिन शायद एक बेहतर तरीका है। यदि आप उस पर चर्चा करना चाहते हैं (शायद किसी अन्य प्रश्न में यदि यह जटिल है, क्योंकि कुछ कोड मदद करेंगे), तो मुझे यह करने में एक साफ तरीका खोजने में आपकी सहायता करने में खुशी होगी।

+1

धन्यवाद। जवाब में इसे स्पष्ट करने के लिए संपादित किया गया। वैसे, रजिस्ट्री सेटिंग फ़ाइल नहीं है (http://pyramid.readthedocs.org/en/1.3-branch/glossary.html#term-plication-registry देखें)। – madjar

+0

ध्यान दें कि एक कस्टम सेटिंग जोड़ने और इस उत्तर का उपयोग करके आप इसे किसी नए खंड में नहीं जोड़ सकते हैं। आपको इसे मौजूदा [ऐप: मुख्य] ​​अनुभाग में जोड़ना होगा। [प्रलेखन] देखें (http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html#adding-a- कस्टम-setting)। – Zitrax

2

जब भी मुझे आश्चर्य होता है कि पिरामिड में कुछ कैसे करना है, तो मैं आमतौर पर जिथूब पर पिरामिड उदाहरणों में से एक का उल्लेख करता हूं।

Parsing Example Pyramid Config

मैं कैसे "pyrmadic" वे कर रहे हैं पता नहीं है, लेकिन वे usaully ठीक काम करते हैं। यहां वे सिर्फ ConfigParser का उपयोग करते हैं जैसे कि आप अपनी .ini फाइलों को पार्स करने के लिए किसी भी पायथन प्रोजेक्ट में

-2

'पिरामिड' के बजाय 'पायथन' सोचें।

import ConfigParser 

config = ConfigParser.ConfigParser() 
config.read('development.ini') 
db_url = config.get('app:main', 'sqlalchemy.url') 
+1

पिरामिड अपने अनंत ज्ञान में 'पेस्ट डिप्लॉय' का उपयोग करता है। 'ConfigParser' काम नहीं करेगा: यह कुंजी नामों में' .' रखने को स्वीकार नहीं करता है। – NuclearPeon

+1

हार्डकोडिंग खराब अभ्यास है। – karantan