2011-12-12 28 views
5

क्या WTForms के आधार पर फ्लास्क के लिए कोई सामान्य CRUD व्यवस्थापक है?WTForms के साथ फ्लास्क के लिए जेनेरिक सीआरयूडी व्यवस्थापक?

वर्तमान में हम एक हाइब्रिड बैकएंड सिस्टम बना रहे हैं जहां व्यवस्थापक को विभिन्न स्रोतों, मोंगोडीबी, रेडिस, आईएनआई फ़ाइल, एनवीरॉन इत्यादि से बहुत सारे डेटा सीआरयूडी करना चाहिए। उनमें से प्रत्येक के लिए विशिष्ट व्यवस्थापक दृश्य लिखना समय की बर्बादी लगता है, लेकिन सभी फ्लास्क व्यवस्थापक या WTForms व्यवस्थापक समाधान कुछ प्रकार के निश्चित ORM, उदाहरण के आधार पर हैं मोंगोइंजिन, एपइंजिन डेटास्टोर, स्क्लेक्केमी, आदि

क्या कोई और सामान्य जेनरेट है जो ओआरएम-अज्ञेयवादी व्यवस्थापक को स्वचालित रूप से जेनरेट करने की अनुमति देता है?

मैं इसे आइटम के एक समूह के लिए निम्नलिखित कार्य

  • सूची दृश्य प्रदान करने के लिए, इनलाइन संपादन या बैच कार्रवाई बहुत अच्छा होगा समर्थन की जरूरत है!
  • के लिए जोड़ें/संपादित

