2010-07-07 18 views
36

मुझे एक फॉर्म सत्यापन पुस्तकालय चाहिए जोपायथन फॉर्म सत्यापन पुस्तकालय के लिए सिफारिश

1. फ़ॉर्म सत्यापन से अलग HTML पीढ़ी;

2. प्रमाणीकरण त्रुटियों को आसानी से क्रमबद्ध किया जा सकता है, उदाहरण के लिए। एक जेसन ऑब्जेक्ट के रूप में डंप किया गया

एक पायथन वेब प्रोजेक्ट में आप किस फॉर्म सत्यापन लायब्रेरी का चयन करेंगे?

+9

इस प्रश्न से 2 साल पहले पूछा गया था और उत्तर दिया गया था और वहां से कोई भी "अनुरोध बहस, तर्क, मतदान या विस्तारित चर्चा" में से कोई भी नहीं है जिसे आपने कहा था "संभावना" होगी। शायद थोड़ा अति उत्साही? –

उत्तर

1

यह wheather पर निर्भर करता है, और फिर, आप किस प्रकार का ढांचा उपयोग करते हैं।

अपने काम के लिए, मैं आपको web2py-Framework का उपयोग करने की सलाह दूंगा, जिसका उपयोग करना आसान है और अभी भी "शक्तिशाली" है। इसमें form-validation by default (web2py-book नि: शुल्क है), यह वही है जो आप चाहते हैं: यह एचटीएमएल पीढ़ी को सत्यापन से अलग करता है और यह स्वचालित रूप से करता है, लेकिन यदि आप चाहें तो इसे अनुकूलित कर सकते हैं।

एक उदाहरण:

def display_form(): 
    form=FORM('Your name:', 
       INPUT(_name='name', requires=IS_NOT_EMPTY()), 
       INPUT(_type='submit')) 
    if form.accepts(request.vars, session): 
     response.flash = 'form accepted' 
    elif form.errors: 
     response.flash = 'form has errors' 
    else: 
     response.flash = 'please fill the form' 
    return dict(form=form) 

यह भी त्रुटियों को क्रमानुसार करने संभव है, लेकिन उन प्रश्नों के लिए यह सबसे अच्छा web2py-group पर उन्हें पूछने के लिए है। वे बहुत अच्छे हैं और आपको बहुत तेज़ी से मदद करेंगे।

उम्मीद है कि यह मदद करता है! सबसे अच्छा संबंध ..

+0

@ Satoru.Logic उत्तर के लिए -1 के लिए धन्यवाद, मैं अपना समय बिताता हूं .. वैसे भी, समझाएं कि "web2py sucks" के साथ आपका क्या मतलब है? – Joschua

+0

>। <क्योंकि मैं एक विरासत प्रणाली से पीड़ित हूं जो web2py के साथ बनाया गया है। Web2py में, अंतर्निहित स्पष्ट से अधिक आम है, बस उन सभी वैश्विक चर के बारे में सोचें ... web2py फ़ाइल-आधारित 'सत्र' इतना विविध है, और मुझे किसी अन्य सत्र कार्यान्वयन के लिए बदलने का कोई आसान तरीका नहीं दिखाई देता। .. – satoru

+0

आपको क्यों लगता है, आपको 'session'-variable का उपयोग करना होगा? अन्यथा भी db.py में सेट हैं, लेकिन आप उन्हें हटा सकते हैं, जैसे उदा। डीबी, ऑथ, क्रूड, सर्विस, मेल। – Joschua

0

यह आपके द्वारा उपयोग किए जाने वाले अंतर्निहित ढांचे पर निर्भर करता है।

Django के लिए

, प्रपत्र ढांचे में बनाया गया सबसे अच्छा है,

जबकि Kay पत्रिका के रूप

प्रणाली और tipfy के विस्तारित संस्करण का उपयोग करता है WTForms उपयोग करता है।

डीजेंगो का सिस्टम में निर्मित अब तक का सबसे अच्छा है।

हुड के नीचे आप किस ढांचे का उपयोग करते हैं?

+1

