2012-05-27 11 views
7

मैं आपको सभी विवरणों के साथ बोझ नहीं करना चाहता, लेकिन मूल रूप से मैं एक दूसरा वर्ष compsci छात्र हूं जिसमें कोई वेब देव अनुभव नहीं है।मेरा पहला वेब ऐप (पायथन): सीजीआई, या Django जैसे ढांचे का उपयोग करें?

असल में मैं एक छोटा "वेब ऐप" बनाना चाहता हूं जो एचटीएमएल फॉर्म से इनपुट लेता है, एक पाइथन लिपि कुछ गणना करता है, और उन परिणामों को अपने ब्राउज़र में फिर से प्रदर्शित करता है।

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

और हेर्स मैं फंस गया था। मैं वेब सर्वर के बारे में कुछ भी नहीं जानता और उन्हें कैसे सेट अप करता हूं। इसके शीर्ष पर मैंने सुना है कि जीसीआई स्क्रिप्टिंग अतीत की बात है, और ठीक से चलाने के लिए प्रमुख ओवरहेड की आवश्यकता है।

इससे मेरे प्रश्नों की ओर इशारा होता है। मैं अपना ऐप पूरा करने और अपनी सीजीआई स्क्रिप्ट का परीक्षण करने के बारे में कैसे जा सकता हूं? क्या मैं इसके साथ अपाचे और गड़बड़ स्थापित करता हूं या क्या मुझे Google ऐप इंजन की तरह कुछ दिखाना चाहिए? क्या सीजीआई स्क्रिप्ट के बिना इस कार्य को पूरा करने के अन्य तरीके हैं? Django जैसे फ्रेमवर्क इस में फिट कहाँ हैं?

+2

यहां एक झूठी डिचोटोमी का थोड़ा सा हिस्सा: Django और CGI के बीच क्षेत्र का भरपूर धन है। मैं व्यक्तिगत रूप से Webapp2 की अनुशंसा करता हूं, जिसे ऐप इंजन के साथ बंडल किया गया है, और यह बहुत हल्का है। एफवाईआई, आधुनिक (पायथन) आर्किटेक्चर पर सीजीआई के बराबर निम्न स्तर डब्लूएसजीआई है, हालांकि। –

उत्तर

9

Django, अच्छा होने के दौरान, सभी समावेशी और अच्छी तरह से समर्थित, कभी-कभी छोटे वेब एप्लिकेशन के लिए बहुत अधिक होता है। Django चाहता है कि आप शुरुआत से अपने नियमों से खेलें, आपको डेटाबेस और व्यवस्थापक पैनल जैसी चीज़ों से बचना होगा यदि आपको उनकी आवश्यकता नहीं है। Django के साथ, अपने प्रोजेक्ट लेआउट का पालन करना भी आसान है, भले ही यह एक साधारण ऐप के लिए बहुत जटिल हो।

तथाकथित माइक्रो फ्रेमवर्क आपके छोटे ऐप के लिए बेहतर हो सकते हैं। वे विपरीत सिद्धांत पर बनाए गए हैं: अब न्यूनतम सुविधाओं का उपयोग करें, जितना अधिक आपको चाहिए उतना जोड़ दें।

  • Flask WERKZEUG WSGI पुस्तकालय और Jinja2 templating (उत्तरार्द्ध switchable है) पर आधारित है, बड़े पैमाने पर प्रलेखित है (notes concerning virtualenv and stuff के साथ) और एक जैसे छोटी और बड़ी क्षुधा के लिए अच्छी तरह से उपयुक्त है। यह एक ऑटो-रीलोडिंग देव सर्वर (आपके देव मशीन पर अपाचे की आवश्यकता नहीं) और वर्कज़ुग संचालित इंटरएक्टिव डीबगर के साथ आता है। HTML forms और database ORM जैसी चीज़ों के लिए एक्सटेंशन हैं।

  • Bottle माइक्रोफ़्रेमवर्क के रूप में छोटा हो सकता है, जिसमें 1 (एक) फ़ाइल शामिल है, देव सर्वर शामिल है। इसे अपने प्रोजेक्ट फ़ोल्डर में छोड़ दें और हैकिंग शुरू करें। बिल्ट-इन सरल टेम्पलेट टेम्पलेटिंग इंजन स्विच करने योग्य है, लेकिन फ्लास्क की तुलना में देव सर्वर flakier है। दस्तावेज कम पूरा हो गया है, और, मेरी राय में, पूरी चीज फ्लास्क के रूप में कम पॉलिश और सुविधाजनक है।

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

मैं पूरी तरह से फ्लास्क के साथ जाऊंगा जब तक कि एक निर्भरता (बोतल) तीन (फ्लास्क, जिनजा 2 और वेर्कजेग) से बेहतर न हो।

(कई अन्य चौखटे के साथ-साथ हैं, इसलिए अपने उपयोगकर्ताओं के आते हैं और उनके बारे में बता रहा web.py से बचने के लिए सुझाव देंगे करने के लिए प्रतीक्षा:। यह काम करता है, लेकिन जादू से भरा है, और बोतल या बोतल की तुलना में असजीला है ।)

-1

Django अपने सर्वर के साथ आता है, लेकिन आपके मामले में मैं अपाचे और mod_python की सिफारिश करता हूं क्योंकि यह एक साधारण साइट है जिसे आप बना रहे हैं।

अपाचे सेट अप करना एक हवा है और वेब पर एक साधारण खोज आपको जो चाहिए वह आपको देनी चाहिए। आप mod_python here पर थोड़ी सी जानकारी पढ़ सकते हैं और फिर अपनी आवश्यकताओं के अनुरूप ट्यूटोरियल के बाद Google पर अधिक जानकारी प्राप्त कर सकते हैं।

