2012-12-22 9 views
7

मैं Django सीख रहा हूँ। मेरी पृष्ठभूमि PHP व्यू कंट्रोलर फ्रेमवर्क का उपयोग कर अनुभव के साथ PHP और जावा से है। मेरे पास हमेशा मेरे प्रत्येक विचार, मॉडल और टेम्पलेट्स के लिए एक अलग फ़ाइल है - लेकिन Django ट्यूटोरियल में केवल एक views.py और models.py होने का उल्लेख है।अच्छा अभ्यास: Django ऐप्स में views.py.py व्यवस्थित करना

यदि आपके पास एक छोटा सा एप्लीकेशन है तो यह ठीक लगता है - यदि आप अपने विचारों और मॉडलों को उनके उद्देश्य से व्यवस्थित करना चाहते हैं तो क्या होगा? उदाहरण के लिए, एक परियोजना दृश्य और एक मील का पत्थर देखें। मैं आशा करता हूं आप प्रत्येक दृश्य के मॉड्यूल के लिए एक और अजगर पैकेज (एप्लिकेशन) बनाने के लिए नहीं होता है कि:

python manage.py startapp projects

python manage.py startapp milestones

मैं यह मान सकते हैं कि आप एक milestones.py और एक परियोजनाओं हो सकता है। एक सामान्य दृश्य.py और models.py के बजाय अपने विचारों और मॉडलों के लिए py? फिर मॉडल को आयात किया जा सकता है जहां विचारों में जरूरी है, और विशिष्ट विचारों के लिए अनुरोध किए गए अनुरोध?

उत्तर

17

दृश्य और मॉडल वाले कई फाइलों के साथ कोई समस्या नहीं है।

असल में आपको मॉड्यूल views और मॉड्यूल models मॉड्यूल की आवश्यकता है। पायथन में मॉड्यूल या तो फ़ाइल है जो .py या उस फ़ोल्डर में समाप्त होती है जिसमें फ़ाइल __init__.py है।

app_folder 
    - views 
    | - __init__.py 
    | - some_view.py 
    | - some_other_view.py 
    - models 
    | - __init__.py 
    | - some_model.py 
    | - some_other_model.py 

models/__init__.py नीचे कोड के लिए इसी तरह दिखना चाहिए (submodules के लिए Django बिल्कुल द्वारा देखा जा करने के लिए):

एप्लिकेशन की तरह कुछ देख सकते हैं।

from some_model import SomeModel 
from some_other_model import SomeOtherModel 

आम दृष्टिकोण से फर्क सिर्फ इतना है app_label मॉडल में परिभाषित किया गया है के लिए है:

class SomeModel(models.Model): 
    class Meta: 
     app_label = 'app_folder' 

चेक बाहर संबंधित doc entry

अद्यतन:

विकास संस्करण डॉक्स कहते हैं कि तुम 1.7 रिलीज के साथ किसी भी अधिक प्रारंभिक इस मामले में app_label को परिभाषित करने के लिए नहीं होगा।

अंतभाषण:

तथ्य अगर आपको लगता है कि यह आम तौर पर मतलब है कि आपका एप्लिकेशन बहुत बड़ा है और आप कई क्षुधा में विभाजित करना चाहिए क्या करने की जरूरत है। अधिकांश लोग जो django में आते हैं, वे बहुत छोटे ऐप्स होने से डरते हैं। जितना अधिक तृतीय पक्ष ऐप्स आप जितना अधिक एप एहसास करते हैं, उसे एक और केवल एक समस्या हल करना चाहिए। आपके उदाहरण में ऐप milestones पूरी तरह से कानूनी लगता है।

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