एक विशिष्ट आइटम के लिए

  • संपादित दृश्य बस, किसी न किसी रूप मॉडल को परिभाषित एक यात्रा विधि को लागू करने और ऑटो एक पूर्ण विकसित व्यवस्थापक उत्पन्न करते हैं।

    क्या इस तरह की कोई पुन: प्रयोज्य ओएसएस परियोजनाएं हैं?

  • +0

    बहुत मुश्किल कुछ सॉफ्टवेयर है कि एक दस्तावेज के अनुसार आधार पर अपने दस्तावेजों में लेता है, और बनाने के लिए नहीं होना चाहिए, प्रत्येक दस्तावेज़ (किया जा रहा है प्रत्येक दस्तावेज़ डेटा के विभिन्न सेट हो सकता है के लिए एक WTForm वर्ग उत्पन्न करता है उन पर भी अगर वे समान वस्तुओं का प्रतिनिधित्व करने के लिए हैं - नो-एसक्यूएल और सभी की लचीलापन ...)। फिर आप फ्लास्क में एक ब्लूप्रिंट का उपयोग एक व्यू फ़ंक्शन पंजीकृत करने के लिए कर सकते हैं जो किसी ऑब्जेक्ट को पकड़ लेता है, फॉर्म उत्पन्न करता है और उपयोगकर्ता को फॉर्म प्रदर्शित करता है। आत्मनिरीक्षण करने के लिए आपको किस प्रारूप विजेट और सत्यापन की आवश्यकता है, वह मुश्किल हिस्सा होगा, जैसा कि नीचे दिया गया उत्तर इंगित करता है। – tkone

    उत्तर

    2

    संक्षिप्त उत्तर नहीं है, जहां तक ​​मुझे पता है, रेडिस या मोंगोडीबी के लिए कोई ऑटो-जनरेटिंग ओआरएम नहीं है।

    एक अधिक विस्तृत विवरण के लिए अब:

    कारण है कि वहाँ मुक्त रूप रिकॉर्ड में आधारित 'तय' ORM की और नहीं डेटा संग्रहों के लिए CRUD पीढ़ी मौजूद है सरल है: मुक्त रूप रिकॉर्ड के स्वभाव में यह कठिन बना देता है एक स्कीमा बनाने के लिए।

    उदाहरण के लिए रेडिस देखें, प्रत्येक रिकॉर्ड एक हैश उदा। कुंजी 'उपयोगकर्ता- {आईडी}' फ़ील्ड उपयोगकर्ता नाम, आयु, और पंजीकृत_ऑन के साथ। अब, जब आप उपयोगकर्ताओं को नया फ़ील्ड 'स्थान' जोड़ते हैं तो क्या होता है? खैर, रेडिस परवाह नहीं है, आप किसी भी रिकॉर्ड में फ़ील्ड को संशोधित करते समय जोड़ते हैं, वापस जाने की आवश्यकता नहीं है और हर हैश में फ़ील्ड जोड़ना है। काफी सरल।

    लेकिन अब, आपके पास सीआरयूडी जादू है, जो यह जानने की कोशिश करता है कि कौन से फ़ील्ड दिखाना है। मान लें कि आप कौन से फ़ील्ड मौजूद हैं, यह देखने के लिए पहले रिकॉर्ड को देखने का निर्णय लेते हैं, लेकिन क्या होगा यदि उपयोगकर्ता -1 में नया 'स्थान' फ़ील्ड गुम है? अब सीआरयूडी इसे उत्पन्न नहीं करेगा।

    इसके अलावा, क्योंकि रेडिस प्रत्येक मान को स्ट्रिंग के रूप में संग्रहीत करता है, इसलिए सीआरयूडी नहीं जानता कि 'आयु' उदाहरण के लिए केवल एक पूर्णांक स्वीकार करता है और पंजीकृत_ऑन वास्तव में एक आईएसओ-स्वरूपित दिनांक स्ट्रिंग है।

    ओह, लेकिन आप कहते हैं, मोंगोडीबी में डेटाटाइप हैं! निश्चित रूप से, मानते हुए कि हम प्रति रिकॉर्ड भत्ता के विभिन्न क्षेत्रों को अनदेखा करते हैं, नाटक करते हुए कि हमारे पास रिकॉर्ड प्रति फ़ील्ड का एक ही सेट है, तो वहां कुछ स्वचालित सीआरयूडी करना संभव है? खैर हाँ, आप रेडिस के मुकाबले थोड़ा बेहतर कर पाएंगे, क्योंकि उदाहरण है एक तिथि प्रकार और पूर्णांक प्रकार, लेकिन तब भी कुछ विसंगतियां हैं। मान लें कि आपके पास स्ट्रिंग मान है। आपको कैसे पता चलेगा कि उस स्ट्रिंग मान को बहु-लाइन इनपुट (टेक्स्टरेरा) या सिंगल-लाइन (इनपुट प्रकार = टेक्स्ट) की आवश्यकता होती है, या यहां तक ​​कि केवल कुछ विकल्पों के ड्रॉप-डाउन चयन से ही उपलब्ध है?

    इस वजह से, कई मुक्त-प्रकार के प्रकारों के लिए वास्तव में सैद्धांतिक सीआरयूडी करने का एकमात्र तरीका यह होगा कि यदि आपने प्रत्येक रिकॉर्ड के लिए पहले से 'स्कीमा' (एक फॉर्म परिभाषा के माध्यम से) परिभाषित किया है, और शायद कुछ लागू किया गया हो इंटरफ़ेस क्लास/कॉन्ट्रैक्ट की तरह जिसने सीआरयूडी उपकरण को ऑब्जेक्ट्स को पुनर्प्राप्त करने के लिए रिकॉर्ड्स सूचीबद्ध करने, कुंजी द्वारा एक रिकॉर्ड पुनर्प्राप्त करने, रिकॉर्ड बनाने/बनाने के लिए रिकॉर्ड करने और कुंजी द्वारा एकल रिकॉर्ड हटाने की अनुमति दी।

    इस तरह के एक सैद्धांतिक 'प्लग करने योग्य' सीआरयूडी उपकरण वास्तव में अच्छा होगा, और मुझे किसी को इसे देखने के लिए देखना अच्छा लगेगा।

    +0

    उत्तर के लिए धन्यवाद। "क्या होगा यदि आपने पहले से ही 'स्कीमा' (एक फॉर्म परिभाषा के माध्यम से?) के रूप में परिभाषित किया था)" यह वही है जो मेरा मतलब था। मैं सीआरयूडी विधियों के साथ एक फॉर्म (उर्फ स्कीमा और डेटा प्रकार) को पूर्वनिर्धारित करता हूं, फिर स्वतः प्रमाणित व्यवस्थापक उत्पन्न करता है। – est

    3

    मैं की जांच निम्नलिखित सुझाव है:

    https://github.com/sbook/flask-mongoengine

    https://github.com/coleifer/flask-peewee

    आप sbook की कुप्पी के mongoengine और इसे करने के लिए कुप्पी के peewee से बंदरगाह coleifer के व्यवस्थापक लग सकता है। मुझे कल्पना नहीं है कि यह बहुत मुश्किल होगा। कोलिफर के व्यवस्थापक को ट्विटर-बूटस्ट्रैप के उपयोग के लिए अतिरिक्त अंक मिलते हैं और मैं आपको बता सकता हूं कि वह मुद्दों के प्रति बहुत उत्तरदायी है।

    मैंने फ्लास्क पर मोन्गेंगिन के साथ काम किया है और फ्लास्क-पेवी और दोनों उत्कृष्ट हैं।

    +0

    युक्तियों के लिए धन्यवाद, लेकिन ओआरएम-अज्ञेयवादी का बिंदु स्कीमा-कम डेटा, जैसे के-वी डीबी, जेसन इत्यादि के शीर्ष पर व्यवस्थापक बनाना है। पेवी और मोंगोडीबी ने बैकएंड तय किए हैं। – est

    +0

    मुझे यकीन नहीं है कि जब आप कहते हैं कि मोंगोडीबी ने "निश्चित बैकएंड" कहा है तो आपका क्या मतलब है? आप जो वर्णन करते हैं, उसके लिए आप minimongo को देखना चाह सकते हैं: https://github.com/slacy/minimongo यह wtform या flatland फ़ील्ड को minattongo के साथ setattr/getattr में लपेटने के लिए हल्का काम होगा। एक विचार है। –

    +0

    मेरा मतलब है कि फ्लास्क-मोंगोएन्गिन मोंगोडीबी के साथ तय बैकएंड है। मुझे मोंगोडीबी के आस-पास एक एक्सेस रैपर की आवश्यकता नहीं है, मुझे हाइब्रिड बैकएंड के लिए स्वचालित उत्पन्न CRUD व्यवस्थापक की आवश्यकता है। – est

    4

    मुझे पता है कि यह एक पुराना सवाल है, लेकिन आजकल फ्लास्क-एडमिन उपलब्ध है और यह बहुत ही बढ़िया है। डेटा के भंडारण/प्रसंस्करण के लिए अपने स्वयं के हैंडलर लिखने के लिए बहुत प्लग करने योग्य और आसान है।

    http://flask-admin.readthedocs.org/en/latest/quickstart/#model-views