मैं अपना पहला फ्लास्क ऐप बना रहा हूं और मैं अपने आवेदन को व्यवस्थित करने का एक अच्छा, साफ पायथनिक तरीका नहीं समझ सकता। मैं अपने उदाहरण में एक ही .py फ़ाइल में सबकुछ नहीं रखना चाहता हूं। मैं अपने ऐप के प्रत्येक भाग को एक अलग मॉड्यूल में रखना चाहता हूं। चीजों को व्यवस्थित करने का एक अच्छा तरीका क्या होगा?अपेक्षाकृत बड़े फ्लास्क एप्लिकेशन को व्यवस्थित करने के लिए कैसे?
उत्तर
मैं "Fbone" नामक एक बोतल बॉयलरप्लेट परियोजना, कृपया इसे बाहर की जाँच करने के लिए स्वतंत्र लग रहा है और कांटा :)
Fbone (बोतल की हड्डी) एक बोतल (अजगर microframework) टेम्पलेट/बूटस्ट्रैप/बॉयलरप्लेट अनुप्रयोग है बनाया है।
अवलोकन
- खैर खाका का उपयोग कर बड़ा परियोजना के लिए बनाया गया है।
- हॉट फ्रंटेंड फ्रेमवर्क के साथ एकीकृत करें: jQuery/html5boilerplate/बूटस्ट्रैप।
- प्रसिद्ध SQLalchemy द्वारा समर्थित।
- फ्लास्क-लॉगिन द्वारा मुश्किल "मुझे याद रखें" लागू करें।
- फ्लास्क-wtform द्वारा वेब फॉर्म हैंडल करें।
- फ्लास्क-परीक्षण और नाक के साथ यूनिट परीक्षण।
- आसानी से कपड़े और mod_wsgi (उदाहरण शामिल) के माध्यम से तैनात।
- i18n कुप्पी के कोलाहल से
btw, मैं सिर्फ इस wiki बोतल उपयोगी के साथ एक बड़ी परियोजना के निर्माण पर पाया, कृपया यह जाँच!
भयानक बॉयलरप्लेट, अच्छा काम! –
वास्तव में इस तरह। धन्यवाद! – jdsantiagojr
रीडमे में विस्तृत रूप से 'fab d' चलाने से पहले, आपको 'वर्चुअल एनवी/बिन/एक्टिवेट' – JRG
फ्लास्क 0.7 लागू Blueprints। मुख्य अनुप्रयोग ऑब्जेक्ट आयात किए बिना route
सजावट का उपयोग करने के लिए वे बहुत अच्छे हैं।
एक मॉड्यूल से ब्लूप्रिंट अलग कैसे है? – dcolish
तकनीकी रूप से, ब्लूप्रिंट ब्लूप्रिंट क्लास का एक उदाहरण है। वे एक या अधिक मॉड्यूल का विस्तार कर सकते हैं, या कई ब्लूप्रिंट एक ही मॉड्यूल में सह-अस्तित्व में हो सकते हैं। ब्लूप्रिंट के मॉड्यूल या पैकेज को जानने के लिए दृश्यों के पीछे कुछ जादू है, ताकि 'टेम्पलेट्स' और 'स्थिर' फ़ोल्डरों को ढूंढ सकें। –
मैंने अपने फ्लास्क हड्डी प्रोजेक्ट में ब्लूप्रिंट को एकीकृत किया है, मेरे उत्तर pls देखें। – imwilsonxu
मैं बड़े फ्लास्क प्रोजेक्ट (पाइथन कोड की 5000 लाइनें और यह केवल आधे-समाप्त) पर काम कर रहा हूं। ग्राहक परियोजना मॉड्यूलर बनना चाहता है, तो मैं इस apporach ले लिया:
मेरे फ़ोल्डर संरचना इस तरह दिखता है:
├── __init__.py
├── modules.yml
├── config
├── controllers
│ └── ...
├── lib: Common functions I use often
│ └── ...
├── models
│ └── ...
├── static: All static files
│ ├── css
│ ├── img
│ └── js
└── templates: Jinja2 templates
└── ...
modules.yml
में मैं नाम और URL सहित मेरी मॉड्यूल परिभाषित करते हैं। इस तरह से ग्राहक एक पाइथन फ़ाइल को छूए बिना मॉड्यूल को सक्षम/अक्षम करने में सक्षम है। इसके अलावा, मैं मॉड्यूल सूची के आधार पर मेनू उत्पन्न करता हूं। सम्मेलन के अनुसार प्रत्येक मॉड्यूल में controllers/
में इसका अपना पायथन-मॉड्यूल होता है जो को models/
से लोड करेगा। प्रत्येक नियंत्रक Blueprint
को नियंत्रक के नाम के रूप में संग्रहीत करता है। जैसे एक user
मॉड्यूल के लिए, मैं controllers/user.py
में है:
# Module name is 'user', thus save Blueprint as 'user' variable
user = Blueprint('user', __name__)
@user.route('/user/')
def index():
pass
इस तरह, मैं अपने __init__.py
और भार में modules.yml
पढ़ सकते हैं और रजिस्टर सभी सक्षम मॉड्यूल गतिशील कर सकते हैं:
# Import modules
for module in modules:
# Get module name from 'url' setting, exculde leading slash
modname = module['url'][1:]
try:
# from project.controllers.<modname> import <modname>
mod = __import__(
'project.controllers.' + modname, None, None, modname
)
except Exception as e:
# Log exceptions here
# [...]
mod = getattr(mod, modname) # Get blueprint from module
app.register_blueprint(mod, url_prefix=module['url'])
मुझे आशा है कि, इस किया जा सकता है आपके लिए कुछ प्रेरणा :)
आप अपनी टेस्ट फाइलें कहां डालते हैं? – Alp
ऊपर वर्णित संरचना वास्तव में प्रोजेक्ट नाम ('project_name /') के साथ एक उपनिर्देशिका है। एक 'परीक्षण/'फ़ोल्डर और एक' स्क्रिप्ट/'फ़ोल्डर (निष्पादन योग्य स्क्रिप्ट के लिए) भी है।'परीक्षण /' के लिए उत्तर में समान संरचना का उपयोग करने के लिए चालाक होगा: मॉडल परीक्षणों के लिए 'परीक्षण/मॉडल /', नियंत्रक परीक्षणों के लिए 'परीक्षण/नियंत्रक /', आप इसे नाम दें। संरचना को बनाए रखने के लिए उसे कुछ ओवरहेड की आवश्यकता होगी लेकिन आपको आवश्यक फाइलों को ढूंढना बहुत आसान होगा। – msiemens
इस विषय पर मैट राइट के wonderful post पढ़ने के लिए सुनिश्चित करें।
पद विशेषताएं:
बड़े कुप्पी परियोजनाओं
सामान्य में सबसे अच्छा डिजाइन प्रथाओं का वर्णन के लिए एक संरचना का वर्णन है जब यह बड़ी बात आती है वेब ऐप्स, एमवीसी पैटर्न, ऐप कारखानों, सेवाओं और डेटा माइग्रेशन जैसे कुछ (सबसे दिलचस्प फीचर आईएमएचओ) नाम।
मैं एक बोतल एप्लिकेशन खरोंच से yapper बनाया है और दोनों दृश्यपटल और बैकएंड विकास के लिए घूंट के साथ यह एकीकृत किया है। यह एक साधारण ब्लॉग इंजन है लेकिन आवश्यकताओं के अनुसार विकास के लिए आसानी से संशोधित किया जा सकता है। यह Blueprints का उपयोग कर अच्छी तरह से संरचित है।
चेकआउट परियोजना पृष्ठ yapper
मैं बोतल के ऊपर एक बने एक सामाजिक नेटवर्क पर काम किया। मेरी परियोजना के बारे में विशेष बात यह थी कि सर्वर पूरी तरह से एपीआई एंडपॉइंट्स की सेवा कर रहा है और फ्रंटएंड एक पेज बैकबोन ऐप है। बोतल संरचना मैं ले लिया निम्नलिखित है:
├── app │ ├── api
│ │ ├── auth.py │ │ └── ... │ ├── app.py │ ├── common │ │ ├── constants.py │ │ ├── helpers.py │ │ ├── response.py │ │ └── ... │ ├── config.py │ ├── extensions.py │ ├── frontend │ │ └── controllers.py │ ├── static │ │ └── ... │ ├── templates │ │ ├── app.html │ │ └── ... │ └── users │ ├── UserConstants.py │ ├── UserForms.py │ ├── UserHelpers.py │ ├── UserModels.py │ └── __init__.py ├── alembic | ├── version │ └── ... ├── tests │ └── ...
आप अधिक गहराई के बाद मैं विषय here पर लिखा पढ़ सकते हैं। मैंने इसे अपने स्वयं के फ़ोल्डर में अलग-अलग कार्यात्मक क्षेत्रों को अलग करने के लिए और अधिक सहज महसूस किया।
मैंने कुछ समय पहले कोड पर काम किया और इसे पूरी तरह से सोर्स किया! आप इसे on github देख सकते हैं।
धन्यवाद। अच्छा लगता है। – daniels
- 1. बड़े जावाएफएक्स 2.0 एप्लिकेशन में नियंत्रकों/प्रस्तुतकर्ताओं को व्यवस्थित करने के लिए कैसे?
- 2. फ्लास्क एप्लिकेशन
- 3. कैसे बड़े (बड़े) विभाजन को कार्यान्वित करने के लिए?
- 4. कक्षाओं को व्यवस्थित करने के लिए, पैकेज
- 5. मेरी spec फ़ाइलों को व्यवस्थित करने के लिए कैसे?
- 6. बड़े जावा एप्लिकेशन में लॉगिंग को मानकीकृत करने के तरीके
- 7. रेल ऐप को व्यवस्थित करने के लिए कैसे करें
- 8. UITableView को पुन: व्यवस्थित करने के लिए कैसे करें?
- 9. पायथन स्रोत कोड फ़ाइलों को व्यवस्थित करने के लिए कैसे?
- 10. MySQL: कैसे "को पुन: व्यवस्थित करने के लिए" एक मेज
- 11. ASP.NET app_code फ़ोल्डर को व्यवस्थित करने के लिए कैसे करें?
- 12. मेरे सी कोड को व्यवस्थित करने के लिए कैसे करें
- 13. सी # कक्षाओं को व्यवस्थित करने के लिए कैसे करें
- 14. सी ++ प्रोजेक्ट को व्यवस्थित करने के लिए कैसे करें
- 15. ककड़ी में चश्मा परिभाषा को व्यवस्थित करने के लिए कैसे?
- 16. यूनिट परीक्षण फ्लास्क एप्लिकेशन क्लास
- 17. आप फ्लास्क एप्लिकेशन को कैसे डिमननाइज़ करते हैं?
- 18. मुझे अपने फ्लेक्स एप्लिकेशन को व्यवस्थित कैसे करना चाहिए?
- 19. वेब अनुप्रयोगों को व्यवस्थित करने के लिए जावास्क्रिप्ट प्रोग्रामिंग मॉडल
- 20. प्रोग्रामिंग को व्यवस्थित रूप से आयात करने के लिए कॉलिंग
- 21. फ्लास्क
- 22. फ्लास्क-एसक्यूएलकेमी को फ्लास्क-रेस्टलेस
- 23. कैसे python27 एप्लिकेशन इंजन webapp2 ढांचे के साथ फ़ाइलों को व्यवस्थित करने
- 24. पाइथन एप्लिकेशन को मॉड्यूलर करने के लिए कैसे करें
- 25. पाइथन के लिए फ्लास्क - सिस्टम
- 26. फ़ोल्डर में एंड्रॉइड स्रोत कोड को व्यवस्थित करने के लिए
- 27. एप्लिकेशन शॉर्टकट के लिए बड़े आइकन का उपयोग करने के लिए मैं Google क्रोम को कैसे बता सकता हूं?
- 28. एप्लिकेशन को स्वयं को नष्ट करने के लिए कैसे?
- 29. विंडोज़ पर फ्लास्क एक्सटेंशन देखने के लिए एक्लिप्स/pydev को खुश करने के लिए कैसे?
- 30. एक फ्लास्क चलने वाले वेब एप्लिकेशन
मुझे यहां समझाया गया लेआउट पसंद है: http://flask.pocoo.org/docs/patterns/packages/ – obmarg
वहां वे परिपत्र आयात का उपयोग कर रहे हैं जिन्हें मैं टालना चाहता हूं। – daniels
सच है, लेकिन मुझे नहीं लगता कि यह ऐप। रूट सजावट का उपयोग करना चाहते हैं तो यह टालने योग्य है। – obmarg