+3

'mod_python' की सिफारिश करना हमेशा एक बुरा विचार है। इसे 'mod_wsgi' के पक्ष में बहिष्कृत किया गया है। – ThiefMaster

+1

"वर्तमान में mod_python सक्रिय विकास में नहीं है। इसका मतलब यह नहीं है कि कुछ लोगों ने दावा किया है कि यह" मृत "है। इसका मतलब यह है कि कोड और परियोजना पर्याप्त परिपक्व हो जाती है जब इसे बनाए रखने के लिए बहुत कम आवश्यकता होती है।" –

+2

https://docs.djangoproject.com/en/1.3/howto/deployment/modpython/ - * mod_python के लिए समर्थन को हटा दिया गया है, और Django 1.5 में हटा दिया जाएगा। यदि आप एक नई तैनाती को कॉन्फ़िगर कर रहे हैं, तो आपको mod_wsgi या किसी अन्य समर्थित बैकएंड का उपयोग करने पर विचार करने के लिए दृढ़ता से प्रोत्साहित किया जाता है। * – ThiefMaster

2

यदि आप ऐप इंजन का उपयोग कर सकते हैं तो अपना स्वयं का वेबसर्वर सेटअप और बनाए रखें। आपके कोड का परीक्षण करने के लिए इसमें एक उत्कृष्ट एसडीके है। यहाँ एक उदाहरण https://developers.google.com/appengine/docs/python/gettingstarted/handlingforms

है और Django तुम यहाँ मिलेगा: https://developers.google.com/appengine/docs/python/gettingstarted/templates मैं templating के लिए जिंजा उपयोग करने के लिए पसंद करते हैं।

3

ऐसा लगता है कि अधिकांश पाइथन वेब विकास इन दिनों ढांचे के द्वारा किया जाता है। इसके लिए कुछ कारण हैं:

  1. परिपक्व उपकरणों का एक बड़ा हिस्सा। Django उपयोगकर्ता नाम में बनाया गया है, डेटाबेस प्रबंधन में बनाया गया है, सत्रों में बनाया गया है, बस ओआरएम के बारे में बनाया गया है जो आपको कुछ डेटाबेस का निर्बाध रूप से समर्थन देता है।

  2. वेबसर्वर में निर्मित। Django और pylons जैसे बड़े पायथन ढांचे वेबसर्वर में बनाया गया है। Django के पास एक बहुत ही सरल वेबसर्वर python manage.py startserver (वह सरल) है जो अनुप्रयोगों को बनाने और डिबग करना बेहद आसान बनाता है। यह सिंगल थ्रेडेड है इसलिए इसमें डीबगर छोड़ना दर्द रहित

  3. विशाल समुदायों। यदि आपके पास डीजेंगो प्रश्न है तो इसका उत्तर बहुत जल्दी दिया जाएगा ताकि समुदाय बहुत बड़ा हो।

Django ट्यूटोरियल विकास के सभी प्रमुख पहलुओं से परिचित कराएगा। यह केवल 4 पृष्ठ हैं और आप अपाचे सेटअप के साथ पढ़ने, सीखने और समझने के बजाय अपने ऐप को बहुत आसान बना पाएंगे। https://docs.djangoproject.com/en/dev/intro/tutorial01/

हालांकि अभी भी django अधिक हो सकता है यदि आपका ऐप सिर्फ 1 फॉर्म और इसे संसाधित करने के लिए एक स्क्रिप्ट होने जा रहा है।अपने निर्बाध परीक्षण ढांचे के कारण किसी भी परियोजना को विकसित करना काफी आसान है। मैंने कभी फ्लास्क या बोतल या अन्य माइक्रोफ्रेमवर्क का उपयोग नहीं किया है, लेकिन मैं ध्यान में रखूंगा कि आपकी परियोजना भविष्य में कहां होगी।

जहां django इस में फिट बैठता है, यह प्रस्तुति (टेम्पलेट्स), डेटा प्रबंधन (सर्वर ओआरएम), प्रमाणीकरण, मिडलवेयर, रूपों सहित एक पूर्ण ढेर ढांचा है ... पूरी तरह से समावेशी वेब एप्लिकेशन बनाने के लिए आवश्यक सब कुछ। Django और लगभग सभी अन्य अजगर ढांचे wsgi मानक लागू करते हैं। यह एक इंटरफेस है जो वेबसर्वर के बीच बातचीत के लिए अनुमति देता है। http://en.wikipedia.org/wiki/Web_Server_Gateway_Interface यह बहुत शुष्क है और आपको इसे सीधे इंटरफ़ेस नहीं करना पड़ेगा। यही ढांचा हुड के नीचे करता है।

4

वेबपैप काम करने का एक तरीका जल्दी से समझना है, और उसके बाद ऐप इंजन "guestbook" उदाहरण की तरह कुछ संशोधित करना है। इसका लाभ यह है कि वेब सर्वर चलाने के लिए अन्यथा आवश्यक टेडियम और डेटाबेस सर्वर स्थापित करना (मान लीजिए कि आपको दृढ़ता की आवश्यकता है) आपके लिए किया जाता है। ऐप इंजन भी काफी लचीला विकास वातावरण प्रदान करता है। यह निश्चित रूप से जाने का एकमात्र तरीका नहीं है, और मैं इसे अनुशंसा करने में पूर्वाग्रह को स्वीकार करूंगा, लेकिन यह काफी कम घर्षण है।

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

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