2010-11-09 16 views
9

मैं थोड़ी देर के लिए पिलोन में विकास कर रहा हूं और हाल ही में सीखा है कि वे पिरामिड बनाने के लिए एक और ढांचे के साथ विलय कर रहे हैं।पिरामिड (पिलोन) की नई फ़ाइल/निर्देशिका संरचना मुझे कुछ भ्रम पैदा कर रही है

मैं मतभेद देखने के लिए example code से अधिक तलाश कर दिया गया है और यह भ्रम की स्थिति का एक सा ...

उदाहरण के लिए, नियंत्रकों दृश्य ने ले ली है पैदा कर रहा है। कोई बड़ी समस्या नहीं है ... लेकिन मुझे दिलचस्प लगता है कि इनके लिए कोई निर्देशिका नहीं है। यह बस एक फ़ाइल है: views.py

यह नई एमवीसी संरचना कैसे काम करती है? क्या मैं अपने सभी कार्यों को इस फाइल में लिखता हूं? जब मैं समान रूप से नामित क्रियाओं (उदाहरण के लिए, एकाधिक अनुक्रमणिका) नामित करता हूं तो यह परेशान हो सकता है:/

क्या आप मुझे इस ढांचे का उपयोग करने के तरीके पर कुछ अच्छे ट्यूटोरियल/दस्तावेज़ीकरण की दिशा में इंगित कर सकते हैं?

उत्तर

26

विभिन्न दृश्य-संबंधित कॉन्फ़िगरेशन विधियों (config.add_view, config.add_handler) के बाद से आपको एक डॉट नाम को क्लास या फ़ंक्शन के रूप में उपयोग या हैंडलर के रूप में उपयोग करने की आवश्यकता होती है, तो आप अपना कोड व्यवस्थित कर सकते हैं, हालांकि आपको पसंद है ।

उदाहरण के लिए, यदि आपके परियोजना पैकेज का नाम myproject थे और "विचारों" नाम myproject पैकेज के भीतर अपने सभी एक अजगर सबपैकेज में विचारों की व्यवस्था करना चाहता था (http://docs.python.org/tutorial/modules.html#packages देखें) बजाय एक ही बार देखा गया फ़ाइल, आप हो सकता है की:

  • अपने mypackage पैकेज के अंदर views निर्देशिका बनाएं।

  • ले जाएँ मौजूदा views.py, नामित कहते हैं नई views निर्देशिका, blog.py अंदर एक फाइल करने के लिए फ़ाइल।

  • __init__.py नामित नई views निर्देशिका के भीतर एक फ़ाइल बनाएँ (यह खाली हो सकता है, यह सिर्फ अजगर बताता है कि views निर्देशिका एक पैकेज है।

फिर अपने myproject की __init__.py बदल प्रोजेक्ट (__init__.py आपने अभी views निर्देशिका, इसकी मूल निर्देशिका में से एक में बनाया है) जैसे:

config.add_handler('myhandler', '/my/handler', handler='mypackage.views.MyHandler')

करने के लिए:

config.add_handler('myhandler', '/my/handler', handler='mypackage.views.blog.MyHandler')

फिर आप बिंदीदार नाम handler= के रूप में पारित के माध्यम से views निर्देशिका में फ़ाइलें जोड़ने के लिए, और उन फ़ाइलों के भीतर विचार या हैंडलर वर्गों/कार्यों का उल्लेख करने के लिए जारी कर सकते हैं या view=

+0

मैंने अपनी खुद की निर्देशिका संरचना बनाने पर विचार किया था लेकिन यह सुनिश्चित नहीं था कि इसे कैसे किया जाए। लगता है कि 'हैंडलर' विशेषता बहुत आसान बनाती है। चीयर्स। – dave

+0

एनबी। 'view.py' फ़ाइल से 'view_' निर्देशिका में स्थानांतरित करना उतना आसान है जितना आप' add_handler' का उपयोग कर रहे हैं या नहीं। पिरामिड सिर्फ आपको फाइल के साथ शुरू करता है क्योंकि एक छोटी परियोजना के लिए एक निर्देशिका अधिक है। – joeforker

+0

क्या मैं config.scan फ़ंक्शन में हैंडलर जोड़ सकता हूं? – CrazyGeek

5

यहां एक उत्तर है जो बहुत सीधे आगे होना चाहिए। इस सवाल से पूछा गया था कि पिरामिड 1.3 अभी तक क्यों नहीं था। इसलिए पाइथन हैंडलर के बारे में भूल जाओ क्योंकि नए सजावटी अब बहुत अच्छी नौकरी करते हैं।

लेकिन बस शुरू करने के लिए: पिरामिड की कोई सामान्य संरचना नहीं है। यदि आप चाहें तो संभवतः आप एक ही फाइल में एक संपूर्ण ऐप लिख सकते हैं। दूसरे शब्दों में, अगर आपको पसंद आया कि कैसे पिलोन संरचित किए गए थे, तो आप इसके साथ जा सकते हैं। यदि आप अपनी खुद की संरचना स्थापित करना पसंद करते हैं तो इसके लिए जाएं।

यदि आपकी साइट को एक से अधिक फ़ाइल की आवश्यकता नहीं है तो ... इसके लिए जाओ !!! आपको वास्तव में जरूरत है कि यह काम करता है।

मैं व्यक्तिगत रूप से है कि

- root 
    - __init__.py # all setup goes there 
    - security.py # where functions related to ACL and group_finder 
    - models.py or models/ # where all my models go 
    - views.py or views/ # where all my views go 
    - templates 
     - modelname 
      - all template related to this resource type 

    - scripts # where I put my scripts like backup etc 
    - lib # all utilities goes there 
    - subscribers # where all events are defined 

मेरा विचार पैकेज की तरह एक संरचना कभी कभी कई फाइलों जहाँ मैं ResourceType द्वारा समूह दृश्यों चाहते में splitted हो सकता है।

यदि आप मार्गों के बजाय दृश्यों के मिलान के संदर्भ में संदर्भ का उपयोग करते हैं। आप view_defaults और view_config के साथ कुछ बहुत अच्छी चीजें कर सकते हैं।

view_defaults कक्षा के लिए कुछ डिफ़ॉल्ट सेट करता है, और view_config मौजूद होने पर view_defaults द्वारा प्रदान किए गए डिफ़ॉल्ट का उपयोग करके डीफ़ के लिए कुछ और कॉन्फ़िगरेशन सेट करता है।