2009-08-17 8 views
22

मैं सिर्फ Django के माध्यम से अपना रास्ता काम कर रहा हूं, और वास्तव में इसे अब तक पसंद करता हूं, लेकिन मुझे कोई समस्या है और मुझे यकीन नहीं है कि इसे हल करने का सामान्य तरीका क्या है।Django एमवीसी पैटर्न?

मान लीजिए कि मेरे पास एक दृश्य है जिसे कुछ जटिल पायथन ऑब्जेक्ट अपडेट होने पर अपडेट किया जाना चाहिए, लेकिन यह ऑब्जेक्ट डेटाबेस द्वारा संचालित नहीं है, कहें कि यह AJAX कॉल या सीधे उपयोगकर्ता या किसी चीज़ द्वारा संचालित है।

यह कोड कहां जाता है? क्या यह अभी भी models.py ???? में जाना चाहिए

उत्तर

36

आपका models.py खाली (और कभी-कभी) खाली हो सकता है। आप एक मॉडल के लिए बाध्य नहीं हैं जो डेटाबेस में मैप करता है।

Django के व्यवस्थापक को खुश करने के लिए आपके पास अभी भी models.py फ़ाइल होनी चाहिए। models.py फ़ाइल का नाम महत्वपूर्ण है, और विभिन्न व्यवस्थापक आदेशों से अपेक्षित फ़ाइल को आज़माने और बदलने के बजाय एक खाली फ़ाइल रखना आसान है।

"मॉडल" - सामान्य रूप से - किसी डेटाबेस को मानचित्रण करने की आवश्यकता नहीं है। "मॉडल" - एमवीसी डिजाइन के एक सामान्य घटक के रूप में - कुछ भी हो सकता है।

आप अपने विचारों का उपयोग करने वाले अपने "मॉडल" मॉड्यूल को परिभाषित कर सकते हैं - और अक्सर करते हैं। बस इसे models.py पर कॉल न करें क्योंकि यह Django व्यवस्थापक को भ्रमित कर देगा। इसे अपने एप्लिकेशन के लिए सार्थक कुछ कहें: foo.py। यह foo.py वास्तविक चीज़ों का उपयोग करता है जो आपके आवेदन को कम करते हैं - जरूरी नहीं कि एक Django Model.model सबक्लास।

Django MVC डेटाबेस मैपिंग की आवश्यकता नहीं है। यह स्पष्ट रूप से अपेक्षा करता है कि models.py नामक मॉड्यूल में डेटाबेस मैपिंग है। तो, यदि आपके पास कोई वास्तविक डेटाबेस मैपिंग नहीं है तो खाली models.py का उपयोग करें।

आपका views.py उपयोग कर सकते हैं

import foo 

def index(request): 
    objects = foo.somelistofobjects() 
    *etc.* 

Django आप आसानी से कोई डेटाबेस मानचित्रण के साथ काम करने के लिए अनुमति देता है। आपका मॉडल आसानी से कुछ भी हो सकता है। बस इसे models.py पर कॉल न करें।


संपादित

क्या मॉडल मॉडल के साथ पंजीकृत हैं? सं।

नियंत्रक द्वारा मॉडल के अपडेट पर विचारों को अधिसूचित किया जाता है? सं।

क्या मॉडल सख्ती से डेटा का प्रतिनिधित्व है क्योंकि यह वास्तव में एमवीपी है? हाँ।

Django दस्तावेज़ पढ़ें। यह आसान है।

वेब अनुरोध -> यूआरएल मानचित्रण -> कार्य देखें -> टेम्पलेट -> प्रतिक्रिया।

मॉडल दृश्य दृश्य द्वारा उपयोग किया जा सकता है। मॉडल डेटाबेस मैपिंग हो सकता है, या यह कोई और चीज हो सकती है।

+0

आपका उत्तर सही हो सकता है या नहीं भी हो सकता है, मैंने Django का उपयोग नहीं किया है, और 2 साल बाद मैंने पाइथन का उपयोग किया है। लेकिन एमवीसी की अवधारणा के लिए वेब ढांचे के बारे में मुझे बिल्कुल नफरत है।कोई लोहे की आवश्यकता नहीं है कि एमवीसी प्रतिमान में मॉडल डेटा डेटाबेस से आता है। –

+0

मॉडल * डेटाबेस * से नहीं आता है। हम इसे हमारे Django अनुप्रयोगों में करते हैं। हमारे कुछ ऐप्स में ऐसे मॉडल हैं जो डेटाबेस में नहीं हैं। –

+3

पर्याप्त मेला लेकिन स्पष्ट रूप से आपको ऐसा करने के लिए काम करना है जो ऐसा करने के लिए Django में मानक नहीं है। और निश्चित रूप से मैंने इसे अन्य ढांचे के साथ भी देखा है। मुझे लगता है कि उन्होंने सभी "मॉडल वर्ग" की धारणा को पेश करके प्रभावशाली, कम अनुभव वाले वेब डेवलपर्स के लिए एक गैर-सेवा की है। ज्यादातर समय ये वास्तव में * इकाई * कक्षाएं हैं। मैं यह भी सहमत नहीं हूं कि मॉडल वर्ग जैसे कुछ होना चाहिए, मॉडल अबास्ट्रक्शन के उच्च स्तर पर भी है। एक मॉडल का मुखौटा शायद, लेकिन मॉडल कक्षाएं, नहीं। वैसे भी, यह मेरा पालतू शिखर है और मुझे लगता है कि मैं एक एमवीसी purist या कुछ हूँ। –

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