2011-02-27 10 views
5

मैं सैचमो चला रहा हूं। कई ऐप्स हैं और मैंने उत्पाद ऐप में कुछ स्रोत बदल दिए हैं।Django में एक ऐप को ठीक से कैसे ओवरराइड करें?

तो मेरा सवाल यह है कि मैं इसे ठीक से कैसे ओवरराइड कर सकता हूं क्योंकि परिवर्तन साइट विशिष्ट है। क्या मुझे पूरे सैचमो फ्रेमवर्क पर प्रतिलिपि बनाना है और इसे अपने प्रोजेक्ट में रखना है या क्या मैं सिर्फ एक ऐप को कॉपी कर सकता हूं और इसे सचमो> ऐप> उत्पाद कह सकता हूं? (किंडा टेम्पलेट के साथ की तरह)

धन्यवाद

उत्तर

4

मैंने जो काम किया है वह है जो मैंने बदला है, उसकी प्रतिलिपि बनाना है। इस मामले में satchmo \ apps \ product। मैं अपने प्रोजेक्ट फ़ोल्डर में अनुप्रयोग की नकल की 'myproject.product',

को 'product', से मेरी setting.pyINSTALLED_APPS संशोधित यह अब परिवर्तन मैं केवल इस परियोजना के लिए इस एप्लिकेशन में किए गए परिवर्तन किया जाता है और अछूता मूल उत्पाद एप्लिकेशन छोड़ देता है और अभी भी अन्य परियोजनाओं से सामान्य रूप से पढ़ने में सक्षम है।

2

आम तौर पर, मैं कहना चाहता हूँ सबसे अच्छी बात Satchmo कांटा और अपने परिवर्तन के साथ एक प्रति रखना है।

यदि आप पाइथन पथ के साथ खेलना चाहते हैं, तो सुनिश्चित करें कि आपकी ऐप की निर्देशिका अन्य (डिफ़ॉल्ट) निर्देशिका से पहले दिखाई दे। मेरे परीक्षणों से, यदि आपके पास समान नाम वाले दो ऐप्स/मॉड्यूल हैं, तो पहले पाए गए पहले का उपयोग किया जाता है।

+0

हेया। यह एक साइट विशिष्ट परिवर्तन है इसलिए मैं वास्तव में सच्चाई काटना नहीं चाहता हूं और इसे पथ पर रखता हूं क्योंकि मैं नहीं चाहता कि कोई अन्य प्रोजेक्ट इसका उपयोग करे। – darren

+0

फिर दूसरा विकल्प खड़ा है। आपको बस इतना करना है कि पाइथन पथ (क्रिस के नोट्स के अनुसार) को ट्विक करें और सुनिश्चित करें कि आपका "उत्पाद" मानक सैचमो के उत्पाद (जो) मुझे लगता है कि पाइप/easy_setup के माध्यम से स्थापित किया गया है। –

+0

इसके अलावा (मैं इसे पैराग्राफ करने के लिए नहीं मिल सकता), आप वर्चुअलएन्व के साथ अपनी साइट को अलग कर सकते हैं। फिर, केवल आपकी साइट पर संशोधित सैचमो कॉपी तक पहुंच होगी ... –

3

जब आपफ़ाइल में INSTALLED_APPS पर 'Django App' जोड़ते हैं, तो आप Django को बता रहे हैं कि उस नाम के साथ आपके "पायथन पथ" पर एक आयात योग्य पायथन मॉड्यूल मौजूद है। आप sys.path पर संग्रहीत सूची की सामग्री देख कर अपने पायथन पथ को देख सकते हैं।

जब भी अजगर (और इस मामले Django में) क्रम में एक मॉड्यूल यह sys.pathमें सूचीबद्ध निर्देशिका में से प्रत्येक की जाँच करता है आयात करने के लिए, जब यह एक मॉड्यूल दिए गए नाम के यह बंद हो जाता है मिलान पाता प्रयास करता है।

तो आपकी समस्या का हल है भी जगह अपने अनुकूलित Django एप्लिकेशन, उदाहरण के लिए, Satchmo product मॉड्यूल, अपने अजगर रास्ते में एक स्थान है जो "असली" Satchmo product मॉड्यूल पहले जाँच की जाएगी में।

क्योंकि मुझे नहीं पता कि आपकी निर्देशिका संरचना कैसे बनाई गई है, मैं मूल रूप से यहां अनुमान लगा रहा हूं, लेकिन आपके मामले में, ऐसा लगता है कि आपके पास /satchmo/apps/ और /my_custom_path/my_project/ पर कहीं भी सोचमो ऐप्स रहते हैं। इस मामले में आप अपने अनुकूलित product मॉड्यूल को /my_custom_path/my_project/product/ पर जोड़ना चाहेंगे। क्योंकि जिस पथ पर आपका Django settings.py फ़ाइल जीवन हमेशा पहले चेक किया गया है, इसका मतलब यह होना चाहिए कि आपका अनुकूलित product मॉड्यूल पहले मिलेगा और सैचमो में निर्मित के बजाय आयात किया जाएगा।

FYI करें: की जाँच करें और जिस क्रम में अपने Satchmo स्थापना निर्देशिका जाँच कर रहा है मॉड्यूल python manage.py shell चलाने के लिए और उसके बाद शीघ्र में import sys; print sys.path करना के लिए देखने के लिए।

+0

हायया क्रिस। लेकिन क्या होगा यदि मैं नहीं चाहता कि मेरे अन्य ऐप्स इस कस्टम उत्पाद ऐप का उपयोग करें? वे सभी अभी भी इस उत्पाद को पहले आयात करेंगे क्योंकि यह पथ पर पहले पाया गया है। मैं केवल इस साइट के लिए ऐप को ओवरराइड करना चाहता हूं। – darren

+1

शायद अगर आप अपनी निर्देशिका संरचना के लेआउट की व्याख्या करते हैं तो मैं मदद कर पाऊंगा। अभी तक, यह स्पष्ट नहीं है कि आपके ऐप्स, पुस्तकालयों और परियोजनाओं को कैसे रखा गया है। –

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