क्या कोई मुझे समझा सकता है कि Django और मॉडल व्यू कंट्रोलर पैटर्न के बीच अंतर कहां हैं?
कार्यात्मक रूप से, हम उन अंतरों से क्या उम्मीद कर सकते हैं - यानी जोजो से तुलना करने पर अलग-अलग काम करता है, उदाहरण के लिए, रूबी ऑन रेल्स?
क्या कोई मुझे समझा सकता है कि Django और मॉडल व्यू कंट्रोलर पैटर्न के बीच अंतर कहां हैं?
कार्यात्मक रूप से, हम उन अंतरों से क्या उम्मीद कर सकते हैं - यानी जोजो से तुलना करने पर अलग-अलग काम करता है, उदाहरण के लिए, रूबी ऑन रेल्स?
जवाबों:
Django बुक के अनुसार , Django MVC पैटर्न को बारीकी से फॉलो करता है जिसे MVC फ्रेमवर्क कहा जाता है।
Django को MTV फ्रेमवर्क के रूप में संदर्भित किया गया है क्योंकि नियंत्रक को स्वयं फ़्रेमवर्क द्वारा नियंत्रित किया जाता है और अधिकांश उत्तेजना मॉडल, टेम्पलेट और विचारों में होती है।
आप एमटीवी / एमवीसी के बारे में अधिक यहाँ पढ़ सकते हैं:
एमटीवी (या एमवीसी) डेवलपमेंट पैटर्न
यदि आप अन्य MVC वेब-विकास रूपरेखाओं से परिचित हैं, जैसे कि रूबी ऑन रेल्स, तो आप Django के विचारों को नियंत्रक और Django टेम्पलेट्स को विचार मान सकते हैं ।
यह एमवीसी की अलग-अलग व्याख्याओं द्वारा लाया गया एक दुर्भाग्यपूर्ण भ्रम है।
एमवीसी के Django की व्याख्या में, दृश्य उपयोगकर्ता को प्रस्तुत किए जाने वाले डेटा का वर्णन करता है; यह जरूरी नहीं है कि डेटा कैसे दिखता है, बल्कि कौन सा डेटा प्रस्तुत किया गया है।
इसके विपरीत, रूबी ऑन रेल्स और इसी तरह के ढांचे का सुझाव है कि नियंत्रक की नौकरी में यह तय करना शामिल है कि कौन सा डेटा उपयोगकर्ता को प्रस्तुत किया जाता है, जबकि दृश्य कड़ाई से है कि डेटा कैसा दिखता है, कौन सा डेटा प्रस्तुत नहीं किया गया है।
Django FAQ अपने आप में एक आरंभिक स्थान है:
एमवीसी की हमारी व्याख्या में, "दृश्य" उस डेटा का वर्णन करता है जो उपयोगकर्ता को प्रस्तुत किया जाता है। यह जरूरी नहीं है कि डेटा कैसा दिखता है, लेकिन कौन सा डेटा प्रस्तुत किया गया है। दृश्य बताता है कि आप कौन सा डेटा देखते हैं, न कि आप इसे कैसे देखते हैं। यह एक सूक्ष्म अंतर है।
...
इसके अलावा, यह प्रस्तुति से सामग्री को अलग करने के लिए समझदार है - जो कि टेम्पलेट्स में आते हैं। Django में, "दृश्य" वर्णन करता है कि कौन सा डेटा प्रस्तुत किया गया है, लेकिन एक दृश्य सामान्य रूप से एक टेम्पलेट को दर्शाता है, जो बताता है कि डेटा कैसे प्रस्तुत किया गया है।
"नियंत्रक" कहाँ फिट बैठता है? Django के मामले में, शायद यह ढांचा ही है: जो मशीनरी Django URL कॉन्फ़िगरेशन के अनुसार उपयुक्त दृश्य के लिए अनुरोध भेजती है।
यदि आप समरूपता के लिए भूखे हैं, तो आप कह सकते हैं कि Django एक "MTV" ढांचा है - अर्थात, "मॉडल", "टेम्पलेट", और "दृश्य"। यह टूटना बहुत अधिक समझ में आता है।
ध्यान रखें कि "मॉडल व्यू कंट्रोलर" केवल एक पैटर्न है, अर्थात एक सामान्य वास्तुकला का वर्णन करने का प्रयास। तो एक बेहतर सवाल यह हो सकता है कि "Django मॉडल व्यू कंट्रोलर पैटर्न को कितनी अच्छी तरह फिट करता है?"
जब आप कोड करते हैं, तो फ्रेम के टुकड़ों के नाम के बारे में नहीं सोचते हैं, उदाहरण के लिए, RoR में कोई susbtantive अंतर नहीं हैं। लेकिन यह आपके द्वारा दिए गए उपयोग पर निर्भर करता है models
, क्योंकि Django पर वे आसानी से कुछ तर्क रखते हैं जो अन्य रूपरेखाओं पर नियंत्रक स्तर पर रहेंगे।
view
Django पर डेटा प्राप्त करने के लिए क्वेरी के एक सेट हो, और उन्हें टेम्पलेट को पारित करने के लिए जाता है।
views
Django में एक की तरह कुछ है controller
MVC में और एक template
Django में अधिक होने की संभावना एक हैviews
Mvt में, URL के लिए एक अनुरोध एक दृश्य में भेजा जाता है। यह दृश्य मॉडल में कॉल करता है, जोड़तोड़ करता है और आउटपुट के लिए डेटा तैयार करता है। डेटा एक टेम्प्लेट को पास किया जाता है जिसे एक प्रतिक्रिया के रूप में उत्सर्जित किया जाता है। आदर्श रूप से वेब फ्रेमवर्क में, कंट्रोलर व्यू से छिपा होता है।
यह वह जगह है जहां एमवीसी से अंतर होता है: एमवीसी में, उपयोगकर्ता गुई के साथ बातचीत करता है, नियंत्रक अनुरोध को संभालता है और मॉडल को देखता है और उपयोगकर्ता को परिणाम देखने के लिए मॉडल से पूछताछ करता है।