Django में एक नया ऐप (स्टार्टअप के साथ) कब बनाएं?


103

मैं इस के लिए चारों ओर घूम गया, लेकिन मैं अभी भी परेशानी है जो Django "क्षुधा" के रूप में परिभाषित करता है।

क्या मुझे किसी साइट में कार्यक्षमता के प्रत्येक टुकड़े के लिए एक नया ऐप बनाना चाहिए, भले ही वह मुख्य परियोजना से मॉडल का उपयोग करता हो?

क्या आप लोगों के पास किसी नए ऐप को विभाजित करने के लिए अंगूठे का अच्छा नियम है, और "मुख्य परियोजना" या अन्य ऐप के साथ कार्यक्षमता को बनाए रखने के लिए कब?

जवाबों:


43

जेम्स बेनेट ने स्लाइडों का एक अद्भुत सेट है कि कैसे Django में पुन: प्रयोज्य एप्लिकेशन को व्यवस्थित किया जाए।


1
क्या इसका मतलब है, अगर मैं एक बच्चा मॉडल बनाता हूं, तो यह हमेशा एक ही ऐप में होना चाहिए? चूँकि मैं इसे आसानी से दो "ऐप्स" पर लाए बिना किसी अन्य प्रोजेक्ट में नहीं छोड़ सकता
लियोनेल

18

मैं Django अनुप्रयोगों को पुन: प्रयोज्य मॉड्यूल या घटकों के रूप में "अनुप्रयोगों" के रूप में सोचना पसंद करता हूं।

यह मुझे एक-दूसरे से कुछ विशेषताओं को एनकैप्सुलेट करने और डिकूप करने में मदद करता है, फिर से प्रयोज्यता में सुधार करने के लिए मुझे बड़े पैमाने पर समुदाय के साथ एक विशेष "ऐप" साझा करने का निर्णय लेना चाहिए और स्थिरता बनाए रखना चाहिए।

मेरा सामान्य दृष्टिकोण "एप्स" में विशिष्ट विशेषताओं या फीचर सेट को बाल्टी में डालना है, जैसे कि मैं उन्हें सार्वजनिक रूप से जारी करने जा रहा था। यहाँ का कठिन भाग यह पता लगा रहा है कि प्रत्येक बाल्टी कितनी बड़ी है।

एक अच्छी ट्रिक जो मैं इस्तेमाल करता हूं, वह यह कल्पना करना है कि अगर वे सार्वजनिक रूप से जारी किए गए तो मेरे ऐप का उपयोग कैसे किया जाएगा। यह अक्सर मुझे बाल्टी को सिकोड़ने के लिए प्रोत्साहित करता है और अधिक स्पष्ट रूप से इसके "उद्देश्य" को परिभाषित करता है।


16

यहां 6 सितंबर 2008 को अद्यतन प्रस्तुति दी गई है।

DjangoCon 2008: पुन: प्रयोज्य ऐप्स @ 7: 53

स्लाइड: Reusable_apps.pdf

स्लाइड से लिया गया

क्या यह उसका अपना आवेदन होना चाहिए?

  • क्या यह पूरी तरह से ऐप के फोकस से असंबंधित है?
  • यह जो कुछ भी मैं कर रहा हूं, क्या वह रूढ़िवादी है?
  • क्या मुझे अन्य साइटों पर समान कार्यक्षमता की आवश्यकता होगी?

यदि उनमें से कोई "हाँ" है? फिर इसे एक अलग एप्लिकेशन में तोड़ने के लिए सबसे अच्छा है।


मैंने जो स्लाइड देखी, उसमें "ऐप के फ़ोकस" के बारे में पहला सवाल नहीं है।
जॉनी

@johnny यह की 99 31 स्लाइड पर वहाँ
यीओ

13

मैं मॉडल के प्रत्येक अलग-अलग सेट के लिए नए एप्लिकेशन बनाने के लिए हूं। उदाहरण के लिए:

  • उपयोगकर्ता प्रोफ़ाइल्स
  • फोरम पोस्ट
  • वेबदैनिकी डाक

6

यदि मैं नियम का पालन करता हूं तो यह एक नया ऐप होना चाहिए अगर मैं किसी अन्य प्रोजेक्ट में कार्यक्षमता का पुन: उपयोग करना चाहता हूं।

यदि इसे आपके प्रोजेक्ट में मॉडलों की गहरी समझ की आवश्यकता है, तो संभवतः इसे मॉडल के साथ चिपकाने के लिए अधिक सामंजस्यपूर्ण है।


4

इस सवाल के दो सबसे अच्छे उत्तर मैंने वेब के आसपास पाए हैं:

  1. पुन: प्रयोज्य ऐप्स टॉक ( स्लाइड ) ( वीडियो ) का अन्य उत्तरों में भी उल्लेख किया गया है। बेनेट, लेखक और Django योगदानकर्ता, नियमित रूप से दूसरों के उपयोग के लिए ऐप प्रकाशित करते हैं और कई छोटे ऐप के प्रति एक मजबूत दृष्टिकोण रखते हैं।
  2. स्केल पर Django के लिए दूरदर्शन के सुझाव जो विपरीत सलाह देता है और उनके मामले में कहता है कि वे कई अलग-अलग ऐप के साथ शुरू करने के बाद एक ही ऐप पर चले गए। वे ऐप्स के बीच माइग्रेशन निर्भरता ग्राफ़ के साथ समस्याओं में भाग गए।

दोनों स्रोत सहमत हैं कि आपको निम्नलिखित स्थितियों में एक अलग ऐप बनाना चाहिए:

  • यदि आप किसी अन्य Django परियोजना में अपने एप्लिकेशन का पुन: उपयोग करने की योजना बनाते हैं (विशेषकर यदि आप इसे पुन: उपयोग करने के लिए दूसरों के लिए प्रकाशित करने की योजना बनाते हैं)।
  • यदि ऐप में इसके और किसी अन्य ऐप के बीच कम या कोई निर्भरता नहीं है। यहां आप भविष्य में अपने स्वयं के माइक्रो सर्विस के रूप में चल रहे ऐप की कल्पना कर सकते हैं।

1

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

मैं व्यक्तिगत रूप से ब्लॉग को ही एप्लिकेशन बनाऊंगा, और उसके भीतर की कार्यक्षमता को तोड़ दूंगा। ब्लॉग को अन्य वेबसाइटों में आसानी से उपयोग किया जा सकता है।

Django के बारे में अच्छी बात यह है कि यह Django मॉडल युक्त फ़ाइल के रूप में आपके डायरेक्टरी ट्री के किसी भी स्तर के भीतर किसी भी मॉडल की पहचान करेगा। इसलिए 'ऐप' के भीतर छोटे 'सब ऐप' में अपनी कार्यक्षमता को तोड़ना अपने आप में कुछ मुश्किल नहीं होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.