2012-09-22 21 views
5

क्या फ्लास्क फ्रेमवर्क स्वाभाविक रूप से एमवीसी पैटर्न का समर्थन करता है? मुझे एक मॉडल के रूप में क्या विचार करना चाहिए, एक दृश्य के रूप में और नियंत्रक के रूप में क्या करना चाहिए?फ्लास्क-फ्रेमवर्क: एमवीसी पैटर्न

आमतौर पर (मेरे अनुभव में) एक बोतल एप्लिकेशन इस तरह दिखता है:

main_dir--| 
      | 
     app1--| 
      | | 
      | __init__.py 
      | api.py 
      | models.py 
      | 
     static--| 
      |  | 
      | all the static stuff 
      | 
     app.py # with blueprints registering 
+0

इस सुझाव को भी देख सकते हैं। https://github.com/salimane/flask-mvc – wenzul

+0

अरे @ वेनज़ुल मॉडल सीधे दृश्य को अपडेट करने के लिए डेटा साबित होता है, लेकिन दृश्य के ऊपर वह उदाहरण लिंक लिंक को 'flask.flash' पर कॉल करके अपडेट किया जा रहा है जो ट्यूनर्स अपडेट में 'layout.html' टेम्पलेट। –

उत्तर

8

बोतल वास्तव में एक MVC ढांचे नहीं है। यह एक सरल ढांचा है जो आपको अपने आवेदन की संरचना के तरीके में बहुत आजादी देता है, लेकिन फ्लास्क प्रदान करने के लिए एमवीसी पैटर्न बहुत अच्छा फिट है।

अनिवार्य रूप से आप अपने तरीकों कोई दृश्य या मॉडल वहाँ लिखने और उन्हें विशिष्ट मार्ग के लिए नक्शे, उदा .:

@app.route("/") 
def hello(): 
    return "Hello World!" 

, जैसा कि आप देख सकते हैं। हालांकि, यह भी, Jinja2 टेम्पलेट लायब्रेरी के ऊपर एक बने तो एक यथार्थवादी अनुप्रयोग में, अपने विधि (जो एक नियंत्रक के रूप में कार्य करता है) की तरह लग रहा है:

@app.route("/") 
def hello(): 
    return render_template('index.html', username="John Doe") 

यहाँ, आप पेज रेंडर करने के लिए index.html टेम्पलेट का उपयोग करें। यह अब आपका विचार है।

फ्लास्क किसी भी मॉडल को निर्धारित नहीं करता है। आप जो कुछ भी चाहते हैं उसका उपयोग कर सकते हैं - जटिल ऑब्जेक्ट मॉडल (आमतौर पर कुछ ओआरएम जैसे स्क्लाक्लेमी का उपयोग करने के साथ) अपनी आवश्यकताओं के अनुरूप सबसे सरल चीज के लिए।

और वहां आपके पास यह है: एमवीसी