धन्यवाद। मैं वर्तमान में डीजेगो के रूप में निर्मित रूपरेखा का उपयोग कर रहा हूं। बस सोच रहा है कि क्या कोई अन्य फॉर्म लाइब्रेरी है जिसे मैं कोशिश कर सकता हूं। – satoru

+1

यदि आपके पास विशिष्ट आवश्यकता है, तो मैं ढांचे में निर्मित विस्तार की अनुशंसा करता हूं, मैंने कई कोशिश की है लेकिन कुछ भी django धड़कता है। – iamgopal

41

अस्वीकरण

सामान्यतया मैं HTML प्रपत्र पुस्तकालयों के बारे में थोड़ा सावधान कर रहा हूँ। यदि आप मेगा-फ्रेमवर्क से कुछ उपयोग करते हैं, तो आपको हमेशा अपनी निर्भरता के रूप में पूरे मेगा-फ्रेमवर्क को लाने की ज़रूरत है।

कई मेगा-फ्रेमवर्क के कई उप-घटक ढांचे पर निर्भर नहीं होने का दावा करते हैं लेकिन चलो खुद को बच्चा नहीं देते हैं। यदि आप एक का उपयोग नहीं करते हैं, तो कम से कम एक दर्जन रूप पुस्तकालय हैं जिन्हें मैं क्षमताओं में भिन्नता के साथ वहां से बाहर जानता हूं। बस अकेले विकल्प काफी भ्रमित हो सकते हैं। आम तौर पर, इयान बेकिंग says कई साल पहले और अभी भी सच है, मुझे लगता है कि एक फॉर्म लाइब्रेरी की धारणा जो सभी को उपयुक्त बनाती है वह काफी लुभावनी है। असल में मैं तर्क दूंगा कि आपको वास्तव में एक की आवश्यकता होने से पहले दो बार सोचना होगा। संभावना है कि आपको उस समय की आवश्यकता है जब आपको FormEncode जैसे फॉर्म सत्यापन लायब्रेरी की आवश्यकता हो। यह वास्तव में इस बात पर निर्भर करता है कि आप इसका उपयोग कैसे करना चाहते हैं।

मेरे लिए, चूंकि मैं मेगा-फ्रेमवर्क का उपयोग नहीं करता, इसलिए मैं कुछ हल्का वजन, चुनने और कॉन्फ़िगर करने में आसान चुनता हूं, और ऐसा कुछ जो HTML के सामान्य उपयोग के रास्ते में नहीं मिलता है/जे एस/सीएसएस।

अंत अस्वीकरण

मैं ToscaWidgets, ToscaWidgets 2, Formish, Deform, WTForms और FormEncode कोशिश की है। मुझे कहना है कि उनमें से कोई भी सही के पास कहीं भी नहीं है। यहां उनके साथ मेरा अनुभव है:

  • टोस्काविड्जेट्स, टोस्काविजेट्स 2 - बेहद शक्तिशाली, लेकिन यह भी बेहद जटिल है। ToscaWidgets 2 बहुत बेहतर है लेकिन यह अभी भी काफी अल्फा एटीएम है। सेटअप करने के लिए इसमें निंजा कौशल का थोड़ा सा हिस्सा लगता है और जब भी आपको डिफ़ॉल्ट टेम्पलेट्स को कस्टमाइज़ करने की आवश्यकता होती है तो आपका कोड काफी तेज़ हो जाता है।
  • फॉर्मिश/विकृत - लगभग TW जितना शक्तिशाली लेकिन फॉर्मिश अब निष्क्रिय है। यह माको के लिए काफी कसकर बंधे हैं, इसलिए यदि आप मको का उपयोग नहीं करते हैं, तो शायद यह आपके लिए नहीं है। विकृति फॉर्मिश का एक पुनर्लेख है लेकिन यह ज़ोपे निर्भरताओं के टन में लाता है। जेएमपीटी के अलावा अन्य टेम्पलेटिंग भाषाओं का समर्थन करने के मामले में गिरगिट अभी भी काफी नहीं है। ये 2 पुस्तकालय भी सेटअप करने के लिए विशेष रूप से आसान नहीं हैं।
  • WTForm - बहुत आसान, आपके रास्ते में नहीं मिलता है और यह विकास के मामले में बहुत सक्रिय है। यह उपर्युक्त पुस्तकालयों के रूप में कहीं भी शक्तिशाली नहीं है लेकिन यह आम तौर पर 80% उपयोग मामलों का ख्याल रखता है जो आप सामना कर सकते हैं, इसलिए यह काफी अच्छा है।
  • फॉर्मएनकोड - 2005 से ट्राइड-एंड-सच। इसकी अच्छी तरह से परीक्षण, प्रीबिल्ट वैधताओं की सबसे बड़ी संख्या के साथ आता है, सशर्त सत्यापन का समर्थन करता है, और दर्जनों भाषाओं में उपयोगी त्रुटि संदेश का समर्थन करता है। इसमें मूल्यों और त्रुटि संदेशों के साथ पूर्वनिर्धारित HTML में फॉर्म कोड जेनरेट करने की एक बहुत ही सरल लेकिन केंद्रित क्षमता भी है। इसके नुकसान में कभी-कभी गैर-सहज ज्ञान युक्त एपीआई और इसकी बिल्कुल स्पैगेटी जैसी आंतरिक कोड शामिल होती है। हालांकि यह पुस्तकालय काफी भरोसेमंद है और सभी डेटा सत्यापन उपयोग मामलों में बहुत अच्छी तरह से फिट बैठता है और यह वह है जिसे मैं हमेशा वापस आ जाता हूं।

