[संगीत बजाना] EZRA Zigmond: हाय, सब लोग। आज बाहर आने के लिए धन्यवाद। इस संगोष्ठी में "अजगर है वेब कुप्पी के साथ क्षुधा। " तो, मैं बात करने जा रहा हूँ यही कारण है के बारे में थोड़ा तुम बनाने के लिए फ्लास्क का उपयोग करने के लिए चाहते हो सकता है अजगर के साथ वेब क्षुधा, के रूप में विरोध वहाँ से बाहर कुछ अन्य व्यवस्थाएं, जैसे करने के लिए सबसे अच्छी तरह से जाना जाता है, जो Django,। उपशीर्षक है "और जो कुछ है Peewee, " हम के बारे में बात करने जा रहे हैं SQL डेटाबेस के साथ बातचीत करने के लिए। ऐसा लगता है कि वास्तव में अच्छा बनाता है। तो, यहाँ सिर्फ एक त्वरित ठहरनेवाला है मैं ऊपर जाने के लिए क्या करना चाहते हैं। तो, पहले सिर्फ एक स्लाइड कि, Quickstart होने जा रहा है जो सब कुछ पाने के लिए है आपके कंप्यूटर पर स्थापित की। मैं प्रदर्शन किया जा रहा हूँ मेरे स्थानीय मैक मशीन पर इस, कि बस, क्योंकि मैं इस किया है जहां इससे पहले, मैं इसके साथ सबसे आराम कर रहा हूँ लेकिन यह निश्चित रूप से है CD50 आईडीई पर संभव। तो, उसके बाद, मैं चाहता हूँ , फ्लास्क है क्या परिचय और आप को समझाने तुम क्यों चाहिए यह पहली जगह में उपयोग करें। फिर, मैं एक त्वरित दे दूँगा आप क्या का उदाहरण फ्लास्क, एक त्वरित उदाहरण में कर सकते हैं आप Peewee में क्या कर सकते हैं, और फिर मैं आपको एक और अधिक दिखाएगा पूरा उदाहरण के आवेदन मुझे लगता है हम एक साथ डाल दिया है कि एक साथ के माध्यम से चल सकता है। और फिर अंत में पिछले स्लाइड, मेरे पास है तुम देखो कि कुछ संसाधनों अधिक जानकारी के लिए ऑनलाइन पर। यह एक पूरा नहीं हुआ है फ्लास्क का उपयोग कैसे करें के ट्यूटोरियल। और मुझे छोड़ने के लिए आशा करता हूँ प्रश्नों के लिए कुछ समय है। किसी को भी सिर्फ स्थानीय स्तर पर देख रहा है जैसे, बीच में बाहर चिल्लाओ अगर आपके कोई प्रश्न होंगे। तो जल्दी स्थापना सामान, आप के साथ पालन करना चाहते हैं, या आप इस प्राप्त करना चाहते हैं अपनी खुद की मशीन पर, मैं अजगर 2.7.10 का उपयोग किया जा रहा हूँ। कुप्पी के साथ काम करता है अजगर 3, लेकिन मुझे पसंद है क्योंकि वहाँ, अजगर 2 का उपयोग कुछ अजगर संकुल कि अभी तक 3 के साथ काम नहीं करते। आप रंज स्थापित किया है, जो एक अजगर पैकेज प्रबंधक है, अपने अजगर है, तो मुझे लगता है कि से अधिक या 2.7.9 के बराबर है, आप यह पहले से ही स्थापित है, यह है इन संकुल को स्थापित करने के लिए सुपर आसान। आप रंज स्थापित कर सकते हैं फ्लास्क, Peewee स्थापित रंज, आम तौर पर आप सिर्फ sudo चलाने के लिए है इसलिए अनुमतियों बाहर काम करते हैं। और, यदि आप उपयोग कर रहे हैं एक सुपर अजगर के पुराने संस्करण, मैं अपने अजगर अद्यतन करने की सिफारिश या EasyInstall का उपयोग कर रंज स्थापित करने के लिए। तो, अगला सवाल है, फ्लास्क क्या है? और मैं पहली बार एक, लगता है उचित सवाल है, मैं सोच रहा था एक लंबे समय के लिए, एक वेब अनुप्रयोग क्या है? एक शब्द है कि ऐसा इसलिए है क्योंकि मैं एक बहुत चारों ओर फेंक दिया जाता है लगता है मैं वास्तव में नहीं जानता था कि। और मुझे लगता है कि सबसे अच्छा लगता है एक वेब एप्लिकेशन है क्या का उदाहरण वास्तव में CS50 वित्त, जहां है यह वास्तव में सिर्फ एक वेबसाइट नहीं है लेकिन यह कुछ है कि आप प्रकार के साथ बातचीत कर सकता है। उपयोगकर्ता खाते हैं और विभिन्न चीजों के सभी प्रकार की। तो, क्या वास्तव में आप जहां आकर्षित एक वेबसाइट क्या है के बीच की रेखा, और एक वेब एप्लिकेशन, किस तरह का है मनमाने ढंग से है, लेकिन मैं इस विचार लगता है, यह एक वेबसाइट से अधिक कुछ है और यह एक उपयोगी अनुप्रयोग है। तो, फ्लास्क एक ढांचे के लिए है अजगर का उपयोग वेब क्षुधा बना रही है। और उम्मीद है, अंत तक इस कारण, मैं तुम्हें मना लेंगे आप वास्तव में कुछ लिख सकता है CS50 वित्त जैसे अजगर, का उपयोग करते हुए जो मैं व्यक्तिगत रूप से, पीएचपी की तुलना में बहुत बेहतर पसंद है। तो, फ्लास्क है, वे कहते हैं एक microframework, जिसके द्वारा, वे इसे बहुत है मतलब सरल है, लेकिन एक्स्टेंसिबल। इसलिए, यह सिर्फ तुम क्या जरूरत है लेकिन आप और अधिक सुविधाओं चाहते हैं, उस में उन्हें लाने के लिए आसान है। लेकिन यह सिर्फ इसलिए एक microframework, नहीं करता है यह छोटी परियोजनाओं के लिए ही है कि मतलब है। मैं कहना है कि यहाँ एक कड़ी है ओबामा 2012 में फ्लास्क इस्तेमाल किया है कि अपने अभियान के लिए वेबसाइट, जो उम्मीद है, एक बेचान की बात है। लेकिन बात यह है कि मैं वास्तव में फ्लास्क के बारे में पसंद , यह सच नहीं है कि है आप के लिए निर्णय के किसी भी तरह। बस हम कर रहे हैं, क्योंकि वेब क्षुधा के बारे में बात कर रही है, मैं पर रूबी के लिए यह तुलना करने के लिए है रेल और Django, जो दोनों के महान व्यवस्थाएं हैं, लेकिन वे दोनों में धारणा बना के बारे में कैसे आप करना चाहते हैं डेटाबेस के साथ बातचीत, कैसे आप अपने पेश करना चाहता हूँ विचारों, और वे निश्चित रूप से कर रहे हैं कि करने के लिए अच्छे पहलुओं। उदाहरण के लिए, पटरियों पर रूबी के लिए इस सक्रिय रिकॉर्ड प्रणाली है, जो एक बहुत अच्छी है डेटा के साथ बातचीत करने के लिए जिस तरह से, लेकिन आप पर रूबी उपयोग करना चाहते हैं रेल, आप की तरह की है कि में बंधे हैं। लेकिन कुप्पी के साथ, मैं हूँ के रूप में Peewee साथ आप दिखाने के लिए, आप जो कुछ भी प्रकार का उपयोग कर सकते हैं डेटाबेस की आप चाहते हैं, और आप बस में है कि खींच सकते हैं फ्लास्क में विस्तार के रूप में। तो यह है कि मैं सच में क्यों है फ्लास्क तरह, यह यह है कि आप के लिए मान्यताओं में नहीं पड़ता चीजों के आधार पर आप वास्तव में जरूरत नहीं है। तो, तुम क्यों फ्लास्क का उपयोग करना चाहिए? फायदे यह सिर्फ कर रहे हैं वास्तव में मूल सुविधाओं है इसे बनाया है कि आप जरूरत। तो, आप के बारे में चिंता करने की जरूरत नहीं है चीजों की एक पूरी गुच्छा समझने आप वास्तव में जरूरत नहीं है। आप चिंता करने की ज़रूरत नहीं है सुविधाओं को बंद के बारे में आप वास्तव में जरूरत नहीं है। मैंने उल्लेख किया है और, जैसा कि यह सुपर है बातों का एक्सटेंशन में जोड़ने के लिए आसान आप की जरूरत है कि। उनमें से कुछ, फ्लास्क है इसके लिए अपने स्वयं के समर्थन करते हैं। तो फ्लास्क बुलाया कुछ भी नहीं है कि व्यवस्थापक दर्पण जो व्यवस्थापक, Django प्रदान करता है कि पैनल, जो आप एक अच्छा दृश्य रास्ता देती है अपनी वेबसाइट के प्रशासन के लिए। लेकिन फिर, आप कर रहे हैं कुछ सरल बनाने, आप शायद एक बड़ा व्यवस्थापक की जरूरत नहीं पैनल, इसलिए मुझे लगता है कि सुपर अच्छा लगता है। और नुकसान, कि कर रहे हैं आप इस बॉक्स के बाहर कम शक्ति है। तो, अगर आप पहले फ्लास्क खुला, और अपने अजगर कार्यक्रम में, तुम सिर्फ कुप्पी से टाइप आयात *, या जो कुछ भी, आप वास्तव में सभी के लिए नहीं मिलता सुविधाओं को आप चाहते हो सकता है। और तो आप और अधिक स्पष्ट करने के लिए है आप चाहते सुविधाओं की सूची। तो यह है कि एक ही नुकसान है, लेकिन मैं छोटे वेब के लिए निर्माण कर लगता है कि मैं तरह क्षुधा को प्रदर्शित किया जा रहा हूँ आपको लगता है कि वास्तव में कोई समस्या नहीं है। और आखिरी बात क्या है एक टाइपो है, जो कहना चाहिए, कम मानकीकृत यह है कि वहाँ फ्लास्क का उपयोग कैसे करें के लिए सम्मेलनों, बस के रूप में कई नहीं कर रहे हैं, क्योंकि पेशेवर है कि यह प्रयोग लोगों Django की तुलना में। तो, आप की तरह कुछ देखो, Django में "मैं कैसे एक्स करते हैं", आप शायद यह पता चल जाएगा। अच्छे डिजाइन नहीं है आप उपयोग कर सकते हैं पैटर्न, लेकिन कुप्पी के साथ, यह है एक तरह से अपने अपने तरीके से चलते हैं, इसे सिर्फ एक है, क्योंकि बहुत छोटा सा पुस्तकालय। तो उन लोगों के हैं नुकसान है, लेकिन मुझे लगता है कि कि यह अभी भी उपयोग करने के लिए एक अच्छा पुस्तकालय है। तो चलो बस सही कुप्पी में कूद जाने। यह निश्चित रूप से नहीं जा रहा है एक पूरा ट्यूटोरियल हो सकता है, लेकिन इसे आप एक विचार देने के लिए है बातें संरचना करने के लिए कैसे की, और इसलिए आप जा सहज महसूस करते हैं बंद और प्रलेखन पर देख रहे हैं और अधिक जानने। तो, मुझे एक सच को खोलने दें पहली बार में सरल उदाहरण है, और आप क्या पता चलता है कि की तरह लग रहा है, और फिर हम करेंगे एक छोटा सा और इसे तोड़ने के नीचे। तो यह यहाँ, मुझे यह चल मिलता है। तो, अब मैं अपने आवेदन चल रहा है। मैं सफारी को खोलने के लिए जा रहा हूँ, और यह मेरे स्थानीय होस्ट पर चल रहा है। तो मैं सिर्फ यह बड़ा बनाने के लिए जा रहा हूँ। लेकिन स्थानीय होस्ट: 5000 और हां, अब ठीक है, यह सब होता है है, आप वेबसाइट पर जाते हैं, यह "हैलो फ्लास्क" बाहर प्रिंट जो, सुपर उपयोगी नहीं है लेकिन मुझे लगता है कि यह अच्छा है कि लगता है यहाँ इस छोटी सी फाइल में, हम एक वेब सर्वर चल रहा है कुछ है कि बाहर मुद्रण है। तो, वास्तव में हम देखते हैं एक पल के लिए कोड में, और एक छोटा सा टूट। आकार यहां हर किसी के लिए अच्छा है? तो, उम्मीद है, आप कुछ हद तक कर रहे हैं अजगर का उपयोग कर आराम। मुझे लगता है हम पर देख सकते हैं कि मान रहा हूँ अजगर और इसके माध्यम से पढ़ा है। आप के बारे में किसी भी सवाल है कुछ भी हो, मैं भी उस पर जा सकते हैं। तो पहली पंक्ति कुप्पी से, है, हम एक पूंजी के साथ, फ्लास्क आयात "एफ" जो सभी की तरह है आप की जरूरत है कि प्रमुख विशेषताएं। जब भी आप लिख रहे हैं एक फ़ाइल का उपयोग करने और फ्लास्क, आपको लगता है कि आयात करना चाहते करने जा रहे हैं, कि सभी मुख्य बातें सिर्फ इसलिए किया। हम क्या अगली बात है, हम है बस, इस समारोह फ्लास्क फोन एक app वस्तु बनाने के लिए, और आप कर रहे हैं करने के लिए हमेशा कि क्या करना चाहते करने जा रहा है। और फिर, करने के लिए नीचे कूद नीचे जल्दी से, इस भाग यहाँ है है जो 'if_name _ == "_ main_"' एक अजगर सम्मेलन की तरह। तो यह केवल आप यदि अमल करेंगे सीधे अजगर उपयोग करते हुए इस फ़ाइल को चलाते हैं। तो, हम जो होगा, app.run फोन वास्तव में जा रहा अनुप्रयोग शुरू। तो, कि मुख्य संरचना है कि आप किसी भी फ्लास्क आवेदन में होगा, आप इस होगा एप्लिकेशन = फ्लास्क (_NAME_), और फिर app.run। तो, दो बातें मुझे लगता है कि यहाँ में, हम मार्गों कहते हैं। तो, चलो के बारे में बात करते हैं एक छोटा सा और रूटिंग। मैं वापस स्लाइड करने के लिए जाना होगा। तो सबसे मौलिक फ्लास्क में अवधारणा है रूटिंग। और यह विचार है कि आप अजगर में कार्य आवंटित विशेष पतों के लिए अपने वेब पेज पर। तो, जब भी आप चाहते हैं एक नया मार्ग बनाने के लिए, आप इस @ app.route उपयोग समारोह डेकोरेटर। तो, आप के साथ अपरिचित हैं, तो कर रहे हैं अजगर में समारोह सज्जाकार, यह इस अवधारणा है कि आप एक समारोह में ले चलें और कुछ और के साथ चारों ओर। तो सच में, इस डेकोरेटर क्या करता है, , यह इसके नीचे समारोह लेता है और इसे और अधिक जानकारी के लिए कहते हैं यह करने के लिए है, लेकिन क्या वास्तव में फ्लास्क करना है कि क्या होता है सुपर नहीं है महत्वपूर्ण है, लेकिन क्या महत्वपूर्ण है, कि आप मार्ग से पहले है तो इस @ app.route डाल दिया, और मार्ग का पता, इसलिए स्लेश है क्या हम हम सिर्फ वेब पेज के ऊपर खुला जब देखा। तो यह है कि मुखपृष्ठ। यह सिर्फ स्लेश मार्ग है। और फिर आप यह कार्य किया है। समारोह के नाम आप जो चाहते हो सकता है। यह जरूरी नहीं की जरूरत नहीं है मार्ग के साथ क्या करना है। और फिर, जो कुछ भी समारोह की वापसी, समारोह में एक स्ट्रिंग वापस आ जाना चाहिए। और कहा कि स्ट्रिंग कर सकते हैं HTML या कुछ भी शामिल और कि क्या मिल जाएगा वास्तव में है HTML के रूप में अपने वेब ब्राउज़र को लौट गए, और यह है कि प्रस्तुत करना होगा। तो यह एक ही कोड है कि उदाहरण से किया गया था मैं तो बस दौड़ा, तो हम स्लेश पर जाते हैं, यह एक नमस्ते विश्व समारोह, जो कॉल सिर्फ एक स्ट्रिंग, हैलो फ्लास्क देता है, और है कि स्क्रीन पर मुद्रित हो जाता है। तो एक और उदाहरण नहीं है, जो है, जब आप हैलो / यात्रा, यह हैलो वर्ड, बाहर प्रिंट जो वास्तव में, नमस्ते विश्व कहना चाहिए, लेकिन लगता है कि जानबूझकर किया गया था ढोंग करते हैं। तो चलो जल्दी असली लगता है कि ऊपर खींच देते हैं। तो अगर आप हैलो / लोकलहोस्ट करने के लिए जाना है, यह अब कुछ और प्रिंट होगा। तो यह है कि कैसे सिर्फ एक त्वरित उदाहरण है आप दो अलग अलग मार्गों बना सकते हैं। तो, अब तक इस सुपर उपयोगी नहीं है आप कर सकते हैं एक पूरी बहुत कुछ नहीं है, तुम बस के साथ सब कर सकता है कि विभिन्न HTML पृष्ठों वाले, और आप एक विशेष यात्रा जब पेज यह सिर्फ पेज लोड करता है। तो चलो कुछ अधिक देखते हैं आप क्या कर सकते हैं उपयोगी बातें। तो, एक बात तुम हो सकता है कि मैं खींच लिया कि उदाहरण में देखा ऊपर, मैं app.run था कि है (डिबग = सच है)। और हां, तो क्या इस डिबग तर्क है, करता है यदि आप अपने वेब सर्वर चला है कि जब, आप अपने आवेदन में कर रहे हैं, आप एक फ़ाइल को बदलते हैं, यह होगा स्वचालित रूप से सर्वर पुनः लोड। और तो आप वास्तव में करने के लिए नहीं है सुपर उपयोगी है, जो पुनः आरंभ अजगर,। मुझे लगता है कि दिखा सकते हैं। मुझे मेरे कोड ऊपर खींचने के चलो उस में टाइपो साथ और कहा कि टाइपो वहाँ रखा गया था नाटक जानबूझकर शिक्षाप्रद प्रयोजनों के लिए। तो चलो इस वापस जोड़ दें। तो अब यह नमस्ते विश्व कहते हैं। मैं इसे बचाना होगा। और हम वापस ऊपर खींच टर्मिनल, तुम हूँ यह पुन: प्रारंभ कहना है कि, यह एक परिवर्तन का पता चला है, क्योंकि और इसलिए अब हम इस पेज को फिर से लोड जब यह सही बात यह है कि बाहर प्रिंट होगा। तो डिबग उस के लिए अति उपयोगी है। इसके अलावा, अगर आप किसी भी एक दुर्घटना की तरह है, इसलिए मुझे इस आवेदन दुर्घटना बनाते हैं होने से यह एक स्ट्रिंग वापस नहीं। तो, सिर्फ यह है चलो किसी कारण के लिए कोई नहीं लौट आते हैं। और फिर मैं इस यात्रा जब पेज, यह सिर्फ दुर्घटना होगा, लेकिन सर्वर सिर्फ यह दुर्घटना नहीं है वास्तव में आप एक सुपर उपयोगी वापस देता है सब कुछ का पता लगाने के गलत हो गया है। और, वास्तव में अच्छा है कि क्या है इस पीठ का पता लगाने में किसी भी कदम पर, आप एक इंटरैक्टिव खोल सकता है यहां खोल, और एक तरह से बाहर प्रिंट क्या चर आप पर एक नज़र रखना चाहते हैं। और तो डिबगिंग सच है लगाना के लिए उपयोगी क्या साथ जा रहा है अपने सर्वर के बजाय सिर्फ देखकर एक 500 आंतरिक तरह पीएचपी में कुछ सुपर बेकार है जो सर्वर त्रुटि। एक बात है, के बारे में पता करने के लिए कि आप अपने ऑनलाइन एप्लिकेशन डाल तो यह जनता के लिए दिखाई दे रहा है आप कभी नहीं डिबग मोड पर छोड़ना चाहते हैं, लोगों को वास्तव में कर सकते हैं क्योंकि कि कंसोल का उपयोग कि मैं आप मनमाना कोड को निष्पादित करने के लिए दिखाया। इसलिए वे किसी भी तरह बाहर प्रिंट कर सकते हैं तुम वहाँ में है गुप्त कोड, वे वास्तव में देख सकते हैं कैसे अपनी वेबसाइट के काम कर रहा है। तो यह वास्तव में उपयोगी है परीक्षण के लिए है, लेकिन हमेशा बनाने से पहले इसे बाहर ले यकीन आप ऑनलाइन कुछ भी प्रकाशित करते हैं। तो जब आप कुछ प्रयोग कर रहे पीएचपी की तरह, इस विचार है आप पास कर सकते हैं कि वेब पृष्ठों के बीच जानकारी वास्तव में जानकारी डालने से एक अनुरोध प्राप्त है, जो यूआरएल, में, लेकिन फ्लास्क में, आप वास्तव में कर सकते हैं एक तरह से है कि ऐसा कुछ करते हैं, है कि एक मार्ग होने से यह भाग के रूप में एक चर। आप इस पर नजर डालें तो अगर यहाँ स्क्रीन पर उदाहरण के लिए, हम है कि एक मार्ग है ('/ नमस्ते /'), और इसलिए, आप की यात्रा करता है, तो / नमस्ते / कुछ, कुछ है कि वास्तव में भर पाने के लिए जा रहा है नाम चर में। और समारोह है कि नोटिस कि लगता है कि मार्ग के साथ आता है पैरामीटर में ले गया है , यह नाम वास्तव में जाएगा तो यह है समारोह में पारित हो। और फिर, एक बार आप कर रहे हैं उस समारोह के अंदर, आप की तरह है कि इलाज कर सकते हैं एक सामान्य अजगर चर, और यदि ऐसा है तो, यह होगा हैलो बाहर प्रिंट, और यह का उपयोग कर नाम में भरना होगा कुछ स्ट्रिंग स्वरूपण। तो एक मार्ग के लिए चर भागों को जोड़ने के लिए, आप अंकन कोण कोष्ठक का उपयोग करें। और वैकल्पिक रूप से, आप उपयोग कर सकते हैं क्या एक कनवर्टर कहा जाता है। और हां, तो आप इस डाल पेट के साथ एनोटेशन, आप यह है कि निर्दिष्ट कर सकते हैं एक पूर्णांक के लिए, या एक नाव, या पथ, और यह स्वचालित है कि में बदल जाएगा। तुम भी रूपांतरण कर सकते हैं अजगर समारोह के भीतर, सिर्फ एक डाली उपयोग करके, लेकिन कभी-कभी यदि आप इसे एक पूर्णांक है कि यह सुनिश्चित करना चाहते हैं, आपको लगता है कि रख सकते हैं वहाँ में रूपांतरण नियम। तो चलो एक उदाहरण ऊपर खींच कुछ चर नियमों की। यहाँ तो, इस बुनियादी ही है फ्लास्क आयात से साथ संरचना फ्लास्क, एप्लिकेशन = फ्लास्क (_NAME_), और फिर यह अंत में चल रहा है। हम इन दो अलग-अलग है यहाँ चर मार्गों। और पहले एक है, मैं पता चला है कि एक यह थी कि जो स्लाइड में यह सिर्फ एक स्ट्रिंग नाम पर ले जाता है और यह नाम हैलो बाहर प्रिंट होगा। और फिर, दूसरे एक रूपांतरण का उपयोग करता है। तो यह स्वचालित रूप से इसे बदलना होगा एक पूर्णांक के लिए, और फिर, पूर्णांक दोगुना और कहा कि प्रिंट आउट। और, हम किसी भी तरह से नहीं करते यह भीतर रूपांतरण की फ्लास्क इस बात का ख्याल रखता है। तो चलो इस चल मिलता है। आप एक कुप्पी है जब आवेदन चल रहा है, आप इसे से बाहर-सी नियंत्रित कर सकते हैं सर्वर चल रहा रोकने के लिए। और फिर मैं चर चलेंगे। तो चलो लोकलहोस्ट / नमस्ते / एजरा के लिए चलते हैं और उम्मीद है, यह मेरे लिए हैलो कहना होगा। तो यह चर में मेरे नाम से ले लिया मार्ग, और यह यहाँ में यह भर दिया। तो मैं भी एक त्वरित दिखाता हूँ दोहरीकरण का उदाहरण है। तो अगर आप 3 / डबल / करने के लिए जाना है, यह 6 बाहर प्रिंट होगा। तो इस बात का ख्याल रखा हमारे लिए रूपांतरण। तो अगर आप भी साथ कर सकते हैं नाव, और कुछ खास है, आप की तरह कुछ निर्दिष्ट करने की जरूरत है, तो यह स्लैश स्वीकार देता है कि एक पथ, लेकिन लगता है कि आम तौर पर एक मुद्दा नहीं होना चाहिए। अब तक हम अभी भी है सिर्फ लौटने की गई बहुत दिलचस्प नहीं है जो तार,। हम वास्तव में लौट सकता है शाब्दिक एचटीएमएल स्ट्रिंग। तो कोड में हम कुछ सम्मिलित कर सकते हैं बी-टैग यह बोल्ड करने के लिए की तरह, लेकिन ज्यादातर समय आप वास्तव में नहीं करना चाहते एचटीएमएल कोड लिख सकता है अपने अजगर कोड में। यह वास्तव में गंदा हो जाता है और यह एक अच्छा समय नहीं है। फ्लास्क हमें बाहर अलग करने के लिए अनुमति देता है खाका क्या कहा जाता है में एचटीएमएल, और यदि ऐसा है तो आप क्या सोच रहे MVC मॉडल के संदर्भ में आप से परिचित हैं कि, उम्मीद है, काम करने से CS50 वित्त के साथ एक छोटा सा है, आप अजगर फाइलों के बारे में सोच सकते हैं नियंत्रक, जहां के अधिक होने के रूप में वे जो कुछ के साथ बातचीत कर रहे हैं हो सकता है आप डेटा मॉडल। और फिर वे विचार करने के लिए बाहर बुला रहे हैं और उस दृश्य को जानकारी गुजर जानकारी में भरने के लिए एचटीएमएल में यह जरूरत है। और हम उन विचारों क्या कॉल कक्षा में टेम्पलेट्स हैं। तो फ्लास्क एक और अजगर का उपयोग करता है मॉड्यूल है कि यह स्वचालित रूप से होगा आप को स्थापित करने रंज जब स्थापित फ्लास्क Jinja कहा जाता है, जो आप इन जोड़ देता है HTML करने के लिए एनोटेशन आप स्क्रीन पर देखते हैं कि, कि देता है आप सशर्त तरह बातों में डाल और एचटीएमएल में छोरों। तो यह तुम कैसे की तरह थोड़ा सा लग रहा है एक HTML फ़ाइल के भीतर पीएचपी उपयोग हो सकता है, लेकिन यह सिर्फ जब फ्लास्क है सर्वर, एचटीएमएल फ़ाइल में कार्य करता है यह इस templating इंजन चलेंगे और इस के माध्यम से पार्स और में चीजों को भरने के लिए। तो फ्लास्क एक render_template कार्य किया है आप यहाँ तल पर देख सकते हैं। और तो आप इसे इस पृष्ठ पर जाएँ जब इस hello.html खाका प्रस्तुत करना होगा, और फिर इस HTML पृष्ठ में भरें। तो चलो बस यह असली चलाते हैं जल्दी है, और यह कैसा लग रहा है, और फिर मैं एक माध्यम से जाना होगा और अधिक विस्तार में थोड़ा सा। तो, अपने टेम्पलेट्स जा रहे हैं एक टेम्पलेट फ़ोल्डर में जाने के लिए। यह स्वचालित रूप से भीतर दिखेगा टेम्पलेट्स कि खाका के लिए फ़ोल्डर। तो चलो इस को खोलते हैं। तो, मैं Templating उदाहरण चलने देंगे। इसलिए मैं / नमस्ते / एजरा के लिए जाना है, यह इस भयानक है, मैं में डाल दिया है कि अप्रिय मार्की टैग। बहुत अच्छा, बहुत गतिशील। मै तुम्हारा बड़ा प्रशंसक हूँ। लेकिन क्या होता है अगर मैं तो बस, / नमस्ते करने के लिए जाना है? तो यह सिर्फ नमस्ते विश्व कहते हैं। मैं इसे एक नाम पारित नहीं किया, और यह स्वचालित रूप से उस में भर दिया। तो यह है कि कैसे किया चलो देखते हैं, और कैसे हम हो सकता है कि मार्की से छुटकारा मिल सकता है। यहाँ तो, इस तरह की है का एक दिलचस्प उदाहरण है, आप कैसे स्विच के साथ परिचित हैं बयान एक भाषा में काम करते हैं। , इस तरह की तरह है कहो के माध्यम से एक गिरावट की है कि तरह, जहां आप वास्तव में दो संलग्न एक ही समारोह के लिए विभिन्न मार्गों। इसलिए हम / हैलो मार्ग देते हैं और नमस्ते करने के लिए / नमस्ते / नाम मार्ग, अजगर की मदद से आप using-- और हम निर्दिष्ट डिफ़ॉल्ट समारोह arguments-- निर्दिष्ट तो कोई नाम है, ताकि अगर वहाँ हम करने के लिए जाना है, तो बस / हैलो, यह स्वचालित रूप से फिल्टर होगा नाम करने के लिए कोई नहीं के बराबर है। तो फिर, हम प्रस्तुत करना नाम = नाम के साथ खाका, इसलिए यह नाम पैरामीटर में समाप्त हो जाएगी इस नाम समारोह पैरामीटर के बराबर है, टेम्पलेट में। कैसे होता है कि अभी भी स्पष्ट नहीं होता नमस्ते विश्व मुद्रित करने के लिए तय है कि, या मेरे नाम मुद्रित। तो चलो वास्तव में हम देखते हैं खाका ही में, और उस से आ रही है जहां देखते हैं। तो, इस टेम्पलेट के भीतर, हम वास्तव में कुछ सशर्त तर्क है, जो कुछ लोगों को होगा लोगों का तर्क है, तुम वास्तव में सशर्त का एक बहुत कुछ नहीं चाहिए अपने टेम्पलेट के भीतर ही तर्क है। यह भीतर अधिक होना चाहिए नियंत्रक, लेकिन इस उदाहरण के लिए यह बहुत छोटी बात है। नाम तो अगर यहाँ, हम तो, जाँच यदि नाम कोई नहीं के बराबर नहीं है, एक नाम वास्तव में है, तो , तो हम करेंगे में पारित साथ नाम, हैलो कहना शीर्षक और मार्की, यह सब सामान्य HTML, अन्यथा, हम करेंगे हैलो बाहर प्रिंट, विश्व सिर्फ सामान्य रूप से। तो एक दो बातें यहाँ करने के लिए नोटिस आप templating कैसे प्रारूप के बारे में, इनमें से, वह सब है सशर्त बयान, की तरह की तरह हम इसे जब पीएचपी कैसे आप कुछ पीएचपी सम्मिलित करना चाहते हैं, आपको कम-से अधिक का उपयोग सवाल मार्क, यह यहाँ की तरह अनुरूप है उसके साथ {%। यहाँ तो, हम हमारे सशर्त कोड है। और फिर, आप वास्तव में चाहते हैं जब सचमुच कुछ का मूल्यांकन, और प्रिंट स्क्रीन करने के लिए इसे बाहर, आप डबल तार लगवाने का उपयोग करें। यहाँ तो डबल ब्रेसिज़ हैं, और फिर हम नाम निर्दिष्ट करें, कि भीतर हां, तो यह मूल्यांकन करेंगे चर नाम, जो से में पारित किया गया था , टेम्पलेट समारोह प्रस्तुत करना बल्कि सिर्फ मुद्रण से बाहर है, हम इनमें से छुटकारा मिल गया है, तो यह सिर्फ शब्द बाहर प्रिंट होगा "नाम।" तो, उस के लिए बाहर देखने के लिए कुछ है। तो एक और बात करने के लिए सूचना है जब हम, कि उपयोग करना चाहते हैं render_template समारोह, हम वास्तव में आयात करने के लिए है यह स्पष्ट रूप से कुप्पी से। और इस का एक उदाहरण है कुप्पी की प्रतिरूपकता, आप आयात करने की जरूरत नहीं है कि आप की जरूरत नहीं है कि चीजों। तुम बस में ला सकता है कार्यों वास्तव में आप कभी कभी होता है, जो की ज़रूरत है अच्छा, तो तुम नहीं करते इन सभी कार्यों के लिए है आप का उपयोग नहीं कर रहे हैं कि चारों ओर बैठे, लेकिन इसके अलावा, आप भूल जाते हैं कि यदि render_template आयात करने की जरूरत है, आप शायद एक चेतावनी मिल जाएगा कि आप इस बारे में पता चल जाएगा। तो, कि templating है। तो, हम कैसे करने के लिए दिखाया गया है, सरल, वेब पृष्ठों को बनाने के और करने के लिए एक छोटा सा और तर्क जोड़ने यह चर मार्ग के संदर्भ में। यह आप पर आधारित अलग अलग बातें कर देता है क्या आप फिर भी करने के लिए जाना है, और यूआरएल, देना में एचटीएमएल एक छोटा सा और भावना आप चीजों को प्रस्तुत करना चाहते हैं कैसे के मामले। आप सभी डाल करने की जरूरत नहीं है अपने अजगर में अपने HTML, लेकिन बहुत ज्यादा के लिए हर वेब आवेदन यदि आप किसी तरह चाहते करने के लिए जा रहे हैं डाटा मॉडल की इसके साथ जुड़े। और तो परंपरागत रूप से, यह होगा एक एसक्यूएल डाटाबेस ऐसा कुछ हो। और तुम सिर्फ बातचीत कर सकते हैं सीधे एसक्यूएल के साथ। अजगर है, मैं यह कहा जाता है लगता है। SQLite 3। तुम बस SQLite 3 आयात कर सकते हैं और सीधे एसक्यूएल प्रश्नों पर अमल, लेकिन मैं तुम्हारे बारे में पता नहीं है, लेकिन मैं वास्तव में, बस पसंद नहीं है एसक्यूएल प्रश्नों बाहर लेखन। यह वास्तव में मिल जाता है लंबी और जटिल है। और हां, तो ऐसा कुछ मैं का उपयोग करने में क्या है पसंद एक है जो एक ORM, के रूप में जाना जाता है वस्तु संबंधपरक मानचित्रण। और एक के बिंदु वस्तु संबंधपरक मानचित्रण, दो अलग-अलग है कि वहाँ है तरीकों से आप डेटाबेस के बारे में सोच सकते हैं। उदाहरण तो यह है कि प्रोफेसर मालन आमतौर पर कक्षा में उपयोग करता है, Excel तालिका, जहां है आप इन पंक्तियों और इन कॉलम है, और उस के लिए वास्तव में उपयोगी है यह एसक्यूएल में प्रतिनिधित्व किया है कि कैसे और आप इसके साथ बातचीत कैसे, लेकिन यह वास्तव में है कि एक और तरीका कभी-कभी इसके बारे में सोचने के लिए उपयोगी है, वर्गों और वस्तुओं के मामले में है। तो बजाय सोच का प्रत्येक मेज के होने के रूप में निश्चित है कि इस पंक्ति जानकारी के लिए, आप वास्तव में कर सकते हैं होने के रूप में यह सोचने प्रत्येक मेज एक वर्ग है, की और उसके बाद हर उदाहरण वर्ग कुछ गुण है। की तो, इस उदाहरण में, उदाहरणों वर्ग तालिका में पंक्तियों हैं, और फिर प्रत्येक संपत्ति होगा तालिका में एक स्तंभ होना। तो, मुझे पसंद है कि ORM Peewee कहा जाता है का उपयोग करने के लिए। यह एक तरह की कुप्पी की तरह, वास्तव में छोटा है। मुझे लगता है वे एक साथ अच्छी तरह से जाना लगता है कि, लेकिन अन्य ORMs की एक बहुत हैं आप उपयोग कर सकते हैं। एक और अधिक लोकप्रिय एक है SQLAlchemy के रूप में जाना जाता है, और मैं क्यों मैं मूल रूप से याद नहीं कर सकते , SQLAlchemy खत्म Peewee चुना या मैं तुम्हें क्यों मैं बताना होगा यह एक सबसे अच्छा लगता है, लेकिन हम सिर्फ इस का उपयोग करने के लिए जा रहे हैं एक मैं इसे इस्तेमाल करने के लिए कैसे पता है। तो, एक सवाल है, क्यों है आप एक ORM का उपयोग कर परेशान करना चाहिए, बजाय सिर्फ सीधे की एसक्यूएल प्रश्नों लिख? और मैं सबसे अच्छा मामले में लगता है, आप वास्तव में नहीं है एसक्यूएल प्रश्नों लिखना है। मैं तुम्हें दिखाता हूँ के रूप में यह करने के लिए, बहुत आसान है चयन की तरह बातें करते हैं, प्रविष्टि, विलोपन, विशेष रूप से टेबल बनाने। यह बहुत आसान है एक वर्ग संरचना लिखते हैं, यह संरचना करने के लिए है की तुलना में एक बनाएं टेबल बयान है, लेकिन एक बात , के बारे में पता करने के लिए है ORM अपनी पूरी कोशिश करेंगे यह पता लगाने के लिए क्या सबसे कुशल एसक्यूएल क्वेरी, होगा लेकिन कभी कभी यह है कि यह गलत हो जाता है। और आप कर रहे हैं, खासकर अगर एक बड़ा डेटाबेस के साथ काम कर रहा है, आप एक प्रश्न है कि नोटिस कर सकते हैं कि, तेजी से चल रहा होना चाहिए वास्तव में समय ले रहा है। और तुम कैसे पर हुड के नीचे देखने के लिए अगर ORM, एसक्यूएल में है कि व्याख्या है यह कुछ कर रही हो सकता है वास्तव में हास्यास्पद, बस की तरह है क्योंकि यह अपने इरादों को गलत इशारा किया। और, समय जहां वहाँ किया गया है मैं इसे ओवरराइड करने के लिए किया था, और बस गए हैं बस, मेरे अपने एसक्यूएल प्रश्नों पर अमल यह एक अजीब तरह से पार्स था। तो, वहाँ कुछ बस रास्ते में, भूमि के ऊपर यह संकलित है कि अपने एसक्यूएल में नीचे बयान। तो, चलो जल्दी सुपर नजर डालते हैं एक डाटा मॉडल का एक सरल उदाहरण आप का उपयोग हो सकता है। तो, यह तो अजगर कोड, और है आप क्या करना चाहते पहली बात से है Peewee आयात *। तो, फ्लास्क, के विपरीत है जहां आप इन सभी अलग-अलग मॉड्यूल, और आप फ्लास्क आयात करना चाहते हैं, और एक खाका है, और कुछ दूसरों को लिखना हम बाद में देखेंगे कि, Peewee से, आप बस, सब कुछ आयात कर सकते हैं क्योंकि यह एक बहुत छोटा सा पुस्तकालय है। तो, आप क्या करना चाहते पहली बात यह है, वास्तव में इस डेटाबेस वस्तु बना। तो, तुम्हारे पास DB = SqliteDatabase, और फिर अपने डेटाबेस का नाम। और यह वास्तव में होगा एक डेटाबेस वस्तु बना आप Peewee के साथ, के साथ बातचीत कर सकते हैं। और फिर, हम वास्तविक है हम बनाना चाहते हैं कि मॉडल। तो मेज हम बनाना चाहते हैं। तो, Peewee के भीतर प्रत्येक वर्ग है अपने डेटाबेस के भीतर अपनी मेज। तो, कक्षाओं के सभी बेस मॉडल से विरासत, और राजधानी एम मॉडल है Peewee में परिभाषित किया गया है कि कुछ और। तो, अपने मॉडल के सभी चाहिए अपने उच्चतम सुपर क्लास के रूप में वारिस, वे से वारिस चाहिए मॉडल है, लेकिन वास्तव में अच्छा है क्या, आप वास्तव में अपने हो सकता है मॉडल एक दूसरे से वारिस। और समय की एक बहुत कुछ है, अपने डेटा मॉडल जरूरी नहीं है एक अच्छी विरासत पदानुक्रम बना है, लेकिन वे करते हैं, जहां बार, यह वास्तव में अच्छा है आप मॉडल है, क्योंकि एक दूसरे से निहित। तो, हम इस वर्ग में परिभाषित एक मॉडल विरासत में मिली है, जो 'छात्र', और यह तीन गुण है। ऐसा नहीं है, जो एक आईडी है एक PrimaryKeyField, जो प्रदान की है कि कुछ तो है Peewee द्वारा, नाम एक CharField है, और एक ग्रेड एक IntegerField है। इसलिए इस या नहीं हो सकता है कैसे CS50 वास्तव में सभी भंडार छात्रों के ग्रेड। ऐसा भी नहीं है, लेकिन यह है कि मैं इसे कैसे करना है। और फिर यह भीतर है, इस वर्ग के लिए, और इस आप के साथ कुछ कर सकता है अजगर, आप नेस्टेड कक्षाएं हो सकता है। और यह कुछ है कि Peewee के लिए आवश्यक है। तो, इस वर्ग के मेटा, आपके पास डेटाबेस है कि निर्दिष्ट करने के लिए वस्तु के बराबर हम ऊपर बनाए गए। और इस फाइल को इस तालिका में क्या कहना है वास्तव में समाहित किया जा रहा है। तो यह है कि आप कुछ है अपने मॉडल के सभी के भीतर करने के लिए। तुम बस निर्दिष्ट करने के लिए इस मेटा वर्ग के भीतर कि डेटाबेस DB के बराबर है। मैं तो अगर मैं आमतौर पर क्या करते हैं विभिन्न मॉडलों की एक गुच्छा, मैं एक आधार यह है कि मॉडल, मुझे लगता है कि आम तौर पर बस "बेस मॉडल 'कहते हैं कि मेटा वर्ग है, और यह DB के बराबर डेटाबेस सेट। और मेरे बाद के मॉडलों में से तो सभी कि आधार वर्ग से वारिस होगा। और फिर मुझे चिंता करने की जरूरत नहीं है मेटा वर्ग की स्थापना के बारे में। तो, यह वास्तव में हो जाता है जब एक एसक्यूएल बयान में नीचे संकलित, यह नीचे यह गंदा बात की तरह लग रहा है यहाँ, ", टेबल छात्र आईडी पूर्णांक बनाएं " जो कुछ। और, मैं यह छोटा लगता है कि, यहीं इस एसक्यूएल क्वेरी, लेकिन तुम यहाँ इस वर्ग पर नजर डालें तो आप पर हो रहा है कि क्या वास्तव में देख सकते हैं। तुम क्षेत्रों की किस प्रकार देख सकते हैं वे कहते हैं, क्या कर रहे हैं, देखते हैं, और हां, तो मुझे लगता है कि इस अजगर कोड को देख की तुलना में बहुत अधिक पठनीय है इस एसक्यूएल क्वेरी लिखने के लिए कोशिश कर रहा। तो, करने के लिए वास्तव में डेटाबेस का उपयोग, हम अजगर के भीतर से कनेक्ट करने के लिए है। तो, मैं आमतौर पर कहा जाता है एक समारोह में लिखने दो बातें करता है कि initialize_db। यह डेटाबेस में ले जाता है वस्तु DB और यह सिर्फ खोलता है, जो यह करने के लिए जोड़ता है डेटाबेस के लिए अनुभाग। आप सिर्फ हालांकि चला रहे हैं अपने स्थानीय मशीन पर वेबसाइट, यह चिंता करने की एक सुपर बड़ा सौदा नहीं है को जोड़ने और रखती बारे में, लेकिन आप चल रहे हैं एक वेबसाइट पर, आप यकीन है कि जब भी एक उपयोगकर्ता, कि यह सुनिश्चित करना चाहते हैं वे बाहर बंद करते हैं, यह करने के लिए जोड़ता है वेबसाइट, वे इतनी है कि आप डिस्कनेक्ट लॉग इन लोगों का एक झुंड की जरूरत नहीं है अपने डेटाबेस के लिए सभी को एक बार। और फिर, जब आप डेटाबेस से कनेक्ट, आप db.create_tables कॉल करना चाहते हैं और क्या आप चाहते हैं के लिए मॉडलों की सूची टेबल बनाने के लिए। यहाँ तो, मैं तो बस करना चाहते हैं इस छात्र के लिए इसे बनाने के। और फिर, क्या महत्वपूर्ण है, के लिए है सुरक्षित = सच है सबसे अधिक समय निर्दिष्ट करें। तो क्या इस बयान क्या करेंगे, यह है कि सारणी के लिए बनाता है छात्र मॉडल है, लेकिन केवल उस तालिका नहीं किया गया है पहले से ही बनाया गया है। यही कारण है कि क्या सुरक्षित निर्दिष्ट करता है। तो यह ऊपर लिख नहीं होगा अपने मौजूदा तालिका, यह केवल एक नए पैदा करेगा तालिका वहाँ एक नहीं है, अगर वहाँ। तो, अगर आप अभी बना सकते हैं टेबल एक बार एसक्यूएल का उपयोग कर। और फिर उस डेटाबेस बैठे वहाँ, और फिर हर बार से कनेक्ट, लेकिन यह सिर्फ करने के लिए आमतौर पर अच्छा है इस create_tables कॉल में डाल दिया है, इसलिए, कि आप कभी भी हटाते हैं, तो आपके डेटाबेस जब आप अपने वेब चलाने एप्लिकेशन फिर, यह है कि यह विश्राम करेंगे। तो, सिर्फ सुरक्षित सुनिश्चित करें कि यह सच होने के लिए निर्दिष्ट किया जाता है, या तुम सिर्फ अपने डेटा मिलेगा हर बार clobbered हो रही है। और फिर, आप बस फोन कर सकते हैं स्थापित करने के लिए initialize_db एक कनेक्शन है, और बनाने टेबल यदि आवश्यक है। तो, सबसे आम बात आप क्या करना चाहते हो जाएगा कि, या सबसे आम बातों में से एक, वास्तव में चीजों को डालने के लिए है अपने डेटाबेस में। और हां, तो बजाय होने में एक डालने लिखने के लिए सब के साथ बयान मान निर्दिष्ट, आप वास्तव में कॉल कर सकते हैं छात्र वर्ग पर कार्य करते हैं। तो, अगर आप एक वर्ग जब बनाने कि, मॉडल से विरासत में मिली यह इस विधि बनाने की है। तो, अगर आप वर्ग name.create करते हैं, और आप पैरामीटर आप में पारित करने के लिए चाहते हैं। तो, मैं कुछ छात्रों को जोड़ना चाहते हैं हमारे CS50 ग्रेड किताब उदाहरण के लिए, मैं जो एक है, डेविड में डाल देता हूँ बहुत अच्छा ग्रेड, वह एक 95 है। और अपने आप को, कौन नहीं कर रहा है इतनी अच्छी तरह से CS50 में, मैं एक 50 है। और हां, तो अच्छी बात के बारे में इस बनाने के समारोह में क्या करता है, यह उदाहरण देता है, या यह है कि पंक्ति, यह तालिका के अंदर बनाए गए, और यदि ऐसा है तो आप एक में है कि दुकान चर, और बाद में इसके साथ काम करते हैं। तुम्हें पता है, चारों ओर बदल सकते हैं जो मैं का एक उदाहरण दिखाता हूँ। मैं नहीं था कि नोटिस आईडी निर्दिष्ट करने के लिए, यह है के बाद से, क्योंकि PrimaryKeyField, यह स्वतः ही होगा आप यह निर्दिष्ट नहीं करते हैं तो यह वेतन वृद्धि। और, वास्तव में, आप शायद यह निर्दिष्ट नहीं किया जाना चाहिए, अगर आप गलती से हो सकता है क्योंकि किसी और की आईडी पीटना। और आप बनाना चाहते हैं यह अद्वितीय है कि सुनिश्चित करें। तो, वास्तव में, सबसे आप क्या करना चाहते आम बात है, शायद बाहर का चयन किया गया है आप एक बार डेटाबेस की वहाँ में जानकारी का एक बहुत कुछ है। और हां, तो आप सब कुछ प्राप्त करना चाहते हैं, इसलिए चयन स्टार के बराबर छात्रों के बयान से यह सिर्फ student.select होगा। और कहा कि एक सरणी तुम वापस दे देंगे छात्र की यह सब में वस्तुओं के साथ आप पर पुनरावृति कि आप चाहते हैं। आप इसे से बाहर चीजें मिल सकती है। और ज्यादातर समय, आप बस का चयन करने के लिए नहीं करना चाहती, आप वास्तव में कुछ निर्दिष्ट करना चाहते हैं। और हां, तो आप श्रृंखला कर सकते हैं एक साथ इन समारोह कॉल, कैसे आप श्रृंखला होगा जैसे एसक्यूएल में एक साथ बयान। तो अगर आप) (student.select कर सकते हैं। जहां इस उदाहरण में। और फिर, आप कर सकते हैं , शर्तों को निर्दिष्ट सिर्फ सामान्य अजगर का उपयोग Booleans चीजों की जांच की। इसलिए, इस मामले में, आप करना चाहते हैं आप के लिए चयन कर रहे सीमा क्या student.grade 50 के बराबर है, जहां और student.name, एजरा के बराबर है तो यह है कि अभी इसके बारे में मुझे बाहर निकल जाएगा। और वास्तव में, एक को नोटिस सूक्ष्म बात यहाँ है आप निर्दिष्ट करना चाहते हैं, कि एक और / या एक या / या, अजगर में, आप सामान्य रूप से उपयोग होता है, मैं शब्द "और" वास्तव में लगता है लेकिन यहाँ आप एक एम्परसेंड उपयोग करते हैं, जो सामान्य रूप से एक बिटवाइस ऑपरेटर है, लेकिन इस विशेष मामले में, अभी जिस तरह से Peewee यह करता है, अगर आप सिंगल उपयोग एम्परसेंड निर्दिष्ट "और है।" यही कारण है कि कुछ है कि मैं एक बहुत मिश्रित मिल, लेकिन यह नहीं आती व्यवहार में है कि अधिक। और फिर, एक बार आप सभी का है डेटाबेस से बाहर छात्रों, तुमने क्या किया है एक बार आप का चयन कर रहे हैं और अपने पहनते हैं या जो भी, आप एक foreach पाश का उपयोग कर सकते हैं, बस, पायथन में सामान्य की तरह इटरेटर के किसी भी प्रकार के साथ या सरणी के किसी भी प्रकार के साथ। तो अगर आप एस के लिए, कर सकते हैं student.select में ()। whe (Student.grade <75), और इसलिए इस इच्छा फिर से तालिका में प्रत्येक छात्र पर पुनरावृति जिसका ग्रेड, 75 से कम है जो इस मामले में अभी भी सिर्फ मुझे है। और फिर आप के भीतर कुछ कर सकता है कि पाश की तरह मुझे एक ईमेल भेज और मुझे वास्तव में बताने के लिए मेरी समस्या सेट में बदल जाते हैं। तो, एक और बात यह है कि आप कर सकते हैं क्या करना है, यह वास्तव में आसान है है तालिका के अंदर पंक्तियों को अद्यतन करने के लिए। तो, यहाँ वापस याद है, अपनी मैं जब डाला, मैं था कि मान लिया student.create से लौटे, और मैं एजरा बुलाया नाम को सौंपा। और हां, अब आप बदल सकते हैं कि उदाहरण के भीतर मूल्यों, बस की तरह आप एक पायथन में सामान्य वर्ग। तो आप सेट कर सकते हैं ezra.grade = 95 और कि स्थानीय प्रतिलिपि को अद्यतन करेगा, लेकिन आप वास्तव में करना चाहते हैं डेटाबेस के लिए कि परिवर्तन के लिए प्रतिबद्ध है, आप ezra.save बुलाना है इसलिए आप .save विधि बुलाया मिसाल के तौर पर। और हां, अब मैं सफलतापूर्वक बदल गया है डेटाबेस के भीतर अपने स्वयं के ग्रेड। तो, तो चलो मैं पकड़ा कि हम कहते हैं डेटाबेस के भीतर अपने ग्रेड बदल रहा है। प्रोफेसर मालन शायद जा रहा है वर्ग से मुझे हटाना चाहते हैं करने के लिए, और इसलिए आप .delete कॉल कर सकते हैं सिर्फ इतना है कि बात पर उदाहरण विधि। अगर तुम चाहते थे तो, जाना वापस इस पाश में यहाँ, और वास्तव में, बजाय सभी ईमेल भेजने की छात्रों की जिसका ग्रेड कम है 75 से, आप उन्हें नष्ट करना चाहता था, इस लूप के भीतर तुम सकता है s.delete उदाहरण कहते हैं। और आप क्या करना चाहते आखिरी बात, आप एक कनेक्शन स्थापित जब भी है, और अगर आप अपने काम से काम हो गया आप db.close कॉल करना चाहते हैं जहां DB कि डेटाबेस है हम पहले था कि वस्तु। और आपको लगता है कि यह सुनिश्चित करना चाहते हैं सब कुछ के बाहर से बंद कर दिया जाता है। कूल। तो अब, मैं एक उदाहरण आवेदन किया है। की तरह मैं अभी सब कुछ पूर्व बनाया गया है, तो यह है कि किसी भी जीवित कोडिंग नहीं होगा गलतियों, लेकिन हम के माध्यम से चल सकता है यह और आप फ्लास्क रखा जाएगा कि कैसे देखते हैं और साथ में Peewee, और एक सरल अनुप्रयोग बनाते हैं। मैं CS50 शेख़ी इसे कहते हैं, और यह है एक साधारण ब्लॉग मंच की तरह। तो, सबसे पहले, मैं इसे चलने देंगे और , क्या ऐसा लग रहा दिखाने और फिर हम कोड में और अधिक देख सकते हैं। ठीक है, तो सिर्फ इस चलाते हैं। , मैं इस कूल बना देंगे थोड़ा छोटा। यह सिर्फ इसलिए नहीं बहुत सुंदर है मैं, सीएसएस का एक बहुत कुछ नहीं किया लेकिन यह क्या करता है, यह है, है ब्लॉग पोस्ट के इस डेटाबेस, और यह सभी के माध्यम से चला जाता है उन्हें, और यह उन्हें प्रदर्शित करेगा सबसे हाल के आदेश में पेज पर। और हां ये सिर्फ कुछ पोस्ट कर रहे हैं मैं डेटाबेस में बचाया था। हम एक नया बनाना चाहते हैं तो पद, हम एक नई पोस्ट जोड़ें करने के लिए जा सकते हैं और हम के खिताब से प्रवेश कर सकते हैं पद, तो कुछ की तरह, CS50 संगोष्ठी। वाह, वास्तव में संगोष्ठी का आनंद ले रहे। कूल। तो फिर आप बाद प्रेस, और यह होगा होम पेज पर आप वापस रीडायरेक्ट, और उसके बाद आप देखेंगे कि नवीनतम पोस्ट जोड़ा गया है। और हम अभी भी वहाँ सभी लोगों के लिए है। तो अब, चलो सब के माध्यम से कदम चलो कोड और इस कार्यान्वित किया जाता है कैसे देखते हैं। इसलिए मैं समझता हूं कि चलो पहली बात यह लगता है , वास्तव में मॉडल है पर एक नज़र रखना। समय की एक बहुत, जब यदि आप कुछ डिजाइन कर रहे हैं, आप कैसे के बारे में पहले सोचना चाहते यदि आप अपने डेटा का प्रतिनिधित्व करने के लिए जा रहे हैं और फिर उस के आसपास बातें डिजाइन, तो यह है कि सब कुछ समझ में आता है। और कहा कि मैं वास्तव में कैसे है मैं यह कर रहा था, जब यह किया मैं बैठ गया और सोचा मैं एक पोस्ट में क्या करना चाहते हैं। तो, यहाँ, हम एक ही संरचना है जैसा कि मैंने पहले उल्लेख किया गया है कि, हम DB = Sqldatabase ('posts.db') करते हैं। हकीकत में, आप शायद नहीं करना चाहते आपके नाम के डेटाबेस में कड़ी मेहनत करने के लिए कोड। यही कारण है कि शायद एक पैरामीटर होना चाहिए हो सकता है कि कहीं न कहीं संग्रहीत किया जाता है एक config फाइल में है, लेकिन में इस तरह से एक छोटा सा उदाहरण है, यह है कि मुश्किल में कोड के लिए ठीक है। तो अब, हम इस पोस्ट वर्ग है, जो बेस मॉडल से विरासत में मिली है। और यह फिर से है, आईडी = PrimaryKeyField। असल में, आप निर्दिष्ट नहीं करते हैं, तो मैं वास्तव में इस से छुटकारा मिल गया है, तो फिर हम का ख्याल रखना होगा Peewee स्वचालित रूप से उस आईडी क्षेत्र बनाने, और यह स्वचालित रूप से होगा यह एक PrimaryKey, जो करना मैं, क्योंकि आम तौर पर, सच में अच्छा लगता है कि, आप चाहते हैं कुछ है लेकिन मैं विशेष रूप में डाल करना चाहते, अभी तो मैं यह वहाँ में है कि याद है। लेकिन आपको लगता है कि निर्दिष्ट नहीं करते हैं, तो कि स्वचालित रूप से की जाएगी। तो फिर, मैं एक तारीख है जो एक DateTimeField है, और सभी इन विभिन्न क्षेत्रों, अगर आप Peewee प्रलेखन को देखो, यह आप अलग अलग की एक सूची दे देंगे आप उपयोग कर सकते हैं कि खेतों के प्रकार। अधिकांश भाग के लिए, यह अनुरूप है आप एसक्यूएल में देखना होगा कि क्या करने के लिए। तो एक CharField एक है, वहाँ है VarCharFields, textfields, बहुत लंबे समय के लिए जो कर रहे हैं एक ब्लॉग पोस्ट की तरह ग्रंथों, संभवतः, DateTimeFields, DoubleFields, FloatFields, लगता है कि जैसे सब बातें। और आप अन्य बहस में पारित कर सकते हैं यह करने के लिए, मैं यहाँ निर्दिष्ट नहीं किया है। कहते हैं, उदाहरण के लिए, यदि आप नहीं करना चाहता था दो पदों में एक ही शीर्षक है करने की अनुमति, आप निर्दिष्ट कर सकता है यह सच है कि अद्वितीय तरह कुछ =, और कहा कि सिर्फ एक अतिरिक्त पैरामीटर है यह इसके नीचे का संकलन करता है कि जब क्षेत्र एसक्यूएल में, यह निर्दिष्ट करेगा यह है कि अद्वितीय हो। तुम भी तरह कुछ निर्दिष्ट कर सकते हैं नहीं अशक्त और अन्य सभी चीजें आप सामान्य रूप से एसक्यूएल में करते हैं। तो, यह एक बहुत आसान है तिथि है कि मॉडल। DateTimeField भीतर, यहाँ पर ध्यान दें, मैं डिफ़ॉल्ट है क्या निर्दिष्ट। मैं होना यह निर्दिष्ट , datetime.datetime.now क्योंकि जिस तरह की है कि इस का मूल्यांकन किया जाता है, यह वास्तव में मूल्यांकन करता है datetime.now जब यह डेटाबेस में डाला जाता है। मुझे लगता है मैं होता है कि लगता है इस दोहरी जांच करने के लिए, लेकिन आप तो कुछ इस तरह था कि अगर यह वास्तव में, कि एक बार मूल्यांकन होगा और फिर दिनांक हमेशा एक ही होगा। तो, अगर आप कुछ कर रहे हैं अगर सिर्फ datetimes साथ दोहरी जांच यह जब मूल्यांकन कर रहा है कि वास्तव में बाकी डाला, या हो जाता है आप भ्रमित हो सकता है। शीर्षक सिर्फ एक है CharField, वहाँ जो आप पास कर सकते हैं और अधिक बहस कर रहे हैं निर्दिष्ट करने वास्तव में कितनी देर में आप इसे देखना चाहते हैं, लेकिन यहां यह वास्तव में कोई फर्क नहीं था। और पाठ किया जा रहा है पूरी पोस्ट का पाठ और कहा कि एक होने जा रहा है आप चाहते हैं, सिर्फ इसलिए कि TextField यह एक बहुत लंबी स्ट्रिंग होने की अनुमति देने के लिए। तो फिर हम इस मेटा है उपवर्ग है कि बस हम डेटाबेस चाहते हैं कि निर्दिष्ट यह वास्तव में खोला है जहां हम यहाँ है कि डीबी वस्तु हो। और आखिरी बात हम है यहां सिर्फ इस समारोह है हम करने जा रहे हैं कि हमारी मुख्य अनुप्रयोग से उपयोग से कनेक्ट करने के लिए डेटाबेस प्रारंभ करने के लिए यह, और फिर पोस्ट तालिका बनाने के लिए। अब, हम मुख्य अनुप्रयोग ही को देखो। तो यह एक है काफी लोगों की तुलना में लंबे समय तक सा हम पहले देखा है कि, लेकिन उम्मीद है कि बहुत बुरा नहीं। तो, मुझे यह बाहर का विस्तार करते हैं। ठीक है। तो, नोटिस और शीर्ष मैं आयातित अन्य चीजों की एक पूरी गुच्छा कुप्पी से हम नहीं है कि वास्तव में पहले कभी नहीं देखा। और उम्मीद है, हम के माध्यम से जा सकते हैं इन एक के बाद एक से हर एक को और के बारे में एक छोटे से अधिक बात उन्हें, उदाहरण के द्वारा हल। तो, हम, फ्लास्क है और render_template, जो हम पहले देखा है इस अनुरोध वस्तु, हम देखो कैसे जब तक आ जाएगा जो मैं वास्तव में दिखा रहा था कि फार्म काम करता है। आप को दिशानिर्देश देता है, जो पुन: निर्देशित वापस बनाएं नई पोस्ट से मूल मुखपृष्ठ पर वापस, और उसके बाद आप की सुविधा देता है कि कुछ है जो यूआरएल, पर जहां यह पता लगाने वेबसाइट पर एक विशेष पेज है। तो फिर, अगले मैं क्या बात है, मैं आयात होता है मॉडल से जानकारी के सभी हम बस पर देख रहे थे कि फ़ाइलें। और, हाँ। तो, नया कुछ और आता है कि आप के साथ काम कर रहे हैं जब तक, विशेष रूप से डेटाबेस, आप निर्दिष्ट कर सकते हैं पहले कहा जाता हो जाता है कि एक समारोह हो जाता है कि हर अनुरोध, और समारोह इस का उपयोग कर, हर अनुरोध के बाद बुलाया समारोह डेकोरेटर app.before अनुरोध। और इसलिए इस मार डाला जाएगा जहां भी इस समारोह है। यह होना जरूरी नहीं है अनुरोध करने से पहले कहा जाता है, लेकिन आम तौर पर है कि कुछ है यह कॉल करने के समझदार। आप जो कुछ भी समारोह निर्दिष्ट कर सकते हैं तुम वहाँ बुलाया प्राप्त करना चाहते हैं इसलिए मैं इस initialize_db निर्दिष्ट हम मॉडल में वापस था कि समारोह फ़ाइल है, तो हर अनुरोध करने से पहले, आप डेटाबेस से कनेक्ट करना चाहते हैं। अलग-अलग दो रहे हैं तरीकों से आप यह कर सकते हैं। आपapp कर सकते हैं।, मैं यह after_request है विश्वास। और के बीच अंतर after_request और teardown_request, after_request तभी हो जाएगा कि है अनुरोध वास्तव में वैध था। और हां, तो सिर्फ अगर अनुरोध सफल रहा था, , कुछ भी गलत हो गया है, तो लेकिन teardown_request एक सफल के मामले में होता है अनुरोध है, या किसी त्रुटि के मामले में। तो, आमतौर पर, आप चाहते हैं teardown_request का उपयोग करने के लिए, आप क्या करना चाहते हैं जब तक विशेष रूप से कुछ अलग है, एक त्रुटि के मामले में। लेकिन सिर्फ डेटाबेस को बंद करने के लिए, , यह सफल होता है या अगर यह विफल रहता है कि क्या हम आप डिस्कनेक्ट करने के लिए करना चाहते हैं डेटाबेस से। तो यह db.close, कहा जाता है डीबी वस्तु पर। Teardown_request कि नोटिस एक अपवाद में लेता है। वास्तव में अगर वहाँ था तो आप देख सकते हैं एक त्रुटि यह नीचे बंद किया गया था जब लेकिन यहाँ, उम्मीद है, वहाँ त्रुटियों की एक पूरी बहुत कुछ नहीं कर रहे हैं, तो हम बस की तरह है कि अनदेखी कर रहे हैं। ठीक है, और बाकी की भी बुरा नहीं है। तो, हम घर पृष्ठ पर जाने के लिए जब, हम इस home.html खाका प्रदान की गई है कि खुल जाएगा। पास पोस्ट में है और क्या इस के बराबर , हम इस पोस्ट याद किया जाता है करता है मॉडल है, इसलिए हम सभी पदों का चयन और फिर आप क्या कर सकते हैं एक और बात, आप कहां खंड निर्दिष्ट कर सकते हैं आप एक निर्दिष्ट कर सकते हैं द्वारा आदेश है, और इसलिए हम ले पदों की है कि सभी तब चयनित हो, और हम उनके द्वारा आदेश post.date.descending। और कहा कि निर्दिष्ट करेगा, जब वे वास्तव में बाहर आ सबसे हाल ही में एक बहुत पहले एक हो जाएगा। और फिर, हम में है कि पारित home.html टेम्पलेट, तो चलो वास्तव में ऊपर खुला बहुत जल्दी है कि खाका और कहा कि काम कर रहा है पर एक नज़र रखना। और यह महान एचटीएमएल नहीं है, लेकिन उम्मीद है, हम अजगर पर ध्यान केंद्रित कर सकते हैं। इसलिए जोड़ें नए के लिए एक कड़ी है पोस्ट, और इसलिए इस मार्ग को निर्दिष्ट फ्लास्क के भीतर है कि हम यहीं है, जो परिभाषित करते हैं। इस नए पद मार्ग है, और हम यहाँ है कि ऊपर निर्दिष्ट करें। और इतना है कि तब जाना होगा कि एक कड़ी है फ्लास्क सर्वर के भीतर है कि मार्ग के लिए। अधिक दिलचस्प बात यह है कि यहां पाश के लिए यह है। इसलिए हम यह है कि निर्दिष्ट पोस्ट पैरामीटर जो में पारित किया गया था render_template समारोह, पोस्ट के दशक में हर पद के लिए में पारित हो जाता है कि वस्तु। हम बाहर मुद्रित करना चाहते हैं पोस्ट शीर्षक, एच 1 में, और फिर नीचे, हम बाहर मुद्रित करना चाहते हैं एक पैरा के भीतर पोस्ट पाठ। और यहाँ, हम वास्तव में कर सकते हैं एक अजगर समारोह कॉल, इसलिए हम strftime कॉल कर सकते हैं, अनुसूचित जनजाति-आरएफ समय, और आप प्रारूप स्ट्रिंग में पारित कर सकते हैं आप में से बाहर डेटा मुद्रित करना चाहते हैं। तो यह आप कर सकते हैं कि बहुत अच्छा है है वास्तव में इस अजगर समारोह फोन यहां के भीतर से। आप पर स्वरूपण करने की जरूरत नहीं है नियंत्रक की ओर, क्योंकि वास्तव में, तिथि स्वरूपण कुछ है कि आप देखने के भीतर काम करना चाहते हैं। और इन प्रतिशत के सभी बातें सुपर महत्वपूर्ण नहीं है। आप दस्तावेज को देखो अजगर में strftime समारोह के लिए, यह इन सभी को निर्दिष्ट बातें करते हैं, लेकिन लगता है कि कैसे, जब हम देख रहे थे यहां के मुख पृष्ठ पर, यह एक अच्छा के साथ इस प्रारूपों तिथि, और यह निर्दिष्ट AM या PM, लेकिन आम तौर पर, अगर हम यहां यह नहीं था, आप शायद कुछ कचरा मिलेगा बहुत अच्छा नहीं लग रही थी उस तारीख। और फिर हम निर्दिष्ट post.text, मैं और कर सकता है एक जोड़े की डाल दिया है लाइन बस, यहाँ टूट जाता है हर पोस्ट के बीच कुछ रिक्त स्थान डाल दिया। तो, मैं सबसे महत्वपूर्ण लगता है इस उदाहरण में बात, आप पाश के लिए इसका उपयोग कर सकते हैं। और इस के अनुरूप है चीजें आप पीएचपी में कर सकते हैं। तुम्हें पता है, के माध्यम से पुनरावृति कर सकते हैं सब कुछ है, में पारित हो जाता है और हां, तो बजाय होने का क्या करना कॉपी / पेस्ट, कॉपी / सभी HTML पेस्ट अगर आप अभी तो एक बार यह लिखने के लिए है, और आप पोस्ट के सभी पुनरावृति कर सकते हैं। और यह कुछ है आप चाहते हैं कि आम आप डेटा का एक बहुत कुछ है, जब ऐसा करने के लिए, , जो आपके डेटा में सब कुछ के लिए है आप एक ऐसी ही बात करना चाहते हैं। और फिर, बस याद है जब आपको लगता है कि स्पष्ट रूप से कुछ बाहर मुद्रित करना चाहते हैं HTML में, आप का उपयोग यहां डबल ब्रेसिज़, लेकिन फिर आप निर्दिष्ट करना चाहते हैं जब एक की हालत के बारे में कुछ जानकारी या के बारे में एक पाश के लिए, आप प्रतिशत ब्रैकेट का उपयोग करें। तो, पायथन के लिए वापस जा रहा कोड, तो बताते हैं कि क्या मुख्य में हो रहा है मार्ग, हम वहाँ जाना है, यह सिर्फ प्रदर्शित करता है सब पदों, लेकिन फिर सवाल , कैसे हम वास्तव में प्राप्त करते हैं डेटाबेस में पदों जो थोड़ा और अधिक रोचक है। इसलिए, जब आप नए पर क्लिक करें हम यहाँ देखा है जो पोस्ट लिंक, यह इस फार्म के लिए आप पुनर्निर्देश। और कहा कि सिर्फ एक साधारण फोन है render_template समारोह, जो तब HTML के रूप में नई पोस्ट में गुजरता है। तो चलो उस पर एक नजर डालते हैं। तो यह एक बहुत आसान है। यह एक सरल HTML फार्म है, जो एक छोटा सा परिचित दिखेगा, CS50 वित्त में रूपों पर आधारित है। और हां, तो हम यहाँ कार्रवाई निर्दिष्ट करें। और यहाँ आप काम कर रहे हैं PHP के साथ, आम तौर पर, यह ऐसा कुछ होगा, create.PHP, लेकिन यहाँ हम वास्तव में एक मार्ग निर्दिष्ट फ्लास्क सर्वर के भीतर। और हां, इस मार्ग से मेल खाती है बनाने के मार्ग के लिए हम यहाँ है कि जो हम एक दूसरे में में जाना होगा। और हां, तो हम उस निर्दिष्ट यह एक के बाद विधि है हम भेजना चाहते हैं क्योंकि इस प्रपत्र डेटा, और आमतौर पर आप एक रूप से डेटा भेजने रहे हैं, आप एक पोस्ट अनुरोध का उपयोग करने के लिए चाहते हो सकता है, आप अंत नहीं है, बस इतना इस बड़े, बोझल यूआरएल के साथ। लेकिन तुम भी एक अनुरोध प्राप्त इस्तेमाल कर सकते हैं, और, चर मार्ग के साथ उस में पारित लेकिन रूपों के लिए, यह अच्छा है यहाँ एक पोस्ट अनुरोध करने के लिए। और इतना तो बस आप की तरह HTML और PHP के साथ क्या होता है, आप इन पाठ आदानों निर्दिष्ट कर सकते हैं, और आप उनमें से नाम निर्दिष्ट कर सकते हैं, और कहा कि पारित हो जाएगा कि नाम है फ्लास्क के भीतर अनुरोध वस्तु में। और फिर हम एक प्रस्तुत किया है बटन पोस्ट का कहना है कि। और यहाँ, पद का नाम है बटन, यह एक ब्लॉग पोस्ट है, क्योंकि लेकिन यहाँ, पोस्ट अनुरोध विधि है। तो वे एक ही शब्द हैं लेकिन वास्तव में असंबंधित। हाँ अजगर कोड के लिए वापस जा रहे हैं, हम विधि बनाने जब कहा जाता है, यहाँ नोटिस कि आप कर सकते हैं वास्तव में मार्ग के भीतर निर्दिष्ट अनुरोध तरीकों आप स्वीकार करना चाहते हैं कि, और तो यहाँ, मुझे लगता है कि मैं निर्दिष्ट केवल एक पोस्ट विधि स्वीकार करना चाहते हैं। तो, मैं वास्तव में पेज यात्रा करने की कोशिश करता है, तो सीधे, एक अनुरोध प्राप्त उपयोग कर रहा है, जो यह "विधि की अनुमति नहीं है।" मुझे बताना होगा और हां, अगर आप की तरह की तरह पृष्ठों है मैं केवल हूँ जो इस बनाने के पेज, वास्तव में एक रास्ते के रूप में प्रयोग फार्म जमा करने के लिए, क्या आप ऐसा नहीं है कि निर्दिष्ट कर सकते हैं लोगों को वहाँ जाने के लिए सक्षम होना चाहता हूँ सीधे एक अनुरोध प्राप्त के माध्यम से, या आप नहीं करना चाहता था, तो किसी कारण के लिए, एक पोस्ट अनुरोध, आप बस, यहाँ लाने निर्दिष्ट कर सकता है लेकिन इस उदाहरण में, हम सिर्फ पोस्ट अनुरोध बाहर जाना चाहते हैं। तो, create_post कहा जाता है, जब हम, पोस्ट अनुरोध के माध्यम से उस यात्रा यदि आप किसी खास के लिए जाने के लिए जब भी मार्ग, इस अनुरोध को वस्तु नहीं है, और हम आयात करना पड़ा ऊपर से ही अनुरोध, लेकिन इस अनुरोध को भी नहीं है में पारित हो जाता है कि वस्तु, और आप प्रपत्र डेटा का उपयोग कर सकते हैं, जो स्वचालित रूप से भरा हो जाएगा आप एक रूप से एक अनुरोध भेजने के लिए जब। और फिर, मैं क्या लगता है वास्तव में अच्छा है प्रपत्र वस्तु पारित करने के लिए है कि में, बस एक अजगर शब्दकोश है कि आप तो यहाँ access-- हैं, तो, चलो शामिल मुझे सिर्फ यह करने के लिए अगले एचटीएमएल तक खींच इसलिए आपको लगता है कि हो सकता है एक संदर्भ है, हाँ, इतनी के रूप में हम यहाँ निर्दिष्ट उन नामों विभिन्न क्षेत्रों के लिए है, इसलिए शीर्षक और पाठ, हम फिर बस यहाँ पर उन का उपयोग प्रपत्र डेटा में सूचकांक के रूप में। तो यह है कि सुपर सुविधाजनक है। तो फिर हम post.create जो फोन बनाने के लिए और स्वचालित रूप से डालने जाएगा डेटाबेस में इस नए पद वस्तु। और मैं इस समारोह बनाने के बारे में सोच यहाँ कैसे की एक बहुत अच्छा उदाहरण है शक्तिशाली फ्लास्क और इस के साथ काम कर रहा है आप कुछ कर रहे थे, क्योंकि अगर PHP में, आप के लिए हो सकता है सत्यापन के लिए बहुत कुछ कर, तुम तो करना होगा एक डेटाबेस कनेक्शन स्थापित, तुम तो करना होगा एसक्यूएल क्वेरी को निष्पादित, लेकिन यहाँ हम बस यह अच्छा है post.create, जो हम तो कर सकते हैं बस जानकारी बाहर निकलना अनुरोध वस्तु की, और फिर एक नया में इसे पारित हम बना रहे हैं कि पोस्ट। और, बहुत पिछले तब हम क्या करना चाहते बात है, रीडायरेक्ट करने के लिए है घर के लिए उपयोगकर्ता वापस। और इसलिए हम इस का उपयोग फ्लास्क समारोह भेज दें। और कुछ हम नहीं देखा था कि इससे पहले, इस यूआरएल समारोह था। तो समारोह के लिए URL की सुविधा देता है आप वास्तव में नाम में पारित अपने अजगर कोड में एक समारोह का, बल्कि विशेष मार्ग से कि उस पर है। तो मैं बस के रूप में आसानी से हो सकता था स्लेश करने के लिए एक उपयोगकर्ता निर्देशित कर दिये, जो इसे घर वापस भेजने के लिए, लेकिन होगा समारोह अच्छा है के लिए यूआरएल का उपयोग कर, आप बदल सकते हैं, क्योंकि अगर बातें कर रहे हैं, जहां पांच, तो चलो मैं बदल कि हम कहते हैं घर, बजाय / घर पर होना यह अभी भी उसके बाद लौटेंगे / घर, वास्तव में चला जाता है और लग रहा है क्योंकि समारोह के नाम पर है, और यह तुम उस के लिए यूआरएल वापस दे देंगे। तो, एक तरह से पर आप कर रहे हैं कि इस धारणा जहां चीजों को बदलने के लिए और अधिक होने की संभावना कार्यों के नाम से कर रहे हैं। आप वास्तव में इस का उपयोग कर सकते हैं समारोह के लिए अच्छा यूआरएल। और एक बात के बारे में पता करने के लिए कि, थोड़ा मुश्किल है तुम सिर्फ सकता है लगता है कि के लिए यूआरएल पर पुनर्निर्देशित कर कहते हैं, लेकिन वास्तव में मार्गों के सभी है पाठ और HTML के कुछ प्रकार के लौटने के लिए, ताकि आप वास्तव में करने के लिए है अनुप्रेषित फोन वापस। अन्यथा, आप कुछ मिल जाएगा अमान्य एक स्ट्रिंग नहीं लौटने के बारे में, इन सब के लौटने के लिए है क्योंकि एचटीएमएल आप वास्तव में प्रस्तुत करना चाहते हैं। और हां, तो आप अनुप्रेषित फोन करते हैं, यह पेज पर रीडायरेक्ट लेकिन यह वास्तव में एचटीएमएल रिटर्न आपको लगता है कि अनुप्रेषित पर अमल करने की जरूरत है। वापस मुख्य पृष्ठ पर जाएं। इसलिए हम इन दो अलग-अलग विचार हैं। हम घर दृष्टि से देखते हैं। या, मैं मैं टेम्पलेट्स कहना चाहिए लगता है। हम इन दो टेम्पलेट्स, घर टेम्पलेट जो हमारे पदों के सभी प्रदर्शित करता है, और फिर हम इस विज्ञापन बात है, आप पोस्ट क्लिक करें और जब यह हो जाता है फ्लास्क के भीतर एक नया मार्ग को, लेकिन लगता है कि मार्ग जरूरी नहीं है एक इसी टेम्पलेट है। तुम देखो की जरूरत नहीं है कुछ भी हो, लेकिन आप अभी भी कर सकते हैं इस काम से जा रहा है परदे के पीछे। और फिर आप पुनः निर्देशित हो वापस होम पेज पर। और निश्चित रूप से, यह काम करने के लिए आसान है टेम्पलेट में कुछ अच्छे सीएसएस में और यह एक बहुत अच्छे लग रहे बनाने के लिए, लेकिन मुख्य तर्क के सभी अजगर में नहीं है। कि उदाहरण के बारे में कोई सवाल? मैं एक बहुत की कर रहे हैं पता अलग अलग चीजें हैं, वहाँ पर जा हम नहीं देखा था बहुत सारी बातें इससे पहले, लेकिन कुछ भी पसंद है। हाँ। दर्शकों 1: आप कुछ भी करने के लिए क्या है है कि डेटा हाथ धोने के लिए विशेष फार्म से में आ रहा है? मैंने कहा, "बनाते हैं," अगर आप सिर्फ इतना कहा देखा EZRA Zigmond: हाँ, तो वह है वास्तव में, यह वास्तव में एक अच्छी बात है। सवाल था तो, आप करते हैं जाँच करें और सुनिश्चित करने की जरूरत डेटा, मान्य है और स्क्रबिंग के किसी भी प्रकार यह वैध है कि यह सुनिश्चित करना, आप यहाँ देख सकते हैं, क्योंकि मुझे लगता है कि नहीं कर रहा हूँ। तो चलो देखते हैं क्या होता मैं खाली कुछ पोस्ट है। इसलिए, यह वास्तव में सिर्फ एक बना देंगे खाली पद और दिनांक समय में भरें। तो वास्तव में, आप शायद होगा की तरह कुछ करना चाहते हैं, शीर्षक के बराबर है, तो शायद यह निर्दिष्ट खाली स्ट्रिंग, तो ऐसा नहीं करते हैं। शीर्षक है या, यदि सिर्फ यह करना है खाली स्ट्रिंग के बराबर नहीं। तो यह वास्तव में स्वचालित रूप से नहीं करता है कि स्क्रबिंग की देखभाल आप के लिए है, तो आप अभी भी है कि क्या करने की जरूरत। हाँ, अच्छा सवाल है। दर्शकों 2: यह साफ़ करता है अगली कड़ी इंजेक्शन के लिए? क्या आपको पता है? EZRA Zigmond: उम्मीद है, Peewee कि करता है। मैं यह निश्चित रूप से एक बहुत हो जाएगा लगता है बुरा पुस्तकालय यह है कि ऐसा नहीं किया। मुझे ठीक से पता नहीं है। मैं देखने के लिए होता है यह उत्पन्न करने वाली क्वेरी। मैं एक में टाइप करते हैं, तो लगता है कि एक तरह से देखा है कि ब्लॉग पोस्ट एक एसक्यूएल इंजेक्शन हमले की तरह, कुछ इस तरह, अगर यह एक पासवर्ड क्षेत्र या कुछ और की तरह है, आप इस तरह से कुछ कर सकता है। मुझे लगता है कि अभी भी लगता है कि सचमुच तैनात मिलता है, लेकिन मैं Peewee करता है कि लगता है डेटा की स्क्रबिंग के कुछ प्रकार यह वास्तव में इसे कार्यान्वित करने से पहले। दर्शकों 1: यह पाठ क्षेत्र है ठीक है, सादा पाठ लेने के लिए बनाया? EZRA Zigmond: हाँ, यह है। हाँ। इसलिए मुझे लगता है की सब को लगता है कि, तो यह है सही व्यवहार, कि ऐसा करेंगे, लेकिन मुझे लगता है कि Peewee लगता है उम्मीद है कि क्या करता है अपने अंत पर सुरक्षा के कुछ प्रकार। और अगर तुम चाहते थे डबल चेक, कि वहां आप एक प्रश्न उत्पन्न जब तरीके हैं। इसलिए यदि आप के लिए नहीं है इसे सीधे निष्पादित। मैं एक लेना होगा प्रलेखन को देखो, लेकिन आप वास्तव में देख सकते हैं यह पैदा होता है कि एसक्यूएल, और उस पर एक नज़र रखना, और बनाने यह बातें बचने है कि सुनिश्चित करें। एक और कारण है कि तुम हो सकता है एसक्यूएल में देखना चाहता हूँ कि Peewee यदि है, outputting है बातें करते हैं, वास्तव में धीरे धीरे जा रहा होने लगते हैं आप एक बार देख लेने के लिए और यह क्या देख सकते हैं कभी कभी ऐसा भी है, क्योंकि वास्तव में, कर रही है गलती से जोड़ने के लिए आसान में, जिस तरह से आप इसे लिखते हैं, अगर आप गलती से यह हो सकता है पहले पूरे डेटाबेस का चयन करें, और उसके बाद किसी प्रकार का ऑपरेशन करना उस पर, जब आप वास्तव में एक सबसेट का चयन करने के लिए होती। और हां, तो बातें करता है, तो नहीं हैं काफी सही जा रहा यह अनुरोध पर एक नज़र लेने के लिए अच्छा है कि वास्तव में उत्पन्न हो रही है। हाँ। दर्शकों 2: यदि आप पहली बार शुरू किया, आप 5000 के रूप में बंदरगाह में डाल दिया है। EZRA Zigmond: हाँ। दर्शकों 2: Peewee साथ डिफ़ॉल्ट है या आप बदल सकते हैं कि कुछ है? EZRA Zigmond: हाँ, तो पोर्ट कुप्पी के साथ डिफ़ॉल्ट है। आप बिना इसे चलाते हैं कुछ भी निर्दिष्ट यह स्वचालित रूप से ऐसा करेंगे। मैंने सोचा कि मैं होता है, का मानना ​​है इस दोहरी जांच करने के लिए, लेकिन आप app.run में है कि निर्दिष्ट कर सकते हैं मैं, आप ऐसा कुछ कर सकते हैं लगता है पोर्ट = 8080। के एक असली जल्दी की कोशिश है कि देते हैं। हाँ, तो आप सिर्फ निर्दिष्ट कर सकते हैं पोर्ट = 8080, और यह वहाँ यह चलेगा अगर तुम चाहते थे जो मुझे लगता है, इसे चलाने के लिए आईडीई पर, मैं इस बाहर की कोशिश नहीं की लेकिन मुझे लगता है कि अगर आप , पोर्ट 8080 पर वह भाग गया आप शायद सक्षम होगी सर्वर का उपयोग करने के लिए, बस आप वेबसाइट के लिए की तरह थे। हाँ, यह है, लेकिन आसान है बदलने के लिए है कि आप यदि जैसे बंदरगाह अग्रेषण के किसी भी प्रकार का है तुम क्या करने की जरूरत है कि चीजों। कोई ओर प्रश्न? हाँ? दर्शकों 1: तो, मैं में देखा अपने , जैसा कि आपने बताया कि मॉडल, आप निर्दिष्ट करने के लिए प्रत्येक वस्तु के लिए डेटाबेस। आप को पता होगा, क्या करता है कि आप यदि यह वास्तव में आसान बनाने के SQLite डेटाबेस के बहुत सारे है कि आप एक ही वेब अनुप्रयोग के लिए उपयोग करना चाहते हैं, आप सिर्फ एक गुच्छा निर्दिष्ट कर सकते हैं कि अपने मॉडल में से अलग अलग लोगों को? EZRA Zigmond: हाँ, मुझे जाने दो असली जल्दी कि ऊपर खुला। आप चाहते हैं, तो आप कह रहे हैं, कुछ अलग करने का एक गुच्छा, हो सकता है कुछ के लिए, चाहते हैं और छात्रों को कारण, ऐसा कुछ? हाँ, तो मुझे लगता है कि अभी भी आप प्रत्येक मॉडल अभी भी बस के लिए होता है उसे सौंपे एक डेटाबेस, लेकिन अगर तुम चाहते थे के लिए है विभिन्न मॉडलों कि विभिन्न डेटाबेस वस्तुओं सौंपा है यह करने के लिए, आप निश्चित रूप से ऐसा कर सकता है। तो, अगर मैं एक नया बनाया कुछ इस तरह, और अब यह एक छात्र है कि अजीब तरह से एक ब्लॉग पोस्ट की तरह लग रहा है मुझे लगता है कि निर्दिष्ट कर सकता है डेटाबेस यहाँ db_2 के बराबर है। तो, मुझे लगता है कि आप ऐसा कर सकते मुख्य रास्ता। कूल। कोई ओर प्रश्न? तो सिर्फ एक छोटे से खत्म करने के लिए बिट, यहाँ कुछ संसाधन हैं, और इन स्लाइड ऑनलाइन पोस्ट कर दिया जाएगा ताकि आप वास्तव में इन कड़ियों को प्राप्त कर सकते हैं। सर्वश्रेष्ठ संसाधनों वास्तव में कर रहे हैं फ्लास्क के लिए दस्तावेज और खुद को Peewee। वे वास्तव में अच्छी तरह से लिखा रहे हैं, मुझे लगता है। तो, फ्लास्क वेबसाइट यहाँ है, और वे एक quickstart ट्यूटोरियल है कि इसी तरह के माध्यम से चलना होगा मैं के माध्यम से चला गया क्या करने के लिए चीजें, लेकिन आप की समीक्षा की किसी भी तरह चाहते हैं मैं वहाँ गया था कि चीजों की, या आप मैंने समझाया कि सोचा एक भ्रामक रास्ते में कुछ है, वे वहाँ इसी तरह के उदाहरण होगा। Peewee दस्तावेज है, और वे एक quickstart ट्यूटोरियल है कि मुख्य मापदंडों पर चला जाता है आप उपयोग करना चाहते हैं जाएगा। तो, बातें मैं के साथ के बारे में बात की थी अद्वितीय, और निर्दिष्ट करने चूक, क्षेत्रों के विभिन्न प्रकार है कि आप उन सब नहीं होगी, का उपयोग कर सकते हैं। इसके अलावा, अगर आपके पास Peewee के बारे में सवाल, और आप, stackoverflow पर उन्हें पद वास्तव में Peewee बनाया है, जो पुरुष पर चला जाता है और कभी-कभी उन जवाब। उम्मीद है आप में एक सवाल है, तो उन्होंने कहा कि यह जवाब देने में सक्षम हो जाएगा वह सब कुछ लिखा है। मुझे लगता है कि सब कुछ लगता है मैं कवर करना चाहता था। बाहर आने के लिए धन्यवाद।