2012 के अंत तक, एक पाइथन सत्यापन पुस्तकालय के लिए एक त्वरित Google और पीईपीआई खोज सैकड़ों पैकेजों के साथ वापस आती है। एक दर्जन से अधिक उल्लेखनीय हैं, जो उन Django एक्सटेंशन को छूट देते हैं, जो सक्रिय विकास में हैं। JSON-Schema का उपयोग करके स्कीमा को परिभाषित करने और पाइथन डेटा संरचनाओं को सामान्य रूप से सत्यापित करने में सक्षम होने की प्रवृत्ति प्रतीत होती है। यह संभवतः सर्वर अनुप्रयोग डेवलपर्स के एकाधिक चैनलों (रीस्टफुल एपीआई और एचटीएमएल फॉर्म) से उपयोगकर्ता डेटा को स्वीकार करने के प्रतिबिंब का प्रतिबिंब है, लेकिन केवल एक सत्यापन पुस्तकालय का उपयोग करना चाहते हैं।

पायथन 3.3 की रिहाई को देखते हुए पाइथन 3.x का समर्थन करने के लिए मौजूदा पुस्तकालयों को बंद करने की दिशा में भारी आंदोलन की संभावना होगी (इसका फ्लिप पक्ष पुराने पुस्तकालयों को स्थिर कर रहा है और केवल पायथन 2.x के साथ संगत रहता है), यह पाइथन 3.x का समर्थन करने के लिए पहले से ही समर्थन करने या सक्रिय रूप से काम करने वाले व्यक्ति को चुनने के लिए बुद्धिमान हो सकता है।

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

वादा उतार-आने वालों:

  • Voluptuous (बहुत लोकप्रिय, बहुत ही सरल एपीआई)
  • Kanone (FormEncode से प्रेरित होकर)
  • Schema (docopt की एक ही लेखक, बहुत ही सरल एपीआई)
+0

[कोलंडर] (http://colander.readthedocs.org/en/latest/) मेरे लिए काम कर रहा है, एफवाईआई। – KurtB

4

यह विषय पुरानी तरफ थोड़ा सा है, लेकिन मैंने सोचा कि मैं एक पुस्तकालय को लापरवाही से जोड़ दूंगा जो मैं इस उद्देश्य के लिए लिख रहा हूं । यह HTML रूपों के लिए विशिष्ट नहीं है, लेकिन कम से कम आंशिक रूप से, उनके साथ लिखा गया था।

जब मैंने इसे नामित किया तो मुझे बहुत रचनात्मक महसूस नहीं हो रहा था, इसलिए "सत्यापनकर्ता" को अभी करना होगा। यहां आप जा रहे हैं: https://github.com/wilhelm-murdoch/Validator

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