समाचार - साइट पर जाएँ
तीन तेरह - ऑनलाइन कार्ड गेम आमंत्रित कोड उत्पन्न करने या गेम में शामिल होने के लिए नीचे दिए गए लिंक पर क्लिक करके एक दोस्त के साथ तीन तेरह खेलें।कोड के साथ आमंत्रित करें खेल में शामिल हो ***
खरीददारी

द्वारा Daisy / देखना | खरीदना | क्रिप्टोक्यूरेंसी के साथ खरीदें



खेल रंग सुडोकू ऑनलाइन - मुफ्त कोलोर्डोकू खेल यह रंग सुदोकू (कोलोर्डोकू) खेल खेलने के लिए एक स्वतंत्र है। ***

द्वारा Daisy / देखना | खरीदना | क्रिप्टोक्यूरेंसी के साथ खरीदें


उदाहरण के लिए व्यावहारिक वेब आधारित गहरी शिक्षा और सुरक्षा तीसरा संस्करण शार्लोट हार्पर 3 जुलाई, 2024 Foreword: वेब के लिए सॉफ्टवेयर बिल्डिंग सॉफ्टवेयर में सुरक्षा विचार किसी भी वेब डेवलपर की योजना और निष्पादन का एक महत्वपूर्ण हिस्सा हैं, जबकि एक प्रोटोटाइप इंजीनियरिंग करते हैं जो व्यावहारिक उद्देश्यों के लिए भरोसेमंद, स्थिर और उपयोगी है। DOM (दस्तावेज़ ऑब्जेक्ट मार्कअप), HTML, जावास्क्रिप्ट, और CSS के कार्यान्वयन के साथ -साथ बैकएंड सॉफ़्टवेयर के कार्यान्वयन के साथ पायथन, C/C ++, जावा और बैश, वेब डेवलपर्स को स्वतंत्रता और शक्ति प्रदान करने की एक विस्तृत विविधता प्रदान करता है, जो रचनात्मकता को व्यक्त करता है, उपयोग और कार्यक्षमता प्रदान करता है। समय को मारने या इंटरनेट पर कुछ करने के लिए, आमतौर पर एक टचस्क्रीन स्मार्टफोन डिवाइस पर। ज्यादातर लोगों को यह भी पता नहीं होगा कि जब वे स्क्रैच से एक वेबसाइट बनाना चाहते हैं, तो वे कहां से शुरू करें, वेकिसी अन्य व्यक्ति की वेबसाइट पर शुरू करना और कार्यक्षमता, निर्भरता, उपयोग में आसानी और विशेष रूप से रचनात्मकता में सीमित कुछ का निर्माण करना होगा, जब उनके पास अपने निपटान में सभी नवीनतम शक्तिशाली उपकरण हो सकते थे ताकि समय को दबाने वाले बटन बर्बाद किए बिना कुछ उपयोगी बनाया जा सके, और विशेष रूप से सॉफ्टवेयर के लिए महंगी सदस्यता के लिए पैसे बर्बाद कर सकते थे, कुछ लोग उपयोग और लचीलेपन में भी सीमाओं का उपयोग करना चाहते थे। यदि आपके पास इस पुस्तक के माध्यम से पढ़ने के लिए कुछ मिनट हैं और सीखें कि मैं आपको क्या सिखाना चाहता हूं, या यहां तक ​​कि अपने लक्ष्यों के बारे में व्यक्तिगत रूप से बात करना चाहता हूं और सही दिशा में कुछ मार्गदर्शन प्राप्त करता हूं, और कोड को सीखने और अपने स्वयं के सॉफ़्टवेयर को लिखने के लिए प्रेरित होता है, तो इस पुस्तक को घर ले जाएं, अगले प्रभावशाली, शक्तिशाली, सुव्यवस्थित और महत्वपूर्ण वेब एप्लिकेशन को बनाने के लिए सीखने के लिए कुछ समय निर्धारित करें, एक वेबसाइट जो आप चाहते हैं और क्या आप चाहते हैं। मेरे बारे में: मैं एक विस्तृत श्रृंखला वाला एक सॉफ्टवेयर डेवलपर हूंF अनुभव C/C ++, जावा, पायथन, HTML, CSS और जावास्क्रिप्ट में अनुभव। मैं उन वेबसाइटों का निर्माण करता हूं जो लोग उपयोग करना चाहते हैं, यात्रा करना चाहते हैं, और यहां तक ​​कि केवल सीखने, फिर से बनाने और समय को मारने के लिए उपयोग करने के आदी हो जाते हैं, और सबसे महत्वपूर्ण बात यह है कि मैं सॉफ्टवेयर बेचता हूं। यदि आपके पास एक विचार था कि आप वास्तव में कैसे एक वेबसाइट को देखना चाहते हैं और कार्य करना चाहते हैं, तो आप मेरा समर्थन करने के लिए तैयार थे ताकि मैं आपकी अपनी जरूरतों को पूरा कर सकूं, जबकि मैं आपसे मिलूं, और आप स्वयं एक वेबसाइट चलाने की लागतों को कवर करने के लिए तैयार हैं, मैं आपको अगले YouTube, Tiktok, Twitter, Google, या यहां तक ​​कि एक उच्च तकनीक वाले सुरक्षा ऐप का निर्माण कर सकता हूं। आपको अपना समय बेचने की कोशिश करने के बजाय, मैं आपको खरीदने की कोशिश कर रहा हूं: मैं आपको एक ऐप (वेबसाइट) बनाने में बात करना चाहता हूं, जो पहले से मौजूद जानकारी के साथ खुद को एक स्वतंत्र सॉफ्टवेयर डेवलपर, उद्यमी बनने की आवश्यकता है, जो आप चाहें, एक सफल कैरियर का नेतृत्व करते हैं। और मुझे स्पष्ट होना चाहिए, मैं जो शिक्षा आपको दे रहा हूं वह अनौपचारिक होगा। आप स्कूल जा सकते हैं और एक औपचारिक के साथ यह सब सीख सकते हैंDucation, या यहां तक ​​कि इस पुस्तक को स्कूल में पढ़ें, अपने असाइनमेंट को पूरा करें, और अपनी शिक्षा से बहुत दूर ले जाएं, लेकिन मैंने आपको औपचारिक रूप से हॉट सीट पर नहीं रखा और आपको असाइनमेंट पूरा करने के लिए कहा। मैं आपका प्रोफेसर नहीं हूं, आप मेरे बारे में एक ऐसे दोस्त की तरह सोच सकते हैं जो आपको अपनी व्यक्तिगत सफलता द्वारा संचालित कैरियर की ओर मार्गदर्शन करना चाहता है। और मैं आपको सफलता नहीं बेच रहा हूं, आपको इसे अपने समय के साथ खरीदने की आवश्यकता होगी। कोड को सीखने में एक सीखने की अवस्था है और यह कभी भी आसान नहीं था, या यहां तक ​​कि माना जाता है। आपको संभवतः उतनी मेहनत करने की आवश्यकता है जितनी संभव हो सके और कोशिश करना और असफल होना जारी रखें और फिर भी प्रयास करें जब आप खुद को सीखने और बनाने के लिए निराश हैं। यह कोड की प्रकृति में ही है। कोड एक कंपाइलर द्वारा चलाया जाता है जिसे प्रोग्रामर त्रुटि संदेश देने के लिए डिज़ाइन किया गया है, और ये आपको सिखाएंगे कि कैसे कोड करें, भले ही आप केवल अपने खोज इंजन में त्रुटि की नकल कर रहे हों और अन्य लोगों के उदाहरणों को पढ़ रहे हों। और मुझे कहना होगा, आपको बेहद समृद्ध, स्मार्ट, सफल होने की जरूरत नहीं हैएक ऐप बनाने के लिए विस्तार उन्मुख या व्यवस्थित। कंप्यूटर आपके लिए उस संगठन की देखभाल करता है। आपको बस परीक्षण और त्रुटि के माध्यम से दृढ़ रहने की आवश्यकता है, ध्यान बनाए रखें और जो आप करते हैं उस पर कड़ी मेहनत करें, और आप जो करते हैं, उसकी संपूर्णता में एक बहुत ही सफल कैरियर होगा। मैं कौन हूं: मुझे एहसास है कि अंतिम खंड सीखने के बारे में अधिक था और इस पुस्तक से आपका एक तरीका है। मैं वास्तव में कौन हूँ? यह एक जटिल प्रश्न है। मैं उस पर स्पष्ट नहीं हूं, क्योंकि मैं चिकित्सा स्थितियों से पीड़ित हूं, जो मेरे लिए कई बार कोड या इस पुस्तक को लिखना मुश्किल बना सकता है, जबकि समाजीकरण और पहचान के मुद्दों के साथ चुनौतियां पेश करते हैं जो मेरे जीवन को और अधिक कठिन बनाते हैं जब यह अपना परिचय देने की बात आती है। संक्षेप में, यदि आप इस पुस्तक को पढ़ रहे हैं, तो आप इसे घर लाए क्योंकि आप इसके माध्यम से फ़्लिप किए और सोचा कि यह उपयोगी था, या यहां तक ​​कि अगर आप अभी तक इसे पढ़ते हैं, तो आप एक ऐसे व्यक्ति की तरह हैं जो आपको हर उस चीज में सफल होना चाहते हैं जो आप करते हैं। मैं खुद एक इंजीनियर हूं, एक सॉफ्टवेयरएलोपर, और एक छात्र, और मैं इस पुस्तक को अन्य छात्रों के लिए लिख रहा हूं, जो सॉफ्टवेयर की एक हैंडबुक होने से अपने जीवन को आसान बनाना चाहते हैं, उन्हें अपने जीवन को आसान बनाने की आवश्यकता है, जो कि एक बड़ी पहेली की तरह एक साथ काम करने के लिए एक साथ, उपयोगी, बड़े, कार्यात्मक, सामंजस्यपूर्ण और आकर्षक ऐप को कॉपी करने के लिए अपने जीवन को आसान बनाने की आवश्यकता है, जो सफलता की रेखा से कोई फर्क नहीं पड़ता है। मोटे तौर पर, यह वही है जो मैं करता हूं: मैं अपने आप को और अन्य लोगों की मदद करने के लिए ऐप्स का निर्माण करता हूं। मैं एक लेखक भी हूं, हालांकि यह मेरा पहला प्रकाशन है जिसे मैं अपने पोर्टफोलियो को एक उपयोगी दस्तावेज में एक साथ रखने के लिए पूरा करने का इरादा रखता हूं, और मैं एक कलाकार भी हूं। मैं आपको यह स्वीकार करूंगा, मैं एक अजीब व्यक्ति हूं। मैं सही नहीं हूं, मैंने कानून के साथ इन्स को चलाया था, यहां तक ​​कि मुझे कॉलेजों और विश्वविद्यालयों को छोड़ने के लिए और अधिक सफलता के साथ खुद के लिए एक नाम बनाने की कोशिश करने के लिए राज्यों को छोड़ने के लिए अग्रणी था। मैं जन्म से एक महिला हूँ, मैं मेकअप पहनती हूँ, खुद की तस्वीरें लेती हूँ, कपड़े पहनती हूँ और अन्य महिला कपड़े पहनती हूँ, और मैं एक महिला के रूप में खुद को सचेत रहती हूँature। मेरे पास अतीत में अन्य लोगों के साथ मुद्दे थे जो वेबैप लिखने और निर्माण के साथ संघर्ष करते हैं, और मैं माफी माँगता हूँ कि मैं इस पुस्तक को आपके हाथों में जल्द ही प्राप्त करने में सक्षम नहीं था: आपको इसकी आवश्यकता थी। आप उन कोड को पढ़ना और लिखना चाहेंगे जो मेरा जैसा दिखता है और मेरी तरह काम करता है और एक ही काम करता है, लेकिन इससे भी बेहतर है, क्योंकि अगर आप अपने कीबोर्ड को मैश करने के बजाय इस पुस्तक को खरीद सकते हैं जैसे कि मैं सिर्फ एक पुस्तक बनाने के लिए खुद को इसके लिए पैसे पूछने के लिए करता हूं, तो आपके पास अपने जीवन में सफल होने की आवश्यकता है। मेरे पास परिवार के बड़े होने, स्वास्थ्य की स्थिति, डॉक्टर, मीडिया और कानून के साथ सभी प्रकार के मुद्दे थे, और मेरा कोड उस संघर्ष को गहराई से दर्शाता है जो एक विभाजित और निराश दुनिया में नारीवाद और महिला प्रकृति है। हालाँकि, यह पुस्तक ऐसी चीज है जिसके बारे में मैं गहराई से परवाह करता हूं, मेरे बच्चे, मेरे पोर्टफोलियो और मेरी आजीविका, इसलिए मैं आपके विचार की सराहना करता हूं जब आप पाठ को घर लेते हैं और मुझसे सीखने के लिए ध्यान से उस पर ध्यान से पोर करते हैं। कृपया ध्यान रखें कि मैं सही नहीं हूं, यहOOK में त्रुटियां, संशोधन और नए संस्करण होंगे, और आपको अपने तार्किक मस्तिष्क के साथ सोचने की आवश्यकता होगी, जो कि आप मेरे लेखन के साथ एक सफल अनुभव प्राप्त करने के लिए सबसे अच्छा कर सकते हैं। इसके अलावा, यह समझें कि जब आप लिखते समय चुनौतियों का सामना करते हैं, तब भी मेरा मतलब है। इसके बारे में इस तरह से सोचें: जब आप कुछ भी करने के लिए एक कंप्यूटर सिस्टम किराए पर ले सकते हैं, तो आप संभवतः डिजिटल स्पेस में कल्पना कर सकते हैं, आपके द्वारा सामना की जाने वाली सभी जानकारी को संग्रहीत कर सकते हैं, #$%! मैं आपको यह बताता हूं क्योंकि मैं उसी कठिनाइयों का सामना करता हूं। अपने स्वयं के जोखिम पर इस पुस्तक का उपयोग करें, एक सुरक्षित सेटिंग के भीतर सॉफ़्टवेयर बनाने के लिए आपके लिए उपलब्ध अपने समुदाय और समुदायों के साथ काम करें, और जब आप असफल होते हैं या गलत तरीके से सफल होते हैं, तो व्यक्तिगत रूप से चीजों को न लें: यह कि मुझे यह कैसे मिला है, और मैं आपको इस पाठ को क्यों ला सकता हूं और आपको पागलपन के एक मार्ग पर जाने के बिना सफल होने में मदद करता हूं।जब मैं हर कोई वैश्विक पैमाने पर काम करता है, तो उस नेटवर्क के पैरालेलिस्टिक वैश्विक पैमाने पर धन्यवाद, जिस पर हम काम करेंगे, इंटरनेट पर काम करेंगे। आप बहुत परिचित नहीं हो सकते हैं कि मैं केवल कुछ शब्दों के साथ कौन हूं, लेकिन मैं आपको पढ़ने के लिए प्रोत्साहित करता हूं, आप मुझे जानेंगे कि आप अपने काम को पूरा करने के लिए अपनी परियोजनाओं का निर्माण करते समय मुझे पढ़ना और समझना जारी रखेंगे। इस पुस्तक के साथ कोई होमवर्क नहीं होगा, जब तक कि आपके प्रोफेसर या शिक्षक आपको कोई भी असाइन नहीं करते हैं, लेकिन मैं आपको खुद को प्रोजेक्ट्स का एक पोर्टफोलियो बनाने के लिए प्रोत्साहित करता हूं जैसा कि आप साथ पढ़ते हैं, साथ ही साथ एक कैपस्टोन प्रोजेक्ट भी दिखाते हैं कि आप जो सीखा है उसे कैसे लागू कर सकते हैं। मेरी कैपस्टोन प्रोजेक्ट इस पुस्तक में जो कुछ भी आप पढ़ेंगे, उसके लिए सबसे अधिक आधार है, क्योंकि इसमें मेरी पिछली परियोजनाओं, कोड को शामिल किया गया है, जिसे मैंने बनाया है और हाथ से व्यवस्थित रूप से लिखना सीखा है, और विचारों और युक्तियों की एक विस्तृत श्रृंखला जिसने मुझे उस बिंदु पर सफल होने में मदद की है जहां मैं एक सरल ऐप को पूरी तरह से स्पिन कर सकता हूं जो पूरी तरह से है जो पूरी तरह से है जो पूरी तरह से है जो पूरी तरह से है जो पूरी तरह से है।atured और दिखता है और एक लोकप्रिय ऐप की तरह व्यवहार करता है जिसे आप अपने दोस्त या परिवार को इंटरनेट पर उपयोग करते हुए देख सकते हैं, आपको या समाचार में विज्ञापित कर सकते हैं। यह पुस्तक क्या है: यह पुस्तक उदाहरण के लिए एक ट्यूटोरियल है। आप यहां कोड पा सकते हैं, कोड को कैसे सीखें, डिबगिंग कोड की जानकारी और त्रुटियों को ठीक करने के लिए निर्देश, समस्या निवारण चरणों, अपने कोड को वापस करने और सहेजने के निर्देशों के निर्देश, यदि कोई भी आपके कोड को तोड़ता है, तो आपके कोड को सुरक्षित करने के लिए, अपने कोड को तैनात करें, जो कि मैं एक्टिवेटिंग, आकर्षक, और लहकित करता हूं, और आप एक सेंस, आपके अंतिम उपयोगकर्ताओं, आपकी वेबसाइट के आगंतुकों के लिए संभव के रूप में स...
उदाहरण के तौर पर व्यावहारिक वेब आधारित गहन शिक्षा और सुरक्षा

उदाहरण के लिए व्यावहारिक वेब आधारित गहरी शिक्षा और सुरक्षा तीसरा संस्करण शार्लोट हार्पर 3 जुलाई, 2024 Foreword: वेब के लिए सॉफ्टवेयर बिल्डिंग सॉफ्टवेयर में सुरक्षा विचार किसी भी वेब डेवलपर की योजना और निष्पादन का एक महत्वपूर्ण हिस्सा हैं, जबकि एक प्रोटोटाइप इंजीनियरिंग करते हैं जो व्यावहारिक उद्देश्यों के लिए भरोसेमंद, स्थिर और उपयोगी है। DOM (डॉक्यूमेंट ऑब्जेक्ट मार्कअप), HTML, JavaScript, और CSS के कार्यान्वयन के साथ -साथ बैकएंड सॉफ़्टवेयर के कार्यान्वयन के साथ पायथन, C/C ++, Java और Bash को लागू करना, वेब डेवलपर्स को स्वतंत्रता और शक्ति प्रदान करता है, जो विभिन्न प्रकार की परियोजनाओं को बनाने के लिए व्यक्त करता है। रचनात्मकता, उपयोग और कार्यक्षमता में आसानी प्रदान करें, विनम्रता और चरित्र को चित्रित करें, और उपयोग में आसानी के साथ -साथ सुविधा और महत्वपूर्ण सेवाएं प्रदान करें जो सभी औसत जो के लिए आकर्षक हैं, अंतिम उपयोगकर्ता की तलाश में समय को मारने या इंटरनेट पर कुछ करने के लिए, आमतौर पर एक टचस्क्रीन स्मार्टफोन डिवाइस पर। ज्यादातर लोगों को यह भी नहीं पता होगा कि जब वे एक वेबसाइट बनाना चाहते हैं तो कहां से शुरू करेंस्क्रैच, वे किसी अन्य व्यक्ति की वेबसाइट पर शुरू करते हैं और कार्यक्षमता, निर्भरता, उपयोग में आसानी और विशेष रूप से रचनात्मकता में सीमित कुछ का निर्माण करते हैं, जब वे अपने निपटान में सभी नवीनतम शक्तिशाली उपकरण हो सकते थे ताकि समय को बर्बाद किए बिना कुछ उपयोगी बनाया जा सके। , और विशेष रूप से सॉफ्टवेयर के लिए महंगी सदस्यता के लिए भुगतान करने वाले पैसे बर्बाद करना कुछ लोग वैसे भी उपयोग करना चाहते थे, यह उपयोग और लचीलेपन में आसानी में सीमाएं हैं। यदि आपके पास इस पुस्तक के माध्यम से पढ़ने के लिए कुछ मिनट हैं और सीखें कि मैं आपको क्या सिखाना चाहता हूं, या यहां तक ​​कि मेरे लक्ष्यों के बारे में व्यक्तिगत रूप से बात करें और सही दिशा में कुछ मार्गदर्शन प्राप्त करें, और कोड और अपने स्वयं के सॉफ़्टवेयर को सीखने के लिए प्रेरित हैं। , इस पुस्तक को घर ले जाएं और अगले प्रभावशाली, शक्तिशाली, सुव्यवस्थित और महत्वपूर्ण वेब एप्लिकेशन के निर्माण के लिए सीखने के लिए कुछ समय निर्धारित करें, एक वेबसाइट जो आप पर है और वास्तव में आप चाहते हैं और अपने दर्शकों की जरूरतों को पूरा करते हैं। मेरे बारे में: मैं एक सॉफ्टवेयर डेवलपर हूंC/C ++, जावा, पायथन, HTML, CSS और जावास्क्रिप्ट में अनुभव की सीमा। मैं उन वेबसाइटों का निर्माण करता हूं जो लोग उपयोग करना चाहते हैं, यात्रा करना चाहते हैं, और यहां तक ​​कि केवल सीखने, फिर से बनाने और समय को मारने के लिए उपयोग करने के आदी हो जाते हैं, और सबसे महत्वपूर्ण बात यह है कि मैं सॉफ्टवेयर बेचता हूं। यदि आपके पास एक विचार था कि आप वास्तव में कैसे देखना चाहते हैं और कार्य करना चाहते हैं, तो आप मेरा समर्थन करने के लिए तैयार थे ताकि मैं आपकी जरूरतों को पूरा कर सकूं, जबकि मैं आपसे मिलूं, और आप स्वयं एक वेबसाइट चलाने की लागतों को कवर करने के लिए तैयार हैं, मैं आपको अगला YouTube, Tiktok, Twitter, Google, या यहां तक ​​कि एक उच्च तकनीक वाले सुरक्षा ऐप का निर्माण करूंगा, केवल आप एक्सेस कर सकते हैं। आपको अपना समय बेचने की कोशिश करने के बजाय, मैं आपको खरीदने की कोशिश कर रहा हूं: मैं आपको एक ऐप (वेबसाइट) बनाने में बात करना चाहता हूं, जो पहले से मौजूद जानकारी के साथ खुद को एक स्वतंत्र सॉफ्टवेयर डेवलपर होने की आवश्यकता है। उद्यमी, जो भी आप चाहते हैं, उसमें एक सफल कैरियर का नेतृत्व करते हैं। और मुझे स्पष्ट होना चाहिए, मैं जो शिक्षा आपको दे रहा हूं वह अनौपचारिक होगा। आप स्कूल जा सकते हैं और यह सब एक के साथ सीख सकते हैंऔपचारिक शिक्षा, या यहां तक ​​कि इस पुस्तक को स्कूल में पढ़ें, अपने असाइनमेंट को पूरा करें, और अपनी शिक्षा से बहुत दूर ले जाएं, लेकिन मैं औपचारिक रूप से आपको हॉट सीट पर नहीं डालूंगा और आपको असाइनमेंट पूरा करने के लिए कहूंगा। मैं आपका प्रोफेसर नहीं हूं, आप मेरे बारे में एक ऐसे दोस्त की तरह सोच सकते हैं जो आपको अपनी व्यक्तिगत सफलता द्वारा संचालित कैरियर की ओर मार्गदर्शन करना चाहता है। और मैं आपको सफलता नहीं बेच रहा हूं, आपको इसे अपने समय के साथ खरीदने की आवश्यकता होगी। कोड को सीखने में एक सीखने की अवस्था है और यह कभी भी आसान नहीं था, या यहां तक ​​कि माना जाता है। आपको संभवतः उतनी मेहनत करने की आवश्यकता है जितनी संभव हो सके और कोशिश करना और असफल होना जारी रखें और फिर भी प्रयास करें जब आप खुद को सीखने और बनाने के लिए निराश हैं। यह कोड की प्रकृति में ही है। कोड एक कंपाइलर द्वारा चलाया जाता है जिसे प्रोग्रामर त्रुटि संदेश देने के लिए डिज़ाइन किया गया है, और ये आपको सिखाएंगे कि कैसे कोड करें, भले ही आप अपने खोज इंजन में त्रुटि की नकल कर रहे हों और अन्य लोगों के उदाहरणों को पढ़ रहे हों। और मुझे कहना होगा, आपको बेहद अमीर होने की जरूरत नहीं है, स्मार्ट,एक ऐप बनाने के लिए निबंध, या यहां तक ​​कि विस्तार से उन्मुख या व्यवस्थित। कंप्यूटर आपके लिए उस संगठन की देखभाल करता है। आपको बस परीक्षण और त्रुटि के माध्यम से दृढ़ रहने की आवश्यकता है, ध्यान बनाए रखें और जो आप करते हैं उस पर कड़ी मेहनत करें, और आप जो करते हैं, उसकी संपूर्णता में एक बहुत ही सफल कैरियर होगा। मैं कौन हूं: मुझे एहसास है कि अंतिम खंड सीखने के बारे में अधिक था और इस पुस्तक से आपका एक तरीका है। मैं वास्तव में कौन हूँ? यह एक जटिल प्रश्न है। मैं उस पर स्पष्ट नहीं हूं, क्योंकि मैं चिकित्सा स्थितियों से पीड़ित हूं, जो मेरे लिए कई बार कोड या इस पुस्तक को भी लिखना मुश्किल बना सकता है, जबकि समाजीकरण और पहचान के मुद्दों के साथ चुनौतियां पेश करते हैं जो मेरे जीवन को और अधिक कठिन बनाते हैं जब यह अपना परिचय देने की बात आती है । संक्षेप में, यदि आप इस पुस्तक को पढ़ रहे हैं, तो आप इसे घर ले आए क्योंकि आप इसके माध्यम से फ़्लिप किए और सोचा कि यह उपयोगी था, या यहां तक ​​कि अगर आप अभी तक पढ़ते हैं, तो आप एक ऐसे व्यक्ति की तरह हैं जो आपको सफल होना चाहते हैं सब कुछ जो आप करते हैं। मैं खुद एक इंजीनियर हूं,डेवलपर, और एक छात्र, और मैं इस पुस्तक को अन्य छात्रों के लिए लिख रहा हूं, जो सॉफ्टवेयर की एक हैंडबुक होने से अपने जीवन को आसान बनाना चाहते हैं, उन्हें अपने जीवन को आसान बनाने की आवश्यकता है, जो एक बड़ी पहेली की तरह एक साथ एक साथ काम करने के लिए एक साथ मिलकर अपने जीवन को आसान बनाने की आवश्यकता है। , उपयोगी, बड़े, कार्यात्मक, सामंजस्यपूर्ण और आकर्षक ऐप जो व्यवसाय की रेखा से कोई फर्क नहीं पड़ता, सफलता को चला सकता है। मोटे तौर पर, यह वही है जो मैं करता हूं: मैं अपने आप को और अन्य लोगों की मदद करने के लिए ऐप्स का निर्माण करता हूं। मैं एक लेखक भी हूं, हालांकि यह मेरा पहला प्रकाशन है जिसे मैं अपने पोर्टफोलियो को एक उपयोगी दस्तावेज में एक साथ रखने के लिए पूरा करने का इरादा रखता हूं, और मैं एक कलाकार भी हूं। मैं आपको यह मानता हूँ, मैं एक अजीब व्यक्ति हूँ। मैं सही नहीं हूं, मैंने कानून के साथ INS चलाया है, यहां तक ​​कि मुझे कॉलेजों और विश्वविद्यालयों को छोड़ने के लिए और अधिक सफलता के साथ खुद के लिए एक नाम बनाने की कोशिश करने के लिए राज्यों को छोड़ने के लिए अग्रणी है। मैं जन्म से एक महिला हूं, मैं मेकअप पहनती हूं, खुद की तस्वीरें लेती हूं, कपड़े पहनती हूं, कपड़े और अन्य महिला कपड़े पहनती हूं, और मैं खुद के प्रति सचेत रहती हूंस्वभाव से महिला। मेरे पास अतीत में अन्य लोगों के साथ मुद्दे हैं जो वेबैप लिखने और निर्माण के साथ संघर्ष करते हैं, और मैं माफी मांगता हूं कि मैं इस पुस्तक को आपके हाथों में जल्द ही प्राप्त करने में सक्षम नहीं हूं: आपको इसकी आवश्यकता थी। आप उन कोड को पढ़ना और लिखना चाहेंगे जो मेरा जैसा दिखता है और मेरी तरह काम करता है और एक ही काम करता है, लेकिन इससे भी बेहतर है, क्योंकि अगर आप अपने कीबोर्ड को मैश करने के बजाय इस पुस्तक को खरीद सकते हैं जैसे कि मैं सिर्फ एक किताब बनाने के लिए खुद को पैसे पूछने के लिए करता हूं। इसके लिए, आपके पास ऐसे संसाधन हैं जिन्हें आपको अपने जीवन में सफल होने की आवश्यकता है। मेरे पास परिवार के बड़े होने, स्वास्थ्य की स्थिति, डॉक्टर, मीडिया और कानून के साथ सभी प्रकार के मुद्दे थे, और मेरा कोड उस संघर्ष को गहराई से दर्शाता है जो एक विभाजित और निराश दुनिया में नारीवाद और महिला प्रकृति है। हालाँकि, यह पुस्तक ऐसी चीज है जिसके बारे में मैं गहराई से परवाह करता हूं, मेरे बच्चे, मेरे पोर्टफोलियो और मेरी आजीविका, इसलिए मैं आपके विचार की सराहना करता हूं जब आप पाठ को घर लेते हैं और मुझसे सीखने के लिए ध्यान से उस पर ध्यान से पोर करते हैं। कृपया ध्यान रखें कि मैं नहीं हूंect, इस पुस्तक में त्रुटियां, संशोधन और नए संस्करण होंगे, और आपको अपने तार्किक मस्तिष्क के साथ सोचने की आवश्यकता होगी कि आप मेरे लेखन के साथ एक सफल अनुभव प्राप्त करने के लिए सबसे अच्छा कर सकते हैं। इसके अलावा, यह समझें कि जब आप लिखते समय चुनौतियों का सामना करते हैं, तब भी मेरा मतलब है। इसके बारे में इस तरह से सोचें: जब आप कुछ भी करने के लिए एक कंप्यूटर सिस्टम किराए पर ले सकते हैं, तो आप संभवतः डिजिटल स्पेस में कल्पना कर सकते हैं, आपके द्वारा की गई सभी जानकारी को संग्रहीत कर सकते हैं, #$%! Yze और इसे व्यवस्थित करें, और इसे समझने के लिए, आप करेंगे, आप करेंगे अनिवार्य रूप से उस जानकारी के साथ कठिनाइयों का सामना करना पड़ता है जिसे आप अंतर्ग्रहण कर रहे हैं और यहां तक ​​कि प्रकाशन भी। मैं आपको यह बताता हूं क्योंकि मैं उसी कठिनाइयों का सामना करता हूं। अपने स्वयं के जोखिम पर इस पुस्तक का उपयोग करें, अपने समुदाय और समुदायों के साथ काम करें जो आपके लिए एक सुरक्षित सेटिंग के भीतर सॉफ़्टवेयर बनाने के लिए उपलब्ध है, और जब आप असफल होते हैं या गलत तरीके से सफल होते हैं, तो व्यक्तिगत रूप से चीजों को न लें: यह है कि मुझे यह कैसे मिला है , और क्यों मैं आपको यह पाठ क्यों ला सकता हूं और पागलपन के रास्ते पर बिना किसी विचलन के सफल होने में मदद करता हूंमुझे बर्बाद कर दिया, फटा हुआ और भयावह है, जबकि मैं सामान्य समस्याओं का सामना करता हूं, जो हर कोई वैश्विक स्तर पर करता है, जिस पर हम काम करेंगे, इंटरनेट पर हम काम करेंगे। आप बहुत परिचित नहीं हो सकते हैं कि मैं केवल कुछ शब्दों के साथ कौन हूं, लेकिन मैं आपको पढ़ने के लिए प्रोत्साहित करता हूं, आप मुझे जानेंगे कि आप अपने काम को पूरा करने के लिए अपनी परियोजनाओं का निर्माण करते समय मुझे पढ़ना और समझना जारी रखेंगे। इस पुस्तक के साथ कोई होमवर्क नहीं होगा, जब तक कि आपके प्रोफेसर या शिक्षक आपको कोई भी असाइन नहीं करते हैं, लेकिन मैं आपको खुद को प्रोजेक्ट्स का एक पोर्टफोलियो बनाने के लिए प्रोत्साहित करता हूं जैसा कि आप साथ पढ़ते हैं, साथ ही साथ एक कैपस्टोन प्रोजेक्ट भी दिखाते हैं कि आप कैसे कर सकते हैं जो आपने सीखा है उसे लागू करें। मेरी कैपस्टोन प्रोजेक्ट इस पुस्तक में जो कुछ भी आप पढ़ेंगे, उसमें से अधिकांश के लिए आधार है, क्योंकि इसमें मेरी पिछली परियोजनाओं, कोड को शामिल किया गया है, जिसे मैंने बनाया है और हाथ से व्यवस्थित रूप से लिखना सीखा है, और विचारों और युक्तियों की एक विस्तृत श्रृंखला जिसने मुझे मदद की है। उस बिंदु पर सफल हो जहां मैं एक साधारण ऐप को स्पिन कर सकता हूंपूरी तरह से चित्रित किया गया है और एक लोकप्रिय ऐप की तरह दिखता है और व्यवहार करता है जिसे आप अपने दोस्त या परिवार को इंटरनेट पर उपयोग करते हुए देख सकते हैं, आपको या समाचार में विज्ञापित कर सकते हैं। यह पुस्तक क्या है: यह पुस्तक उदाहरण के लिए एक ट्यूटोरियल है। आप यहां कोड पा सकते हैं, कोड को कैसे सीखें, डिबगिंग कोड की जानकारी और त्रुटियों को ठीक करने के लिए निर्देश, समस्या निवारण चरणों, अपने कोड को वापस कैसे सहेजें और फिर से तैनात करें, यदि कोई भी आपके कोड को तोड़ता है, तो अपने कोड को सुरक्षित करें, तैनात करें। आपका कोड, इंटरैक्टिव वेबसाइटों का निर्माण करें जो मनोरंजक, आकर्षक और नशे की लत हैं, और आपको यह समझ में आएगा कि मैं कौन हूं, क्यों महत्वपूर्ण है, और अपने आप को, अपने ऐप और कंपनी की छवि को कैसे चित्रित करें, साथ ही साथ आपके अंतिम उपयोगकर्ताओं, आपकी वेबसाइट के आगंतुकों के लिए संभव के रूप में सबसे आकर्षक होने के लिए आप जो सॉफ़्टवेयर का निर्माण करते हैं, वह सबसे अच्छा प्रकाश में बनता है। इस पुस्तक में, मैं एक प्लेटफ़ॉर्म के साथ -साथ सुरक्षा के रूप में वेब पर ध्यान केंद्रित करने के साथ सॉफ्टवेयर डिजाइन के कई उदाहरणों का प्रदर्शन करूंगा। हम एक बुनियादी निर्माण करके सीखने के अनुभव को शुरू करेंगेबैकअप और स्क्रिप्टिंग सुविधाओं के साथ यूनिक्स शेल का उपयोग करके ओजेक्ट करें। फिर, हम एक बुनियादी ब्लॉग वेबसाइट की जांच करेंगे, हमारे ब्लॉग को फोटो और वीडियो सुविधाओं के साथ अपग्रेड करेंगे और साथ ही इन सुविधाओं का उपयोग मुफ्त सॉफ्टवेयर का उपयोग करके सुरक्षा समाधानों को नियोजित करने के लिए करेंगे, और एक प्लग करने योग्य प्रमाणीकरण मॉड्यूल (PAM) का उपयोग करके हमारे सर्वर को सुरक्षित करेंगे। फिर हम अन्य अवधारणाओं के बीच वीडियो एडिटिंग, वॉयस डोनेशन, बारकोड स्कैनिंग और ऑप्टिकल कैरेक्टर रिकग्निशन की खोज करते हुए फाइल हैंडलिंग और प्रोसेसिंग की समीक्षा करेंगे। जिस तरह से हम एपीआई की जांच करेंगे, जो हमें अपने सॉफ़्टवेयर को मुफ्त और भुगतान किए गए विकल्पों के साथ अधिक उपयोगी और सुरक्षित बनाने में मदद करेगा। जिस तरह से, हम भौतिक सुरक्षा और आतंकवादी उपकरणों जैसे कि आग्नेयास्त्रों और मुनिशन डिजाइन और विनिर्माण जैसे बैरल और रिपीटर डिजाइन, बुर्ज और ड्रोन डिजाइन, और अन्य प्रिंसिपल शामिल हैं, जो हम अपने सॉफ़्टवेयर की सुरक्षा के लिए मौजूदा नेटवर्क पर अपने सॉफ़्टवेयर के साथ एकीकृत करेंगे। और आत्मरक्षा और प्रतिद्वंद्वी को प्रदर्शित करता है। हम गेम, 2 डी और 3 डी के निर्माण के रास्ते में ब्रेक लेंगेइंजन एंडिंग इंजन, और बुनियादी आयामी रेंडरिंग सॉफ्टवेयर के केस स्टडी उदाहरणों में एम्बेडेड हार्डवेयर के साथ काम करें और क्रमशः सिलिकॉन रबर में एक इलेक्ट्रॉनिक वाइब्रेटिंग मालिश कास्ट। जिस तरह से, हम अपने सॉफ़्टवेयर को बेहतर ढंग से सुरक्षित करने के लिए पहले से ही उपलब्ध मशीन लर्निंग सॉल्यूशंस को भी नियोजित करेंगे। हम प्रक्रिया को सुव्यवस्थित और सुरक्षित करने के लिए वेब के लिए उपलब्ध स्टॉक टूल भी लगाएंगे। यह पुस्तक एक वेब एप्लिकेशन के निर्माण में आपकी सफलता के लिए एक मार्गदर्शिका है और इसे कंप्यूटर और एम्बेडेड मैकेनिकल सिस्टम के एक पेशेवर नेटवर्क के साथ एकीकृत करना है, और कुल मिलाकर सॉफ्टवेयर बनाने के लिए एक गाइड और कोई पृष्ठभूमि ज्ञान या पिछले अनुभव के साथ हार्डवेयर एम्बेडेड है। यह पुस्तक क्या नहीं है: यदि आप वास्तव में एक वेबसाइट चाहते हैं, तो आप बस एक साधारण स्टोर सेट कर सकते हैं और जो आपको चाहिए, उसे बेच सकते हैं, एक ब्लॉग पोस्ट करें, फ़ोटो या वीडियो पोस्ट करें, या अन्यथा कभी भी एक ही लाइन कोड लिखे बिना। यह पुस्तक वह नहीं है। यह पुस्तक आपको सिखाएगी कि कैसे सॉफ्टवेयर का निर्माण किया जाए जो अधिक उपयोगी हो, पूरी तरह सेकिसी भी सॉफ़्टवेयर की तुलना में विशेष रूप से, कार्यात्मक और सुरक्षित, जिसे आप पहले से ही पा सकते हैं, क्योंकि यह नवीनतम सॉफ़्टवेयर को तैनात करता है जो अभी भी प्रोटोटाइप है, एक पैमाने पर चलने वाली पुरानी कंपनियों पर चलाने के लिए महंगा हो सकता है, और पीछे की ओर अपील नहीं करता है, कन्ट्रॉल्यूटेड कंपनियों को स्थापित किया गया है। उन लोगों के लिए पैसा कमाएं जो वास्तव में कुछ भी नहीं कर रहे हैं। यदि आप इस पुस्तक का बारीकी से पालन करते हैं, तो आप कोड, रिसर्च कोड लिखना चाहेंगे, अपने स्वयं के ऐप्स का निर्माण करेंगे, और आप जो करते हैं उससे पैसे कमाएंगे। मैं इस पुस्तक से पैसे कमाऊंगा, यहां तक ​​कि शुरुआती चरणों में भी, क्योंकि इसमें उन जानकारी शामिल हैं जिन्हें लोगों की आवश्यकता है और पढ़ना चाहते हैं, और पहले से ही खरीद रहे हैं जब वे मेरे ऐप्स खरीदते हैं या उपयोग करते हैं। यह पुस्तक आपके लिए एक ऐप का निर्माण नहीं करेगी, लेकिन यह आपको सही दिशा में इंगित करेगा और आपको उन उपकरणों के साथ बांटना होगा जिनकी आपको आवश्यकता है और कौशल और युक्तियां जो वेब के लिए सॉफ्टवेयर बनाने में आपकी खुद की सफलता की सुविधा प्रदान करेंगे, हर पंक्ति के साथ कोड आपको एक उदाहरण के रूप में लिखने की आवश्यकता होगी, आप सॉफ्टवेयर और आपके समर्थकों, मेहमानों, ग्राहक में एक साथ एक साथ तैयार होने के लिए तैयार हैं,Riends, परिवार, आगंतुक, ठेकेदार, और इंटरनेट के लोग उपयोग और समर्थन करना चाहते हैं। आप क्या सीखेंगे: यह पुस्तक आपको सिखाएगी कि कैसे सॉफ्टवेयर, वास्तव में कार्यात्मक, उपयोगी सॉफ़्टवेयर, मीडिया रिकॉर्डिंग, चेहरे की पहचान, मशीन पठनीय ज़ोन बारकोड स्कैनिंग, वेब एपीआई को प्रमाणित करने, रिकॉर्ड और रेंडर करने के लिए वीडियो और फ़ोटो, और ब्लूटूथ जैसे संदेशों का आदान -प्रदान करने के लिए सुरक्षा सुविधाएँ कैसे सिखाएगी। और क्षेत्र (NFC) संचार के पास। यह पुस्तक आपको सिखाएगी कि कैसे एक नेटवर्क कंप्यूटर का उपयोग करें, डेबियन लिनक्स पर ध्यान केंद्रित करते हुए, अपने सॉफ़्टवेयर को एक सीमलेस, स्वचालित ब्रीज़ को स्थापित करने और बैकअप देने के लिए बैश कोड का निर्माण कैसे करें, कैसे डायनेमिक मैसेज, स्टाइल की सेवा के लिए पायथन कोड का निर्माण करें। बूटस्ट्रैप के साथ सीएसएस शैलियों का उपयोग करना अच्छी तरह से चीजें, नेटवर्क डिवाइस के माध्यम से उपयोगकर्ता लॉगिन और अन्तरक्रियाशीलता को सक्षम करें, अन्य वेबसाइटों के साथ इंटरैक्टिव मीडिया और नेटवर्क का निर्माण करें, जो सत्यापन या अन्य के लिए पाठ संदेश जैसी सुरक्षा सुविधाओं की पेशकश करते हैं उद्देश्य, आईडी स्कैनिंग, छवि और वीडियो मॉडरेशन, डेटाअपने सॉफ़्टवेयर को सुरक्षित रखने, भुगतान प्रसंस्करण, क्रिप्टोक्यूरेंसी ट्रेडिंग, एसिंक्रोनस कार्यों और बहुत कुछ रखने के लिए। आप सीखेंगे कि बैटरी, चार्जर्स, माइक्रोकंट्रोलर, सर्किट, मोटर्स और सेंसर के साथ, सोल्डर, वायर और 3 डी प्रिंट के साथ -साथ कास्ट सामग्री का उपयोग करके अपने स्वयं के ब्लूटूथ डिवाइस का निर्माण कैसे करें। मैं एडिटिव मैन्युफैक्चरिंग और टूल और डाई मेकिंग पर लागू 3 डी डिज़ाइन प्रिंसिपलों को प्रदर्शित करूंगा, इसलिए आप एकीकृत बैटरी, चार्जर, इलेक्ट्रॉनिक सर्किट और कार्यात्मक आउटपुट के साथ अपने स्वयं के एम्बेडेड, हार्डवेयर डिवाइस का निर्माण करने में सक्षम हैं। और उन्हें ब्लूटूथ और वेब के साथ नेटवर्क करें। विशेष रूप से, हम दो केस स्टडीज, एक वाइब्रेटिंग मसाज और एक होममेड बन्दूक की जांच करेंगे, दोनों ओपनकैड में प्रोग्राम किए गए हैं, जो कि ग्राफिकल इंटरफ़ेस या कमांड लाइन यूटिलिटी के रूप में उपलब्ध है और इसे तेज परिणाम के लिए एक वेब में एकीकृत किया जा सकता है। आप सीखेंगे कि बिना किसी पूर्व अनुभव के जमीन से एक वेबसाइट का निर्माण और तैनात कैसे करें, इसे कार्यात्मक, सुरक्षित, सुंदर, उपयोगी और सबसे अधिक बनाएंmportately व्यावहारिक। आप सीखेंगे कि साइट को सुरक्षित और अधिक व्यावहारिक बनाने के लिए मशीन लर्निंग और कंप्यूटर विजन का उपयोग कैसे करें, अपनी वेबसाइट से अधिक व्यावहारिक, रिकॉर्ड वीडियो और ऑडियो को रिकॉर्ड करें, अपनी आवाज दान करें, संगीत बनाएं और उपयोगी नमूने बनाने के लिए ऑडियो को मॉड्यूलेट करें, और कैसे शोर के माध्यम से तोड़ना करें वेबसाइटों के सर्वोत्तम संभव नेटवर्क का निर्माण करने के लिए अन्य वेबसाइटों का लाभ उठाना, जिन्हें आप अपने द्वारा पेश की जाने वाली सभी उपयोगी जानकारी को साझा करने के लिए सीधे अपने से लिंक कर सकते हैं, और इससे भी महत्वपूर्ण बात यह है कि लोगों को आपके सॉफ़्टवेयर और व्यवसाय में लाएं। इस पुस्तक को मीडिया, सुरक्षा और मशीन लर्निंग पर सबसे अधिक ध्यान केंद्रित किया जाएगा, जो प्रमुख तीन घटक हैं जो आपको सही उपयोगकर्ताओं को उलझाकर वेब के लिए उपयोगी सॉफ़्टवेयर बनाने और गलत लोगों को इस तरह से विघटित करने में मदद करेंगे जो यथार्थवादी, व्यावहारिक, व्यावहारिक है, हाथ पर और आकर्षक, जबकि स्वचालित, और मजबूत भी। यह पुस्तक यूनिक्स, विशेष रूप से डेबियन (उबंटू), बैश शेल, पायथन, एचटीएमएल, सीएसएस, जावास्क्रिप्ट और कई उपयोगी सॉफ्टवेयर पैकेजों के लिए सिखाती हैn अनुरोधों की तरह, साथ ही साथ GIT और FFMPEG जैसे उपयोगी बैश सॉफ्टवेयर। मैं आपको यह भी सिखाऊंगा कि क्रिप्टोक्यूरेंसी को स्वचालित रूप से कैसे व्यापार किया जाए, और क्रिप्टोक्यूरेंसी में या नियमित डेबिट कार्ड से भुगतान किया जाए, जबकि आप अपने आगंतुकों को अपने राजस्व का एक हिस्सा भी भुगतान करते हैं यदि आप ऐसा करना चुनते हैं। मैं आपको सिखाऊंगा कि कैसे विज्ञापन के माध्यम से अपनी वेबसाइट से पैसे कमाएं, कैसे खोज इंजन के लिए अपने ऐप को तैयार करें और इसे तेजी से बनाएं, पहली रैंकिंग में रैंक किया गया है कि आपके ग्राहक आपको खोजने के लिए क्या खोजेंगे, और कई सामान्य रूप से रैंकिंग संभव के रूप में खोज। मैं आपको सिखाऊंगा कि आप अपने सॉफ़्टवेयर को कैसे बेचें, इसका विज्ञापन करें, अपनी सेवाओं की तलाश करने वाले ग्राहकों से अपील करें, और पहले से मौजूद रास्ते में इंटरनेट पर अपने लिए एक नाम बनाएं, जो पहले से मौजूद हैं, सस्ती हैं, और अच्छी तरह से काम करते हैं। मैं आपको सिखाऊंगा कि आपके डेटा को क्लाउड कंप्यूटरों पर कैसे सहेजा जाए जो आपके लिए काम करते हैं और आपके डेटा को सस्ते में सहेजते हैं, कैसे योजना बनाएं और एक ऐसी वेबसाइट का निर्माण करें जो आपके उपयोगकर्ताओं को क्या चाहते हैं और आप क्या चाहते हैं, और अपने उपयोगकर्ताओं को कैसे संलग्न रखेंअपनी साइट को उनके फोन पर एक टैप दूर करें, जिसमें सूचना, ईमेल, पाठ संदेश, फोन कॉल, और अधिक रास्ते हैं, जो आपके उपयोगकर्ताओं को आपकी वेबसाइट पर वापस लाने के लिए आपके पास ही सुरक्षित एक बटन के क्लिक के पीछे अपने निपटान में हैं। यह पुस्तक बड़ी मात्रा में मीडिया को प्रकाशित करने और वितरित करने की व्यावहारिकता पर ध्यान केंद्रित करेगी, पाठ से लेकर फ़ोटो से लेकर वीडियो तक ऑडियो तक, अंतिम उपयोगकर्ताओं (आपके ग्राहक) पर एक अच्छी छाप बनाती है, और अपने आप को किसी भी तरह से बेचना है जो आप बनाने के लिए करते हैं। एक वेबसाइट, एक ऐप जो आपके और आप का प्रतिनिधि है, और आपको, आपके सॉफ़्टवेयर और आपकी कंपनी को सबसे अच्छे तरीके से अच्छा लगता है। आप मेरे साथ कुछ टिप्स और ट्रिक्स भी सीखेंगे, कोडिंग टिप्स, मेकअप और फोटोग्राफी, मॉडलिंग और अभिनय जैसे व्यावहारिक घमंड से, और अधिक, जो उपलब्ध सभी उपकरणों का उपयोग करके अपने और आपकी कंपनी को सबसे अच्छा संभव प्रकाश में चित्रित करने के लिए महत्वपूर्ण होगा। आपके लिए उतनी ही सामग्री वितरित करते समय जितना आपको अपने लाने के लिए प्लेटफार्मों के एक स्वस्थ संतुलन की आवश्यकता होती हैई अधिक प्रयास, काम, या धन के साथ आवश्यक से अधिक नहीं है। इस पुस्तक को एक कारण के लिए "प्रैक्टिकल वेब आधारित डीप लर्निंग एंड सिक्योरिटी बाय उदाहरण" कहा जाता है: यह कोड को सीखने से संबंधित है, विशेष रूप से वेब के लिए, विशेष रूप से सुरक्षा पर ध्यान केंद्रित करने के साथ, एक व्यावहारिक दृष्टिकोण से, कार्य कोड के उदाहरणों के साथ जो कार्य करता है। पाठ में उल्लिखित व्यावहारिक उद्देश्य। इस पाठ के सीखने के घटक में मशीन लर्निंग भी शामिल है, कोड मैं आपको दिखाएगा कि वेब के लिए कैसे चलाना है जो कंप्यूटर विजन, चेहरे की पहचान, छवि और वीडियो मॉडरेशन, छवि वृद्धि, संकल्प वृद्धि, संकल्प वृद्धि, छवि कैप्शनिंग और अन्य कार्यों को संभालेगा। भविष्यवाणी मेट्रिक्स छवियों से खट्टा है, जैसे कि एक प्रामाणिक, कंप्यूटर-स्थानांतरित छवि, या एक ऑप्टिकल कॉपी (एक छवि की एक तस्वीर, या मुद्रित फोटो) के रूप में छवि की प्रकृति। जब वेब सुरक्षा और सॉफ्टवेयर सुरक्षा की बात आती है, तो मशीन लर्निंग बहुत महत्वपूर्ण है, क्योंकि यह उन कार्यों को लागू कर सकता है जो अन्यथा असंभव थे। आपका कंप्यूटरआपको पासकोड के साथ लॉग इन करें, लेकिन यदि यह आपके चेहरे के साथ लॉग इन करता है तो इसका उपयोग करना सुरक्षित हो सकता है। आप एक सर्वर कंप्यूटर को यह सुरक्षित बना सकते हैं, एक कंप्यूटर जो सामान्य रूप से आपको एक उपयोगकर्ता नाम और पासकोड के लिए पूछेगा और आपको लॉग इन करेगा, शायद प्रत्येक नए लॉगिन या नए आईपी पते के लिए एक पुष्टि टोकन के साथ, लेकिन यदि आप बड़े पैमाने पर निर्माण कर रहे हैं, तो आसान है। उपयोग, मौलिक रूप से सुरक्षित और शक्तिशाली सॉफ्टवेयर, यह पर्याप्त हो सकता है। अपने सॉफ़्टवेयर को किसी और के सॉफ़्टवेयर से बहुत करीब से बांधना, जैसे ईमेल सेवा या पाठ संदेश सेवा, आपके सॉफ़्टवेयर को सुरक्षित करने के लिए पर्याप्त नहीं है, या किसी को भी (आपके द्वारा उपयोग की जाने वाली कोई भी साइट)। जो कोई भी सॉफ्टवेयर बनाता है, वह जो त्रुटिहीन रूप से सुरक्षित है, उसे कुछ समझ में आता है। सॉफ्टवेयर स्वाभाविक रूप से असुरक्षित है क्योंकि हम जिन उपकरणों और खातों का उपयोग करते हैं, वे हमेशा हमारे निपटान में नहीं होते हैं, वे सॉफ्टवेयर के लिए बीमार इरादे वाले किसी भी व्यक्ति के हाथों में हो सकते हैं और इसलिए सॉफ्टवेयर के लिए जोखिम पैदा कर सकते हैं। यह इस पुस्तक का ध्यान केंद्रित है। एक नेटवर्क कंप्यूटर डिफ़ॉल्ट रूप से हैएक लंबी कुंजी टोकन के साथ सुरक्षित, कहा जाता है और SSH या सुरक्षित शेल कुंजी, और अन्यथा एक वेब सर्वर के साथ सबसे अच्छा सुरक्षित है, क्योंकि वेब सर्वर ओपन एक्सेस के साथ -साथ सर्वर पर चलने वाले कला सुरक्षा उपकरणों की स्थिति प्रदान करता है। वेब सर्वर के पास उपयोगकर्ता के वेब ब्राउज़र तक पहुंच है, जो यकीनन उपयोगकर्ता के डिवाइस का सबसे शक्तिशाली हिस्सा है, क्योंकि यह वह स्थान है जहां उपयोगकर्ता नेटवर्क सॉफ़्टवेयर तक पहुंच सकता है। यह टूलकिट पाठ को प्रस्तुत कर सकता है, आपके द्वारा देखे जाने वाले वेबपेज, और छवियों, ऑडियो और वीडियो (जैसे कि एक चेहरे या एक राज्य आईडी की तस्वीर) को रिकॉर्ड कर सकते हैं, ब्लूटूथ रेडियो उपकरणों को पढ़ और लिख सकते हैं, और पास फ़ील्ड को पढ़ और लिख सकते हैं। ट्रांसपोंडर टैग, सस्ती कुंजी कार्ड, एफओबी, स्टिकर, रिंग्स और यहां तक ​​कि चिप प्रत्यारोपण अद्वितीय सीरियल नंबरों के साथ जिन्हें वेब साइट से बंधे वेब सर्वर द्वारा उत्पन्न और मान्य डेटा के साथ पढ़ा और लिखा जा सकता है। अपने निपटान में सभी उपकरणों का उपयोग करते हुए, इस पुस्तक के साथ आप खुद को एक सुरक्षित वेबसाइट बनाने के लिए ज्ञान से लैस करेंगे, और कुल मिलाकर एURE नेटवर्केड कंप्यूटर सिस्टम जो आपके लिए काम करता है, आपकी बोली लगाता है, और सही लगता है और लगता है। कहां से शुरू करें: आप उस खंड को छोड़ने के लिए स्वागत करते हैं, जिसे मैं इस पुस्तक के साथ शुरू करता हूं, या किसी भी खंड के साथ, सटीक कोड के लिए, विशेष रूप से यदि आपके पास पहले या उपरोक्त उपकरणों में से किसी के साथ कोडिंग के साथ अनुभव है, तो मैं इस पुस्तक में विस्तार से वर्णन करूंगा। साथ ही उपयोग के मामलों और व्यावहारिक उदाहरणों का दस्तावेजीकरण। यदि आपके पास कोड लिखने में अनुभव नहीं है, तो मैं आपको इस पुस्तक के सभी को पढ़ने की सलाह देता हूं, और विशेष रूप से आपको पिछले अनुभागों को पढ़ने की सलाह देता हूं, यह सुनिश्चित करने के लिए कि यह पुस्तक आपके लिए सही है। यदि यह पुस्तक आपके लिए सही नहीं है, तो इसे किसी मित्र या रिश्तेदार को उपहार में देने पर विचार करें, जो स्वयं वेब विकास के बारे में जानने में रुचि रखते हैं, और यहां तक ​​कि इसे वापस उधार लेने पर विचार करें और उनसे सीखने के लिए कि वे अंतराल को भरने के लिए जहां मैं आपको विफल कर देता हूं शिक्षक, या अन्य शिक्षकों ने मेरे सामने किया। यदि आप एक उपयोगी बनाने का इरादा रखते हैं, तो आप जहां करेंगे, इस पुस्तक का हर हिस्सा उपयोगी होगापीपी, और विचार करें कि सबसे अच्छे ऐप्स को अंतिम उपयोगकर्ता को ध्यान में रखते हुए बनाया गया है: अपने ग्राहक को जानें। अब आप मुझे जानते हैं, आप इस पुस्तक को जानते हैं, और आप शुरू करने के लिए तैयार हैं। शुरू करने के लिए, एक कंप्यूटर को पकड़ो (यहां तक ​​कि एक बॉक्स स्टोर, अमेज़ॅन, या एक पुराने डेस्कटॉप से ​​सबसे सस्ता लैपटॉप काम करता है, और इसे एक तरह से सेट करें जो आपके लिए काम करता है। इस पुस्तक को कैसे पढ़ें: पाठ पर प्रकाश डाला गया, यह दर्शाता है कि पाठ एक कमांड प्रॉम्प्ट में है, जहां आप आपके द्वारा चलाए गए कोड को लिखेंगे। कमांड प्रॉम्प्ट भारी कीबोर्ड पर केंद्रित है और इसके लिए कोई क्लिक करने की आवश्यकता नहीं है, अपने वर्कफ़्लो को तेज करना और चीजों को आप पर आसान बनाना है। शुरू करना: चलो गोता लगाते हैं। हम एक स्थानीय मशीन पर कोड का निर्माण शुरू करेंगे और इंटरनेट से जुड़ी वेबसाइट के निर्माण के बिना शुरू करेंगे। यह शुरू करने के लिए सुरक्षित है, कुछ भी नहीं है, और आपके लिए आसान है। आपके ऑपरेटिंग सिस्टम के आधार पर, बैश शेल में शामिल होना थोड़ा अलग होगा। मैक ओएस के लिए, मैं इस बिंदु पर एक वर्चुअल मशीन स्थापित करने की सलाह देता हूं, क्योंकि आपको सबसे अधिक अनुकूलता मिलेगीवर्चुअल मशीन। वर्चुअलबॉक्स और पैरालेल जैसे विभिन्न प्रदाता आपके लिए एक वर्चुअल मशीन चला सकते हैं, हालांकि मशीन पर सीधे उबंटू को स्थापित करना भी संभव है, यदि आप एक देशी वातावरण का उपयोग करना पसंद करते हैं जो एक तेज, सुव्यवस्थित अनुभव बनाने के लिए अनुशंसित है। यदि आप लिनक्स या विंडोज का उपयोग कर रहे हैं, जो मैं सुझाता हूं, तो एक प्रोजेक्ट बनाना काफी आसान होना चाहिए। अपने टर्मिनल को खोलें, जैसा कि आप फिट देखते हैं, आकार को समायोजित करें, और चरण 2 का अनुसरण करें। यदि आप विंडोज का उपयोग कर रहे हैं, तो कृपया चरण 1 का पालन करें। चरण 1: - विंडोज उपयोगकर्ता केवल विंडोज में, व्यवस्थापक और टाइप के रूप में कमांड प्रॉम्प्ट ओपन wsl -install चरण 2: - यहां जारी रखें, या यदि आप विंडोज का उपयोग नहीं कर रहे हैं तो यहां चरण 1 को छोड़ दें एक खुले टर्मिनल में, (आपके ओएस पर निर्भर करता है, जिसे विंडोज में उबंटू कहा जाता है, मैक या लिनक्स में टर्मिनल, या एक समान नाम), एक प्रोजेक्ट बनाकर शुरू होता है। हम इसे MKDIR कमांड के साथ करते हैं, जो एक निर्देशिका बनाता है। यदि आपको अपनी परियोजना को संग्रहीत करने के लिए एक निर्देशिका बनाने की आवश्यकता है, जो अनुशंसित है, का उपयोग करेंसीडी कमांड को निर्देशिका में बदलने के लिए और और CD/PATH/TO/DIRECTORY - पथ फ़ोल्डर (फ़ाइलें) है जो आपकी गंतव्य निर्देशिका से पहले है, आपका डिफ़ॉल्ट पथ ~ या/होम/उपयोगकर्ता नाम है (जहां उपयोगकर्ता नाम आपका उपयोगकर्ता नाम है)। डिफ़ॉल्ट निर्देशिका में बदलने के लिए, सीडी या सीडी टाइप करें ~ MKDIR उदाहरण - निर्देशिका के नाम के साथ "उदाहरण" को बदलें अब आपके पास अपनी परियोजना के लिए एक कार्यशील निर्देशिका है। इस निर्देशिका को सहेजना इतना महत्वपूर्ण है कि यदि आपको एक अलग मशीन पर स्विच करने या आपके द्वारा लिखे गए कोड को तैनात करने की आवश्यकता है, तो यह वेब के लिए तैयार है, हम अगले कुछ चरणों में अपनी निर्देशिका का बैकअप लेने के लिए एक स्क्रिप्ट का निर्माण करेंगे। लेकिन एक स्क्रिप्ट का निर्माण थोड़ा कोड लेता है, और कोड को यथासंभव उपयोगी होने के लिए स्वचालित करने की आवश्यकता है। तो आइए पहले स्क्रिप्ट बनाने के लिए एक स्क्रिप्ट का निर्माण करें। आइए स्क्रिप्ट बनाकर और इसे निष्पादन योग्य बनाकर शुरू करें। हम सूडो का उपयोग करेंगे, CHMOD और इसके लिए स्पर्श करेंगे, और स्क्रिप्ट को कॉल करेंगे


sudo touch /usr/bin/ascript
sudo chmod a+x /usr/bin/ascript
sudo nano /usr/bin/ascript
अब हमने स्क्रिप्ट बनाई है, इसे निष्पादन योग्य बना दिया है, और इसे संपादित करने के लिए तैयार हैं। नैनो एक पाठ संपादक है जो आपको बिना क्लिक किए पाठ को संपादित करने देगा, जो कि ग्राफिकल यूजर इंटरफेस का उपयोग करने की तुलना में बहुत आसान है। नैनो के साथ एक फ़ाइल को संपादित करने के लिए, नैनो और फिर फ़ाइल के लिए मार्ग का उपयोग करें। एक स्क्रिप्ट बनाने के लिए जो एक स्क्रिप्ट बनाती है, यह हमारी स्क्रिप्ट को पहले स्थान पर बनाने के समान है। हम ऊपर के रूप में उसी कोड का उपयोग करेंगे, स्क्रिप्ट के नाम की जगह, एक तर्क पैरामीटर, $ 1 के साथ "Ascript"। यह हमें केवल SUDO Ascript Newscript टाइप करके स्क्रिप्ट को कॉल करने देता है, जिस बिंदु पर हम आपकी स्क्रिप्ट के नाम के साथ "न्यूज़स्क्रिप्ट" को बदलकर कोई भी नई स्क्रिप्ट बना सकते हैं। नैनो में कोड की तरह दिखना चाहिए:

sudo touch /usr/bin/$1
sudo chmod a+x /usr/bin/$1
sudo nano /usr/bin/$1
और नैनो को बंद करने के लिए, हम नियंत्रण कुंजी को पकड़ सकते हैं और x को दबा सकते हैं, फिर y को निरूपित करने के लिए हम फ़ाइल को सहेज रहे हैं, और रिटर्न हिट कर रहे हैं। अब एक स्क्रिप्ट को संपादित करने के लिए इन तीन कमांडों को टाइप करने के बजाय, हम स्क्रिप्ट को फिर से संपादित करने के लिए सूडो Ascript Ascript टाइप करने में सक्षम होंगे। यह सही है! और किसी भी नई स्क्रिप्ट को शेल में कॉल करके आसानी से चलाया जा सकता है। आइए अब हमारे काम को सहेजें: आइए हमारी नई स्क्रिप्ट को बचाने के लिए एक बैकअप स्क्रिप्ट लिखें और फिर इसे हमारी प्रोजेक्ट डायरेक्टरी में वापस करें, जबकि बैकअप स्क्रिप्ट का बैकअप लें।

sudo ascript backup
अब, नैनो में:

sudo cp /usr/bin/backup /path/to/directory/
sudo cp /usr/bin/ascript /path/to/directory/
MKDIR के साथ आपके द्वारा बनाई गई परियोजना का मार्ग कहां/पथ//निर्देशिका है। बाद में हम सीखेंगे कि एक लूप और एक सूची के साथ इस तरह की दोहराव वाले रास्तों को कैसे कॉपी किया जाए, जो कम कोड है, लेकिन अब आइए इसे सरल रखें और कुछ लाइनें हों। इस स्क्रिप्ट को चलाने और अपने कोड को बैकअप करने के लिए, फाइल को नैनो में कंट्रोल+x, y और रिटर्न के साथ सहेजें, और नीचे अपने शेल में टाइप करें

backup
यदि आपको इस पुस्तक को पढ़ते समय और शेल में अनुसरण करते समय एक पासवर्ड के लिए संकेत दिया जाता है, तो कृपया अपना उपयोगकर्ता पासवर्ड सही ढंग से दर्ज करें, कमांड को फिर से चलाने से पहले आपको तीन कोशिशें होंगी। आप ऊपर और नीचे तीर का उपयोग कर सकते हैं और उन्हें संपादित करने और उन्हें संपादित करने के लिए, क्या आपको दो बार कुछ भी चलाने की आवश्यकता है। सिंपल प्रेस अप और डाउन रुक -रुक कर एक कमांड का चयन करने के लिए, कमांड को दाएं, बाएं तीर के साथ संपादित करने से पहले और कीबोर्ड के साथ -साथ कीबोर्ड को हटा दें, और इसे रिटर्न के साथ चलाएं। बधाई हो! आप एक भयानक बैकअप स्क्रिप्ट बनाने में कामयाब रहे, जो अपने कार्यशील निर्देशिका में दो महत्वपूर्ण शेल स्क्रिप्ट का समर्थन करती है। हम बाद में चीजों को स्थानांतरित कर सकते हैं क्योंकि परियोजना बड़ी हो जाती है, लेकिन यह अभी के लिए काम करता है। चलो क्लाउड में बैकअप लेने के लिए आगे बढ़ते हैं, हम इसके लिए GitHub का उपयोग करेंगे (हालांकि बैकअप के लिए कई अन्य Git समाधान हैं, वे सभी एक ही हैं।) Git एक Version Control सॉफ्टवेयर है जो आपको अपने संपादन को वापस करने देता है सॉफ्टवेयर के रूप में आप उन्हें एक सर्वर के लिए बनाते हैं, जबकिइसके अलावा आपको पासवर्ड या कुंजी के पीछे अपने सॉफ़्टवेयर की पूरी प्रतियां डाउनलोड करने में सक्षम हैं। यह आपके सॉफ़्टवेयर को बचाने में महत्वपूर्ण है, विशेष रूप से जब हम सुरक्षित लिनक्स उदाहरणों में माइग्रेट करते हैं, जो कभी -कभी तब टूट जाते हैं जब कोड की एक लाइन विफल हो जाती है, तो आपको लॉक कर दिया जाता है, जबकि आपका कोड वापस नहीं किया जा सकता है यदि आपको इसे वापस करने का मौका नहीं मिलता है स्वचालित रूप से, जिसे हम कवर करेंगे। यदि आप पहले से ही इस बिंदु पर एक Ubuntu वर्चुअल मशीन का उपयोग नहीं कर रहे हैं, तो मैं इस बिंदु पर एक Ubuntu वर्चुअल मशीन का उपयोग कर सकता हूं क्योंकि यह एक काम करने वाली वेबसाइट बनाने और गहरी सीखने के लिए आवश्यक सभी पैकेजों को स्थापित करते समय आपके जीवन को आसान बना देगा। आपके कंप्यूटर पर संचालन। हम निकट भविष्य में कोड को एक वेब सर्वर पर ले जाएंगे, लेकिन हम यह सुनिश्चित करना चाहते हैं कि हमारे वेब सर्वर के पीछे कम से कम कुछ परतें हैं जो फ़िशिंग के लिए प्रतिरोधी हैं, और करने के लिए कई लिनक्स पैकेजों को नियुक्त करते हैं यह। यदि आप अभी भी मैक ओएस का उपयोग करना चाहते हैं, तो आपको खोज और स्थापित करने के लिए स्वागत हैई आवश्यक पैकेज ऑनलाइन, लेकिन इस पुस्तक या श्रृंखला को कवर करने वाले हर पैकेज के लिए विकल्प नहीं हो सकते हैं। आइए कमांड सूडो Ascript चलाकर बैकअप स्क्रिप्ट के साथ हमारे काम करने के लिए कुछ कमांड जोड़ें
# …
एक बार फिर, सहेजने के लिए एक्स को नियंत्रित करें। अब हमें इस परियोजना के लिए कुछ समय कॉन्फ़िगरेशन करने की आवश्यकता है। क्योंकि यह जल्द ही एक गिट प्रोजेक्ट होगा, हमें हर बार हर कमांड को टाइप करने की आवश्यकता नहीं है, जब हम एक गिट रिपॉजिटरी से तैनात करते हैं, लेकिन जब हम अपनी तैनाती स्क्रिप्ट लिखते हैं तो हम इसे लटकाएंगे। शुरू करने के लिए, आइए सुनिश्चित करें कि हम सही निर्देशिका में हैं और Git रिपॉजिटरी को इनिशियलाइज़ करते हैं और SSH कुंजी उत्पन्न करते हैं।

cd /path/to/directory
git init
git branch -m master
ssh-keygen
SSH-KEYGEN टाइप करने के बाद, नई कुंजी को होम फ़ोल्डर में एक फ़ोल्डर के तहत सहेजा जाना चाहिए जिसे .ssh कहा जाता है। इसे id_rsa.pub कहा जाता है। आइए इस कुंजी को ढूंढें और इसे कॉपी करें। इसे देखने के लिए,

cd ~
cat .ssh/id_rsa.pub
अंतिम कमांड द्वारा लौटाए गए पाठ को कॉपी करें, और अपने खाते में SSH कुंजी जोड़ने से पहले, अपने Git प्रदाता (आदर्श रूप से GitHub) के साथ एक खाता बनाएं। एक बार जब आपके पास कोई खाता है, तो मेनू में एक्सेस के तहत SSH और GPG कुंजी में अपनी SSH कुंजी जोड़ने से पहले ऊपरी दाएं मेनू पर क्लिक करें और सेटिंग्स दर्ज करें। एक SSH कुंजी जोड़ें और एक नया रिपॉजिटरी बनाने के लिए GitHub में लौटने और लौटने से पहले इसे चिपकाकर और इसे एक शीर्षक देकर अपना जोड़ें। यह अन्य GIT प्रदाताओं के लिए समान है, आपको उनके दस्तावेज पढ़ने की आवश्यकता होगी। नए रिपॉजिटरी कॉन्फ़िगरेशन में, अपने रिपॉजिटरी को एक वर्णनात्मक नाम दें और यह तय करें कि आप इसे प्रकाशित करना चाहते हैं, और अभी तक समावेश के लिए कोई फ़ाइलों को कॉन्फ़िगर करना सुनिश्चित करें। एक बार रिपॉजिटरी बनाने के बाद, SSH URL के साथ क्लोन कॉपी करें, और इसे निम्न कमांड में पेस्ट करें।

git remote add git://… (your remote URL)
अब आप सीडी के साथ अपने रिपॉजिटरी में वापस जा सकते हैं, आप इससे परिचित होंगे। बैकअप के साथ अब अपनी बैकअप स्क्रिप्ट का प्रयास करें महान! अब हम वास्तव में कोडिंग प्राप्त कर सकते हैं। अब Django स्थापित करते हैं कि हम बैश और git पर एक अच्छी समझ है। Django हमें अपने सॉफ़्टवेयर को स्वचालित रूप से वापस करने देगा, बैश भी ऐसा कर सकता है, लेकिन Django में एक सरल सुरक्षित कार्यान्वयन होना चाहिए (इसे अक्षम किया जा सकता है और अधिक आसानी से कॉन्फ़िगर किया जा सकता है)। Ubuntu में सॉफ़्टवेयर स्थापित करने के लिए, हम SUDO Apt-Get कमांड का उपयोग करेंगे। सबसे पहले, आइए हम पहले से मौजूद सॉफ़्टवेयर को अपडेट और अपग्रेड करते हैं। यह sudo apt-get अपडेट और sudo apt-get अपग्रेड -Y के साथ किया जा सकता है। इसके बाद, चलो पायथन और हमारे आभासी वातावरण, हमारे कोड का घर, निम्न कमांड के साथ स्थापित करें: sudo apt-get python-is-python3 python3-venv स्थापित करें यह सब आपको Ubuntu उदाहरण में सॉफ्टवेयर इंस्टॉल के मामले में Django के साथ जाने की आवश्यकता है। विंडोज और लिनक्स के लिए यह काफी सीधा होना चाहिए, लेकिन मैक के लिए आप एक वर्चुअल मशीन स्थापित करना चाहते हैं औरवर्चुअलबॉक्स या पैरालेल्स डेस्कटॉप जैसे मुफ्त या भुगतान किए गए वर्चुअल वातावरण का उपयोग करके लिनक्स उस पर और उबंटू वातावरण को सेटअप करने के लिए ऊपर दिए गए चरणों को फिर से बनाएं। उबंटू इस मामले में महत्वपूर्ण है क्योंकि यह सॉफ्टवेयर है जो वेबसाइटें चलती हैं और यह उन्हें उपरोक्त सभी सॉफ्टवेयर के साथ वेबसाइटों की मेजबानी करने में सक्षम बनाता है। चलो Django में खुदाई करते हैं। हमारी निर्देशिका में फिर से, साथ
python -m venv venv # वर्चुअल वातावरण बनाता है जहां कोड संग्रहीत होता है
source venv/bin/activate # आभासी वातावरण को सक्रिय करता है
django-admin startproject mysite . # जहां MySite वह परियोजना है जो मैं अपनी वर्तमान निर्देशिका में शुरू कर रहा हूं।
Django बस हमें शुरू कर रहा है, क्योंकि Django वेब सर्वर की मेजबानी कर रहा है और वह सब कुछ कर रहा है जो हमें एक बुनियादी स्थानीय वेबसाइट प्राप्त करने और चलाने के लिए आवश्यक है। अब जब हमारे पास Django स्थापित है, तो आइए सेटिंग्स को थोड़ा संपादित करें ताकि यह काम करने के लिए कि हमें कैसे चाहिए। सबसे पहले, आइए एक नया ऐप बनाएं

python manage.py startapp feed
आप देखेंगे कि पहले ऐप को फ़ीड कहा जाता है। ऐप को जो कुछ भी पसंद है, उसे बुलाया जाना चाहिए, और हम नए ऐप बनाएंगे, लेकिन प्रत्येक ऐप का नाम हर बार जब एप्लिकेशन को कोड में संदर्भित किया जाता है, तो यह लगातार होना चाहिए। एक नया ऐप जोड़ने के लिए, हम हमेशा सेटिंग्स को संपादित करेंगे। नैनो का उपयोग करना,

nano app/settings.py
सेटिंग्स में, इंस्टॉल किए गए_Apps ढूंढें और [] को 3 लाइनों में अलग करें। खाली केंद्र रेखा पर चार स्थानों का उपयोग करके, 'फ़ीड', या अपने ऐप का नाम जोड़ें। सेटिंग्स का यह खंड।

INSTALLED_APPS = [
    'feed',
]
इससे पहले कि हम भूल जाएं, चलो परीक्षण करें कि Django काम कर रहा है। कमांड पायथन Manage.py Runserver 0.0.0.0:8000 का उपयोग करते हुए, हम सर्वर चला सकते हैं और फिर कंप्यूटर पर एक वेब ब्राउज़र में नेविगेट कर सकते हैं, जो Http: // localhost: 8000 पर कोड चला रहे हैं और एक उदाहरण वेबपेज देखें (यह काम करता है!) नियंत्रण C के साथ सर्वर को छोड़ दें, किसी भी अन्य कमांड के समान। अब, चलो कुछ पायथन कोड लिखने में खुदाई करते हैं। Django के तीन मुख्य घटक हैं, वे सभी पूरी तरह से कोड द्वारा चलते हैं। घटकों को मॉडल, व्यू और टेम्पलेट कहा जाता है, और प्रत्येक उपयोगकर्ता को वेबपेज देने से पहले क्रमशः उच्च और निचले स्तर पर होता है। मॉडल वह कोड है जो डेटाबेस में पुनर्प्राप्ति, क्रम और प्रतिपादन के लिए जानकारी संग्रहीत करता है। दृश्य तय करता है कि मॉडल को कैसे प्रदान किया जाता है, हेरफेर किया जाता है, और संशोधित किया जाता है, लगभग हर दृश्य सीधे एक मॉडल का उपयोग करेगा। टेम्पलेट HTML कोड है जिसमें कुछ अतिरिक्त घंटियाँ और सीटी टेम्पलेट भाषा कहा जाता है। टेम्पलेट को उस दृश्य द्वारा प्रदान किया जाता है जहां यह पायथन कोड से भरा है औरदृश्य से मॉडल और सूचना (usuall स्ट्रिंग्स और पूर्णांक) जैसे संदर्भ। Django के अन्य घटक भी हैं, जिनमें शामिल हैं, लेकिन सीमित नहीं: सेटिंग्स, जो ऐप को कॉन्फ़िगर करती है जैसा कि हमने चर्चा की थी। URL, जो पैटर्न हैं कि उपयोगकर्ता वेब एप्लिकेशन के विशिष्ट भागों तक पहुंच प्राप्त करने के लिए अनुसरण करता है। फॉर्म, जो यह परिभाषित करते हैं कि सर्वर को भेजी जाने वाली जानकारी को कैसे संभाला जाता है और डेटाबेस के साथ -साथ उपयोगकर्ता को भी प्रदान किया जाता है। ये सर्वर साइड पर प्रसंस्करण जानकारी की नींव हैं, और किसी भी प्रकार की जानकारी को कंप्यूटर स्टोर, सबसे विशेष रूप से टेक्स्ट स्ट्रिंग्स, नंबर और ट्रू/फाल्स बूलियन (आमतौर पर चेकबॉक्स) को स्वीकार कर सकते हैं। टेम्प्लेट, जो HTML कोड और टेम्प्लेट भाषा हैं और पायथन और HTML के बीच की खाई को पाटते हैं, जिसका अर्थ है कि पायथन की जानकारी को HTML कोड के रूप में परोसा जा सकता है जिसे कोई भी एक्सेस कर सकता है और प्रतिबंधित एक्सेस के साथ एक वेबसाइट को सुरक्षित कर सकता है, जबकि पायथन कोड को वेब और उपयोगी के लिए सुलभ बना सकता है। एक दूरस्थ डिवाइस पर विभिन्न उद्देश्यों के लिए जो नहीं करता हैEED सर्वर के पास होना चाहिए। स्टेटिक फाइलें, जो आमतौर पर जावास्क्रिप्ट होती हैं और यह लाइब्रेरी होती है जो सर्वर परोसती है और टेम्पलेट के साथ जुड़ी होती है। मीडिया फाइलें, जो सर्वर परोसती है या बाहरी रूप से होस्ट की जाती है, या केवल प्रोसेस किए जाने से पहले सर्वर को लिखी जाती है और होस्टिंग के लिए किसी अन्य सर्वर (एक बकेट) पर पोस्ट की जाती है। मिडिलवेयर, जो कोड के टुकड़े हैं जो हर दृश्य के रूप में एक ही समय में चलाए जाते हैं और दृश्य में "शामिल" माना जाता है। संदर्भ प्रोसेसर, जो प्रत्येक दृश्य के संदर्भ को संसाधित करते हैं और अतिरिक्त संदर्भ जोड़ने के लिए उपयोग किए जाते हैं। परीक्षण, जो मान्य करते हैं कि उपयोगकर्ता या अनुरोध दृश्य प्रदान करने से पहले कुछ आवश्यकताओं को पारित करता है। उपभोक्ता, जो यह तय करते हैं कि WebSockets कैसे संभालते हैं और संचार का जवाब देते हैं। व्यवस्थापक, जिसका उपयोग मॉडल को पंजीकृत करने के लिए किया जाता है ताकि उन्हें Django व्यवस्थापक पृष्ठ के भीतर विस्तार से हेरफेर किया जा सके, जहां डेटाबेस को एक ग्राफिकल इंटरफ़ेस के माध्यम से प्रशासित किया जा सकता है। अजवाइन, जो Django कोड के अतुल्यकालिक कार्यों को परिभाषित करता हैNNING तुरंत अगले कार्य या कोड की लाइन के लिए आगे बढ़ने से पहले। Django में कई अन्य घटक हो सकते हैं, जिन पर हम यहां विस्तार से चर्चा करेंगे। Django को अधिक कार्यात्मक बनाने के बहुत सारे तरीके हैं, Websockets जोड़ते हैं, जो तेज, सुव्यवस्थित संचार चैनल, अजवाइन हैं, जो अतुल्यकालिक कार्यों को निष्पादित करता है, और Django का विस्तार करने के लिए सॉफ़्टवेयर के अन्य टुकड़ों की एक भीड़, विशेष रूप से दृश्य कार्यों में, जहां अधिकांश में से अधिकांश कोड निष्पादित किया जाता है। दृश्य कार्य महत्वपूर्ण हैं क्योंकि वे आमतौर पर कोड के प्रत्येक टुकड़े को घोषित करते हैं जो एक विशिष्ट URL पैटर्न, या सर्वर के एक खंड के लिए विशिष्ट है। सबसे पहले, आइए व्यू फ़ंक्शंस का पता लगाएं। देखें फ़ंक्शंस आयात को दर्शाने वाले कोड के साथ शुरू होते हैं जो दृश्य में उपयोग किए जाएंगे, और नियमित फ़ंक्शन परिभाषाओं या कक्षाओं का उपयोग करके परिभाषित किए जाते हैं। सबसे सरल दृश्य फ़ंक्शन परिभाषा डीईएफ द्वारा परिभाषित किए गए हैं, और एक मूल टेम्पलेट के साथ एक HTTPRESPONSE लौटाएं। आइए "हैलो वर्ल्ड" पाठ को वापस करने के लिए एक बुनियादी दृश्य को परिभाषित करके शुरू करें। याद रखें कि हर बार जब आप जोड़ते हैंDef, If, जबकि, के लिए, आदि जैसे एक बयान को पूरा करें, आपको अपने फ़ंक्शन पर लागू होने वाली प्रत्येक पूर्ववर्ती परिभाषाओं के लिए 4 रिक्त स्थान जोड़ने की आवश्यकता होगी। हम जल्द ही इनमें से प्रत्येक में क्या करेंगे। हमारी साइट की निर्देशिका से, नैनो का उपयोग करके फ़ीड/views.py फ़ाइल को संपादित करें और निम्नलिखित पंक्तियों को अंत में जोड़ें

from django.http import HttpResponse

def hello(request):
    return HttpResponse('hello world')
Django का Httpresponse एक टेक्स्ट स्ट्रिंग के साथ प्रतिक्रिया करता है, जिसे उद्घाटन और समापन के साथ दर्शाया गया है। ' हर बार जब आप किसी फ़ंक्शन या क्लास को जानकारी देते हैं, जैसे अनुरोध या स्ट्रिंग, आपको कोष्ठक (, खोलना और बंद) का उपयोग करना होगा। यह सब हम अभी तक अपने दृष्टिकोण को देखने की जरूरत नहीं है। बेशक, हमने सर्वर को यह नहीं बताया कि दृश्य वास्तव में कहां है, हमें अभी भी एक पथ को परिभाषित करने की आवश्यकता है जिसके द्वारा दृश्य को प्रस्तुत करना चाहिए। आइए ऐप/urls.py में एक बुनियादी पथ को परिभाषित करके शुरू करें, और हम बाद में पथ समूहों में मिलेंगे। App/urls.py में, हमने जो दृश्य बनाया था, उसके आयात के आयात के बाद आयात बयानों के बाद एक पंक्ति जोड़ें।

from feed import views as feed_views
अब, आइए व्यू पैटर्न को परिभाषित करें। देखें पैटर्न में तीन घटक होते हैं, पथ घटक, जो सर्वर को बताता है कि दृश्य सर्वर के भीतर मौजूद है (URL पथ जो उपयोगकर्ता को नेविगेशन बार में वेबपेज में प्रवेश करने के लिए टाइप करता है), दृश्य घटक जहां दृश्य निर्दिष्ट किया गया है, और एक दृश्य के लिए अनुकूल नाम इसलिए टेम्पलेट के साथ काम करते समय इसे पुनः प्राप्त करना आसान है, विशेष रूप से इसलिए यह नाम बदला जा सकता है और यदि आवश्यक हो तो किसी अन्य दृश्य के लिए जगह बनाने या अधिक तार्किक नाम लेने के लिए अद्यतन किया जा सकता है। यह इस तरह से चीजों को करने और लचीला होने के लिए समझ में आता है, क्योंकि आपका कोडबेस एक बदलते वातावरण होगा जिसे मूल्यवान और काम करने में आसान होने के लिए लचीलेपन और सुधार की आवश्यकता होती है। यहां आपका दृश्य कैसा दिखेगा, आप इसे urlpatterns = [ऐप/urls.py का अनुभाग जोड़ सकते हैं। दृश्य पैटर्न को ऊपर वर्णित तीन घटकों और पथ नामक एक फ़ंक्शन के साथ परिभाषित किया गया है। आपके URL पैटर्न एक सूची हैं, इसलिए उनमें प्रत्येक आइटम को हमेशा समाप्त करना सुनिश्चित करेंएक अल्पविराम के साथ, क्योंकि यह प्रत्येक को अलग करता है। प्रत्येक आइटम को एक नई लाइन पर भी जाना चाहिए, एक बार फिर से चार रिक्त स्थान के साथ, सेटिंग्स में ऐप की तरह। हम एक खाली स्ट्रिंग फ़ंक्शन के साथ दृश्य के पहले घटक को परिभाषित करेंगे, ताकि वेब सर्वर की रूट डायरेक्टरी पर चलने वाला दृश्य बनाया जा सके। आपका urls.py अब जैसा दिखना चाहिए

from feed import views as feed_views

urlpatterns = [
    path('', feed_views.hello, name='hello'),
]
यह Django के साथ एक वेबसाइट बनाने का आधार है जो पूरी तरह से स्थिर है। एक अधिक गतिशील वेबसाइट बनाने के लिए जहां हम कैशिंग जानकारी शुरू कर सकते हैं, जैसे चित्र, वीडियो, ऑडियो और अधिक, हमें मॉडल का उपयोग करने की आवश्यकता होगी, जिसे हम आगे देखेंगे। अभी के लिए, आइए हमारे कोड की जांच करें और सर्वर को चलाएं। त्रुटियों के लिए कोड की जांच करने के लिए, चलाएँ:

python manage.py check
यदि कोई त्रुटि संदेश हैं, तो आपको अपने ऐप में किए गए परिवर्तनों की सावधानीपूर्वक समीक्षा करनी चाहिए और यह देखना चाहिए कि क्या कुछ ऐसा है जिसे तय करने की आवश्यकता है, जैसे कि एक बाहरी या कमी वाले स्थान, एक अतिरिक्त चरित्र, एक अघोषित स्ट्रिंग, किसी भी टाइपो, किसी भी गलती से हटाए गए चरित्र, या कुछ और। त्रुटि संदेश के माध्यम से पढ़ना (यदि आपके पास एक है), तो आपको एक फ़ाइल के साथ एक फ़ाइल का पथ देखने में सक्षम होना चाहिए या लाइन नंबर के साथ संपादित किया गया है, इसलिए उस फ़ाइल और लाइन को देखें और देखें कि क्या आप कुछ भी ठीक कर सकते हैं जो वहां है । यदि आपने समस्या तय कर ली है, तो उपरोक्त कमांड को फिर से चलाएं। जब आपका सॉफ़्टवेयर चलाने के लिए तैयार होता है और काम कर रहा होता है, तो आपको आउटपुट दिखाई देगा "सिस्टम चेक की पहचान कोई समस्या नहीं है।" अब आप जाने के लिए तैयार हैं। सर्वर को चलाएं:

python manage.py runserver 0.0.0.0:8000
अब एक वेब ब्राउज़र खोलें और http: // localhost: 8000 पर नेविगेट करें। आपको अपने विचार में HTTPRESPONSE फ़ंक्शन के कोष्ठक और उद्धरणों में लौटाया गया पाठ देखना चाहिए। यह सिर्फ एक मूल उदाहरण है, लेकिन अगर आपने इसे दूर कर दिया है, तो आप लिनक्स, बैश, पायथन और Django के काम की मूल बातें समझते हैं। आइए कुछ डेटाबेस मॉडलिंग में गहराई से खुदाई करें, और जानकारी संग्रहीत करने में एक पायथन वर्ग की शक्ति का पता लगाएं। फिर, हम जावास्क्रिप्ट और मशीन लर्निंग का उपयोग करके अपनी साइट को पूरी तरह से चित्रित, लचीला और सुरक्षित बनाने से पहले हम HTML और CSS पर पकड़ प्राप्त करना शुरू कर देंगे। कक्षाएं आपके ऐप के मॉडल में संग्रहीत की जाती हैं। नैनो का उपयोग करके, ऐप/models.py संपादित करें और एक नया वर्ग जोड़ें। एक वर्ग को वर्ग की परिभाषा के साथ परिभाषित किया गया है और इसे एक सुपरक्लास पारित किया गया है, जिससे यह विरासत में मिला है, इस मामले में मॉडल। कक्षा का नाम वर्ग की परिभाषा के बाद आता है, और वर्ग की परिभाषा के बाद A: (बृहदान्त्र) का उपयोग किया जाता है, इससे पहले कि वर्ग से बंधी विशेषताओं और फ़ंक्शन परिभाषाओं को नीचे निरूपित किया जाता है। हमारी कक्षाएक आईडी की आवश्यकता है जिसे हम इसे पुनः प्राप्त करने और इसे अद्वितीय रखने के लिए उपयोग कर सकते हैं, और इसे कुछ जानकारी संग्रहीत करने के लिए एक पाठ क्षेत्र की भी आवश्यकता है। बाद में हम एक टाइमस्टैम्प, फाइलें, बूलियन (सच्ची या झूठी परिभाषाएं जोड़ सकते हैं जो हमारे कोड को मॉडल के साथ क्या करना है, इस बारे में निर्णय लेने में मदद कर सकते हैं, और इसका उपयोग इसे सॉर्ट करने के लिए किया जा सकता है), एक उदाहरण मॉडल को एक उपयोगकर्ता को लॉग इन करने के लिए टाई करने के लिए एक उदाहरण सर्वर में, और अधिक। आइए कोड को अनपैक करें
from django.db import models # आयात जो हमारी कक्षा को परिभाषित करने के लिए उपयोग किया जाता है और यह विशेषताएँ हैं
class Post(models.Model): # हमारी कक्षा की परिभाषा ही
    id = models.AutoField(primary_key=True) # हमारे मॉडल की आईडी, एक स्वचालित रूप से उत्पन्न कुंजी जो हमें मॉडल को क्वेरी करने देगी, इसे अद्वितीय रखेगी, और जब हमें मॉडल के साथ बातचीत करने की आवश्यकता होती है, तो यह उपयोगी होता है।
    text = models.TextField(default='') # हमारे क्लास स्टोर, इस मामले में, कुछ पाठ, एक खाली स्ट्रिंग के लिए डिफ़ॉल्ट।
फाइल को बंद करें और सहेजें जैसा कि हमने पहले किया था। कई अन्य फ़ील्ड और विकल्प हैं जो हम इस वर्ग को अपडेट करेंगे जब हम इस वर्ग को अपडेट करते हैं क्योंकि हमारा ऐप विकसित होता है, लेकिन यह कुछ पाठ पोस्ट करने के लिए ऐप बनाने की बुनियादी आवश्यकताएं हैं। हालाँकि, यह मॉडल अकेले काम नहीं करेगा। जैसा कि पहले वर्णित है, हमें इस मॉडल को काम करने के लिए एक कस्टम दृश्य और कस्टम URL पैटर्न की आवश्यकता होगी, और हमें एक टेम्पलेट के साथ एक फॉर्म की भी आवश्यकता होगी। आइए पहले फॉर्म का पता लगाएं। एक फॉर्म को परिभाषित करने के लिए, नैनो के साथ ऐप/फॉर्म को संपादित करें और निम्न पंक्तियों को जोड़ें। हमें दो आयात, हमारे फॉर्म क्लास, साथ ही हमारे द्वारा बनाए गए मॉडल (Feed.models.post), मॉडल के समान एक वर्ग परिभाषा और मेटा नामक एक उपवर्ग के साथ एक फ़ील्ड की आवश्यकता होगी जो मॉडल को परिभाषित करेगा। साथ। फॉर्म में एक इनिशियलाइज़ेशन फ़ंक्शन भी हो सकता है जो अनुरोध, मॉडल या अन्यथा में जानकारी के आधार पर इसे सेट करता है, हम बाद में इसका पता लगाएंगे। मॉडल फॉर्म इतने उपयोगी हैं क्योंकि वे एक मॉडल बना सकते हैं या एक मॉडल को संपादित भी कर सकते हैं,इसलिए हम दोनों के लिए उनका उपयोग करेंगे। चलो एक रूप में एक को परिभाषित करते हैं

from django import forms
from feed.models import Post

class PostForm(forms.ModelForm):
    text = forms.CharField(widget=forms.Textarea)
    class Meta:
        model = Post
        fields = ('text',)
यह एक रूप और मॉडल कैसा दिखता है, इसकी मूल बातें हैं। इस मॉडल फॉर्म का उपयोग किसी पोस्ट को तत्काल या संपादित करने के लिए किया जा सकता है, इसमें शामिल पाठ को बदलना। हम इस फॉर्म को अगले दृश्य में एकीकृत करते हैं। सबसे पहले, चलो माइग्रेशन बनाते हैं और डेटाबेस को माइग्रेट करते हैं ताकि हमारा कोड मॉडल के साथ बातचीत कर सके जब यह चलता है। ऐसा करने के लिए, निम्नलिखित कमांड चलाएं:

python manage.py makemigrations
python manage.py migrate
इसे निष्पादित करने में एक मिनट का समय लगेगा, लेकिन एक बार जब यह होता है, तो यह आपको सॉफ्टवेयर में दृश्य, मिडिलवेयर या कहीं और में मॉडल तक पहुंचने की अनुमति देगा। आइए एक दृश्य बनाकर जारी रखें जहां हम अपने मॉडल को देख सकते हैं। फ़ीड/views.py संपादित करें और निम्नलिखित कोड जोड़ें, जैसा कि उल्लेख किया गया है। आपको # साइन के बाद कुछ भी जोड़ने की आवश्यकता नहीं होगी, वह कोड टिप्पणी है जो कोड के बारे में जानकारी को निरूपित करने के लिए उपयोग की जाती है। हम अपने मॉडल को विचारों में आयात करके शुरू करेंगे, और इसे एक संदर्भ में जोड़कर जहां हम इसे एक टेम्पलेट में प्रदर्शन के लिए एक सूची के रूप में प्रस्तुत कर सकते हैं। अगला, हम एक टेम्पलेट जोड़ेंगे जहां हम मॉडल के आधार पर एक नई ऑब्जेक्ट बनाने और इसे सर्वर पर पोस्ट करने के लिए फॉर्म और मॉडल को एक बटन के साथ प्रस्तुत कर सकते हैं। यह जटिल लगता है, इसलिए चलो इसे कदम से कदम रखें। इससे पहले कि हम दृश्य खत्म कर दें, आइए एक टेम्पलेट बनाएं जो सिर्फ मॉडल को प्रस्तुत करता है और सुनिश्चित करें कि हम इसे शेल में एक नई पोस्ट बनाकर देख सकते हैं। यहां बताया गया है कि कैसे देखें:
    posts = Post.objects.all() # डेटाबेस में अब तक सभी पोस्ट क्वेरी करें
यह सब बहुत सरल लगता है जब तक हम नीचे तक नहीं पहुंचते। रेंडर, पिछले उदाहरण की तरह HTTP प्रतिक्रिया के बजाय फ़ंक्शन द्वारा लौटा दिया गया मान, हमेशा अपने पहले इनपुट के रूप में एक अनुरोध लेता है, एक संदर्भ को स्वीकार करता है (इस मामले में डेटाबेस में पोस्ट), जिसे अब टेम्पलेट में प्रदान किया जा सकता है , और फ़ंक्शन में परिभाषित टेम्पलेट लौटाता है। टेम्पलेट एक HTML दस्तावेज़ होने जा रहा है, जिसमें Jinja2 नामक भाषा का एक छोटा सा हिस्सा है, जो HTML में पायथन की जानकारी प्रदान करता है। टेम्प्लेट बनाना शुरू करने के लिए, फ़ीड में दो निर्देशिकाएं बनाएं।

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

python manage.py shell
अब, चलो हमारे पोस्ट मॉडल आयात करते हैं

from feed.models import Post
अगला, हम एक स्ट्रिंग के साथ एक साधारण पोस्ट बनाएंगे और शेल से बाहर निकलेंगे। स्ट्रिंग कुछ भी हो सकता है, जब तक यह मान्य पाठ है।

Post.objects.create(text='hello world')
exit()
अंत में, हमें अपने फ़ीड में एक URL पैटर्न जोड़ने की आवश्यकता होगी। क्योंकि हमारा फ़ीड ऐप कई URL का उपयोग करेगा और हम फ़ाइल आकार को छोटा रखना चाहते हैं, आइए हमारे फ़ीड ऐप में एक स्थानीय urls.py बनाएं जो इस तरह दिखता है:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.feed, name='feed'),
]
हमें बेस ऐप में urls.py को संपादित करने की भी आवश्यकता होगी, जो भी हमने इसे कॉल करने का फैसला किया, यह पहली निर्देशिका थी जिसे हमने बनाया था। App/app.py संपादित करें और URL पैटर्न में निम्नलिखित जोड़ें
from django.urls import include # शीर्ष पर
    # ... पिछला कोड यहाँ
अब, जब हम पायथन Manage.py Runserver के साथ सर्वर चलाते हैं, तो हम अपने द्वारा बनाए गए पृष्ठ को देखेंगे क्योंकि हमारे पास मॉडल, दृश्य और टेम्पलेट के साथ -साथ URL पैटर्न भी है, साथ ही डेटाबेस में आइटम भी हैं। अगला, आइए हम बनाए गए फॉर्म को लागू करें और अपने पोस्ट बनाना शुरू करें। लेकिन इससे पहले कि हम बहुत अधिक कोड लिखें, आइए पहले लिखी गई स्क्रिप्ट का उपयोग करके एक बैकअप बनाएं, बैकअप। इस स्क्रिप्ट को शेल में चलाएं, कुछ क्षणों की प्रतीक्षा करें, और सभी कोड हमारे गिट रिपॉजिटरी तक समर्थित हो जाएंगे।

backup
फॉर्म को लागू करना अपेक्षाकृत सरल है। हम अपने फॉर्म को आयात करेंगे, दृश्य में एक पोस्ट अनुरोध हैंडलर जोड़ेंगे, और उसी दृश्य पर पुनर्निर्देशित करने से पहले डेटाबेस में पोस्ट को सहेजेंगे। हम पहले से आयात किए गए रीडायरेक्ट फ़ंक्शन का उपयोग कर सकते हैं, और दृश्य पैटर्न के लिए URL प्राप्त करने के लिए रिवर्स नामक एक अन्य फ़ंक्शन। हम इसे स्ट्रिंग 'फीड: फ़ीड' के साथ क्वेरी करेंगे क्योंकि शामिल पैटर्न का नामस्थान फ़ीड है, और दृश्य को फ़ीड भी कहा जाता है।
    posts = Post.objects.all() # डेटाबेस में अब तक सभी पोस्ट क्वेरी करें
    if request.method == 'POST': # पोस्ट अनुरोध को संभालें
        form = PostForm(request.POST) # फॉर्म का एक उदाहरण बनाएं और उस पर डेटा सहेजें
        if form.is_valid(): # प्रपत्र को मान्य करें
            form.save() # नई वस्तु को सहेजें
        return redirect(reverse('feed:feed')) # एक अनुरोध के साथ एक ही URL पर पुनर्निर्देशित करें
        'form': PostForm(), # फॉर्म को संदर्भ में पास करना सुनिश्चित करें ताकि हम इसे प्रस्तुत कर सकें।
अब, हमें नए फॉर्म के लिए टेम्पलेट को अपडेट करना होगा। हम इसका उपयोग करके ऐसा कर सकते हैं
HTML में टैग करें और एक सबमिट बटन के साथ HTML टेम्पलेट में फॉर्म प्रदान करें। हमें एक सीएसआरएफ टोकन, एक टोकन की भी आवश्यकता होगी जो बाहरी साइटों को पहले एक पृष्ठ लोड किए बिना फॉर्म में पोस्ट करने से रोकता है।
चलो इसे तोड़ते हैं। एक नया फॉर्म क्लास, एक टोकन, फॉर्म ही और एक सबमिट बटन है। बहुत सरल है, लेकिन जब हम इस पर एक नज़र डालते हैं, तो हम इसे बेहतर बनाना चाहते हैं। यह काम करता है, हम फॉर्म के साथ नए पोस्ट पोस्ट कर सकते हैं और वे अब डेटाबेस में सहेजे जाते हैं। यहां कुछ चीजें चल रही हैं। हम यह घोषित करने के लिए HTML टैग का उपयोग करते हैं कि दस्तावेज़ एक HTML दस्तावेज़ है, हम फॉर्म के लिए टोकन को रेंडर करने के लिए एक टेम्प्लेट टैग ({ %… %}) का उपयोग करते हैं, और फॉर्म को रेंडर करने के लिए दूसरा, {{…}}। हमारे पास ब्लॉक टैग और एक टेम्पलेट टैग का उपयोग करके पाठ को रेंडर करने के लिए एक लूप भी है। ब्लॉक टैग वास्तव में महत्वपूर्ण हैं क्योंकि हम परिभाषित कर सकते हैं कि टेम्पलेट के वर्गों को उनके साथ कैसे प्रदान किया जाता है, और टेम्पलेट टैग इस बात का आधार हैं कि हम अपने कोड में चर कैसे डालते हैं। अब हमें अपने ऐप को बेहतर बनाने की जरूरत है, क्योंकि अभी के लिए यह वास्तव में बुनियादी दिखता है। हम इसे CSS का उपयोग करके, या तो इनलाइन, या दस्तावेज़ में प्रत्येक ऑब्जेक्ट से जुड़ी कक्षाओं में कर सकते हैं। सीएसएस वास्तव में अच्छा है क्योंकि यह पृष्ठ पर सब कुछ बताता है कि यह कैसे दिखना चाहिए,और यह वास्तव में अच्छा लग सकता है। कुछ पुस्तकालय हैं जो ऐसा कर सकते हैं, लेकिन मेरा व्यक्तिगत जाना बूटस्ट्रैप है। बूटस्ट्रैप को उनकी वेबसाइट से डाउनलोड किया जा सकता है,getbootstrap.com/। एक बार, इंस्टॉलेशन डॉक्स को पढ़ने के लिए बटन दबाएं, और CDN सेक्शन के माध्यम से शामिल कोड को कॉपी करें। आपको हेड नामक एक टैग में, अपने HTML दस्तावेज़ के शीर्ष पर इस कोड की आवश्यकता होगी। इसके अलावा, आइए आगे बढ़ें और एक बेस टेम्पलेट बनाएं ताकि हमें प्रत्येक टेम्पलेट में इन लिंक को फिर से बनाने की आवश्यकता न हो। MKDIR टेम्प्लेट के साथ टेम्प्लेट नामक एक नई निर्देशिका बनाएं, और फिर टेम्प्लेट/base.html को संपादित करें। इसे ऐसा दिखना चाहिए:
CSS और जावास्क्रिप्ट, .CSS और .JS फ़ाइलों को कॉपी करना सुनिश्चित करें, क्योंकि हमें भविष्य में हमारी साइट को अधिक कार्यात्मक बनाने के लिए जावास्क्रिप्ट की आवश्यकता होगी। अब, चलो बैश शेल पर लौटते हैं और एक त्वरित कमांड चलाते हैं। याद रखें, यदि आपको कभी भी आभासी वातावरण तक पहुंचने की आवश्यकता है, तो स्रोत venv/bin/सक्रिय करें। यह आपको स्थानीय रूप से पायथन पैकेजों को इस तरह से स्थापित करने देगा जो Django उन्हें एक्सेस करने देता है। Django बूटस्ट्रैप कक्षाओं द्वारा उत्पन्न हमारे रूपों को देने के लिए, हम एक पायथन पैकेज का उपयोग करेंगे, जिसे क्रिस्पी फॉर्म कहा जाता है। हम इसे निम्नलिखित कमांड के साथ डाउनलोड कर सकते हैं

pip install django-crispy-forms
एक बार यह स्थापित हो जाने के बाद, इसे सेटिंग्स में जोड़ें।
    # … पिछला कोड यहाँ
अब, हमारे फ़ीड टेम्पलेट में वापस, हम कुछ चीजों को हटा सकते हैं। आइए दस्तावेज़ की शुरुआत और अंत को हटा दें और इसे हमारे बेस टेम्पलेट से विरासत के साथ बदलें, विस्तार और ब्लॉक परिभाषा का उपयोग करके। इसके अलावा, हम लोड के साथ एक टेम्पलेट फ़िल्टर आयात और फॉर्म में एक टेम्पलेट फ़िल्टर जोड़ेंगे। अंत में, आइए एक बटन की तरह दिखने के लिए फॉर्म पर बटन पर एक बूटस्ट्रैप क्लास जोड़ें। यह इस तरह दिखना चाहिए:
सुंदर! यह पहले से ही काफी कोड है। अगला, हमें इसका परीक्षण करना चाहिए और सुनिश्चित करना चाहिए कि हम देख सकते हैं कि सब कुछ अच्छा लग रहा है, और यह भी सुनिश्चित करें कि सब कुछ ठीक से काम कर रहा है। पिछले निर्देशों के अनुसार सर्वर को चलाएं और सुनिश्चित करें कि साइट ठीक दिखती है और ठीक काम करती है। अच्छा काम! आप अगले चरण पर जाने के लिए तैयार हैं, जिसमें हम समान URL, फॉर्म, व्यू और टेम्प्लेट का उपयोग करके उपयोगकर्ता लॉगिन कार्यक्षमता जोड़ेंगे। बेस टेम्प्लेट महत्वपूर्ण है, और हम इसे संशोधित करना जारी रखेंगे और आवश्यकतानुसार परिवर्तन करेंगे, लेकिन अब आइए अपनी साइट को और अधिक सुरक्षित बनाने पर ध्यान केंद्रित करें, उपयोगकर्ताओं को उपयोगकर्ता नाम और पासकोड के साथ लॉग इन करने में सक्षम बनाकर, और अंततः और भी महत्वपूर्ण जानकारी है कि आपके ऐप को सुरक्षित रखने में मदद करेगा और केवल आपके स्वयं के खाते को आपके द्वारा सुलभ। ऐसा करने के लिए, हमें Django में निर्मित उपयोगकर्ता मॉडल का उपयोग करना होगा। उपयोगकर्ता मॉडल एक डेटाबेस मॉडल है, जो हमारी पोस्ट की तरह है, जिसे उपयोगकर्ता को वेबसाइट में लॉग इन करने के लिए प्रदान किया जा सकता है। भविष्य में, इससे पहले कि हम साइट को इंटरनेट पर तैनात करें, हम करेंगेइस मॉडल को इसके लिए जिम्मेदार अन्य मॉडलों के साथ विस्तारित करें, और लॉगिन के लिए अतिरिक्त सुरक्षा उपायों का निर्माण करें जो फ़िशिंग के लिए प्रतिरोधी हैं। हम कुछ निर्मित लॉगिन रूपों का उपयोग करके शुरू करेंगे जो Django प्रदान करता है। सबसे पहले, आइए एक नया ऐप बनाएं जिसका उपयोग हम मूल लॉगिन पेज के लिए टेम्प्लेट और विचारों को प्रस्तुत करने के लिए करेंगे। हम ऐप को सुरक्षित करने के लिए निरंतर लॉगिन चुनौतियों का प्रतिनिधित्व करने के लिए अन्य ऐप भी बनाएंगे, जिसमें एक पिनकोड, चेहरे की पहचान, क्षेत्र संचार के पास, बाहरी उपकरणों, मल्टी फैक्टर प्रमाणीकरण और फिंगरप्रिंट मान्यता शामिल हैं। हमने पहले ही एक ऐप शुरू करने के बारे में बात की थी। हमारी निर्देशिका से, आभासी वातावरण के अंदर, प्रबंधित करें।

python manage.py startapp users
अब, हमारे पास नए ऐप के लिए एक निर्देशिका होनी चाहिए। आइए उस निर्देशिका में एक दृश्य बनाकर शुरू करें जो उपयोगकर्ता लॉगिन से मेल खाती है। Django ने उपयोगकर्ता लॉगिन के लिए विचारों में बनाया है, लेकिन ये हमारे लिए उपयुक्त नहीं होंगे क्योंकि हमें एक कस्टम दृश्य की आवश्यकता है, जो अधिमानतः एक परिभाषा के साथ किया जाता है। इस दृश्य में, हम पोस्ट अनुरोध के लिए जाँच करके शुरू करेंगे, अनुरोध पास करें। उपयोगकर्ताओं/views.py में, निम्न कोड जोड़ें
        username = request.POST['username'] # पोस्ट अनुरोध से उपयोगकर्ता नाम और पासवर्ड प्राप्त करें
        password = request.POST['password'] # उपयोगकर्ता को प्रमाणित करें
यह सब आपको एक बुनियादी लॉगिन दृश्य की आवश्यकता है। अब, आइए बेस टेम्पलेट को बढ़ाकर दृश्य के लिए एक फॉर्म बनाएं। हम उपयोगकर्ताओं के फ़ोल्डर में टेम्प्लेट के लिए एक नई निर्देशिका बनाकर शुरू करेंगे।

mkdir users/templates
mkdir users/templates/users
अब, हमें उपयोगकर्ताओं/टेम्प्लेट/उपयोगकर्ताओं/login.html को संपादित करने में सक्षम होना चाहिए। जब हम इस पर होते हैं, तो हम उपयोगकर्ता को साइन अप करने की अनुमति देने के लिए एक टेम्पलेट बनाएंगे।

nano users/templates/users/login.html
अब, टेम्पलेट में,
यह एक लॉगिन टेम्पलेट की मूल बातें है। यह वास्तव में संरचना में अन्य टेम्पलेट की तरह है, लेकिन जब यह प्रस्तुत किया जाता है तो यह थोड़ा अलग दिखता है। हम इस कोड को एक और समान समान टेम्प्लेट बनाने के लिए कॉपी कर सकते हैं जिसे रजिस्टर। Html कहा जाता है, जहां हम शब्दांकन को बदल देंगे और हमारे द्वारा निर्मित एक नए रूप का उपयोग करेंगे। चलो पहले टेम्पलेट बनाते हैं। उपयोगकर्ताओं/टेम्प्लेट/उपयोगकर्ताओं को संपादित करें/register.html और निम्न कोड जोड़ें:
अब, आइए अपने उपयोगकर्ता पंजीकरण के लिए एक फॉर्म बनाएं और एक मॉडल के साथ अपने उपयोगकर्ता लॉगिन को अपग्रेड करने से पहले दृश्य पर वापस जाएँ। हम इस फॉर्म को शुरू करने के लिए बुनियादी बना देंगे, लेकिन भविष्य में अधिक विवरण और सुरक्षा सुविधाओं जैसे कि समझौतों और कैप्चा को शामिल करें। नैनो उपयोगकर्ताओं/forms.py के साथ फॉर्म संपादित करें, और निम्न कोड जोड़ें।

from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm

class UserRegisterForm(UserCreationForm):
    email = forms.EmailField()

    class Meta:
        model = User
        fields = ['username', 'email', 'password1', 'password2']
इसलिए हमारे पास यहां एक और रूप है, जो काफी सरलता से काम करता है। यह उपयोगकर्ता नाम, ईमेल और पासवर्ड के साथ एक उपयोगकर्ता रजिस्टर फॉर्म है, साथ ही एक पुष्टि पासवर्ड फ़ील्ड भी है। ध्यान दें कि यह फॉर्म नियमित रूपों का विस्तार नहीं करता है। वर्ग वर्ग, यह एक मॉडल फॉर्म है जिसका अर्थ है कि इसमें मेटा है। एक फ़ील्ड को केवल एक ही परिभाषित किया गया है, और क्लास मेटा मॉडल को परिभाषित करता है जो प्रपत्र बाकी जानकारी से मेल खाता है जो फॉर्म में लिखा जाएगा। इसमें से अधिकांश पहले से ही Django के UserCreationForm में निर्मित हैं, इसलिए हम इसका उपयोग वर्ग के आधार के रूप में करेंगे (कोष्ठक में पारित)। इसके बाद, हम एक उपयोगकर्ता को पंजीकृत करने के दृश्य की जांच करेंगे, अब हमारे पास एक फॉर्म और एक टेम्पलेट है। यह एक मोडफॉर्म है, जैसे नए पोस्ट व्यू में एक। उपयोगकर्ताओं को संपादित करें/views.py और निम्न कोड जोड़ें:
# ... आयात
यह सब हमें एक उपयोगकर्ता को पंजीकृत करने की आवश्यकता है, लेकिन हमारे पास अधिक जानकारी होनी चाहिए। हम उस समय को जानना चाहते हैं जो उपयोगकर्ता पंजीकृत था, वे किस समय साइट पर थे, उनके बारे में कुछ जानकारी, जैसे कि जीवनी, टाइमज़ोन, आदि। इसके अलावा, हमें उपयोगकर्ता के लिए खाते में अपने फ़ीड मॉडल, पोस्ट को अपडेट करने की आवश्यकता होगी प्रत्येक उपयोगकर्ता को मॉडल और विशेषता पोस्ट। ऐसा करने के लिए, हम दोनों ऐप्स में मॉडल को अपडेट करेंगे। आइए फीड मॉडल को संपादित करके शुरू करें। यह अब इस तरह दिखना चाहिए:
from django.db import models # ... आयात
    author = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, related_name='posts') # इस लाइन में जोड़ें
फ़ाइल में जोड़े गए दूसरी पंक्ति पर ध्यान दें। यह एक विदेशी कुंजी है, जो प्रत्येक पोस्ट को प्रति पोस्ट एक एकल उपयोगकर्ता को विशेषता देगा, इसलिए हम यह सुनिश्चित कर सकते हैं कि हम पोस्ट को उपयोगकर्ता-प्रति-उपयोगकर्ता आधार पर सहेजते हैं और कोई भी पोस्ट उपयोगकर्ता को इसे जिम्मेदार ठहराए बिना नहीं बनाया जा सकता है। हम इस विदेशी कुंजी को उस वर्ग के साथ परिभाषित करते हैं जो यह प्रतिनिधित्व करता है, पोस्ट सुनिश्चित करने के लिए एक डिलीट तर्क उपयोगकर्ताओं के साथ हटा दिया जाता है, शून्य और खाली तर्क यह सुनिश्चित करने के लिए कि हम उपयोगकर्ता को हटा सकते हैं यदि आवश्यक हो, और हम पहले से ही पोस्ट पर उपयोगकर्ता की कमी के लिए समायोजित कर सकते हैं बनाया गया, और एक संबंधित नाम, जिसका उपयोग हम उपयोगकर्ता द्वारा बनाए गए पोस्ट ऑब्जेक्ट को संदर्भित करने के लिए कर सकते हैं। यह संबंधित नाम, पोस्ट के लेखक के विपरीत, पोस्ट के लेखक, हमें उपयोगकर्ता देता है जिसने पोस्ट को स्वयं पोस्ट किया था। अब हम उन पोस्ट को प्राप्त कर सकते हैं जो user.posts.all (), या लेखक.पोस्ट्स। सभी () को चलाकर बना सकते हैं। अब, आइए हमारे लॉगिन को और अधिक लचीला बनाएं। हम पहले से ही अपनी साइट को फ़िशिंग के लिए बहुत कम असुरक्षित बना सकते हैं, बस उस समय की संख्या को सीमित करके हम एक लॉगिन को अनुमति देंगेसाइट, यह काफी आसान है। आइए प्रत्येक उपयोगकर्ता के बारे में कुछ जानकारी संग्रहीत करना शुरू करें क्योंकि हम अपना ऐप विकसित करना जारी रखते हैं। उपयोगकर्ताओं/मॉडल को संपादित करना, निम्नलिखित जोड़ें

from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, null=True, blank=True, related_name='profile')
    account_created = models.DateTimeField(default=timezone.now)
    last_seen = models.DateTimeField(default=timezone.now)
    can_login = models.DateTimeField(default=timezone.now)
    preferred_name = models.CharField(max_length=20,default='', null=True, blank=True)
    bio = models.TextField(blank=True, default='')
ध्यान दें कि यह मॉडल पोस्ट मॉडल के समान है। हमारे पास एक अतिरिक्त आयात है, टाइमज़ोन, जो हमें डेटाइम फ़ील्ड पर डिफॉल्ट सेट करने की अनुमति देगा, और हमारे पास पोस्ट की तरह एक CharacterFeild और TextField भी है। इन सभी टाइमस्टैम्प का उपयोग करने से हमें साइट को सुरक्षित करने और इसके उपयोग को समझने में मदद मिलती है, और पाठ फ़ील्ड हमें वेबसाइट पर प्रत्येक उपयोगकर्ता, या लेखक के बारे में जानकारी प्रदान करते हैं। OnetOonefield एकमात्र मामूली विचार होना चाहिए, यह वास्तव में एक पूर्वगामी के समान व्यवहार करता है, लेकिन केवल एक बाद के मॉडल के साथ। इस तरह, उपयोगकर्ता के पास केवल एक प्रोफ़ाइल है, जबकि उनके पास कई पोस्ट हो सकते हैं। अब, आइए हमारे लॉगिन में सुधार करें और प्रोफ़ाइल के लिए ध्यान देने के लिए विचारों को पंजीकृत करें। सबसे पहले, उपयोगकर्ताओं/विचारों को संपादित करें और रजिस्टर दृश्य पर ध्यान केंद्रित करें:
# ... आयात
            Profile.objects.create(user=user) # उपयोगकर्ता के लिए एक प्रोफ़ाइल बनाने के लिए, इस लाइन को जोड़ना सुनिश्चित करें
यह केवल किसी भी जानकारी को भरने के बिना, उपयोगकर्ता के लिए एक प्रोफ़ाइल बनाता है। अब, हम यह सुनिश्चित करना चाहते हैं कि उपयोगकर्ता खाता बहुत बार लॉग इन नहीं किया जा सकता है, या कम से कम पासवर्ड को अक्सर आजमाया नहीं जा सकता है, इसलिए आइए लॉगिन दृश्य को अपडेट करें।
# ... आयात
        if user and user.profile.can_login < timezone.now(): # ध्यान दें कि अब हम जांचते हैं कि क्या उपयोगकर्ता लॉग इन कर सकता है
        else: # यदि लॉगिन सफल नहीं था,
            user = User.objects.filter(username=username).first() # यह वह हिस्सा है जहां हम उपयोगकर्ताओं को प्रोफ़ाइल अपडेट करते हैं
                profile.can_login = timezone.now() + datetime.timedelta(seconds=15) # इसलिए वे कुछ सेकंड के लिए फिर से लॉग इन नहीं कर सकते
यह सुरक्षा का मूल मौलिक है। सुनिश्चित करें कि साइट किसी के लिए असुरक्षित नहीं है, बस हर संभव पासवर्ड संयोजन की कोशिश कर रहा है, या यहां तक ​​कि उनमें से कुछ एक ही समय में भी। यह उस साधारण उपयोगकर्ता के लिए निराशाजनक नहीं होगा जो अपने पासकोड को जानता है और बस कुछ उपकरणों पर लॉग इन करता है, लेकिन यह कई फ़िशिंग रोबोटों को ऐप से बाहर रखेगा। ध्यान दें कि हमने एक चर, CAN_LOGIN के साथ एक IF स्टेटमेंट जोड़ा, जो अतीत में एक समय होना चाहिए, और इसे उसी उपयोगकर्ता नाम का उपयोग करके प्रत्येक असफल लॉगिन के साथ अपडेट करना चाहिए। इस तरह, एक दुर्भावनापूर्ण उपयोगकर्ता जल्दी से पास कहीं भी पासवर्ड का अनुमान लगाने में सक्षम नहीं होगा। DateTime.Timedelta () में सेकंड की संख्या को भी अपडेट किया जा सकता है, और वेबसाइट अधिक सेकंड के साथ अधिक लचीला अभी तक थोड़ा कम उपयोग करने योग्य होगी। मैं 15 के साथ शुरू करने की सलाह देता हूं। याद रखें, हमने अपने काम को बचाने के लिए एक बैकअप स्क्रिप्ट का निर्माण किया, तो चलिए आगे बढ़ते हैं और हमारे पास अब तक जो कुछ भी है, वह सुनिश्चित करने के लिए कि हमारे पास सब कुछ बच गया है। कमांड चलाएं:

sudo backup
एक बार फिर, यह आपके काम को अब तक बचाएगा। मैं अपने काम को बचाने के लिए लगातार बैकअप चलाने की सलाह देता हूं, और आप स्वचालित रूप से बैकअप नौकरी भी चलाना चाह सकते हैं। आप क्रोन नामक यूनिक्स उपयोगिता का उपयोग करके ऐसा कर सकते हैं। इस उपयोगिता को सक्रिय करने के लिए, निम्न कमांड चलाएं और अपना पासवर्ड दर्ज करें:

sudo crontab -e
यदि आपने पहले से ही नैनो के लिए विकल्प 1 का चयन नहीं किया है, तो पाठ संपादक आपको पहले से परिचित होना चाहिए, और तीर कुंजियों का उपयोग करके फ़ाइल के नीचे स्क्रॉल करें। निम्न पंक्ति जोड़ें:

0 * * * * sudo backup
क्रोन प्रारूप मिनट, घंटे, महीने का दिन, महीने, सप्ताह का दिन का उपयोग करता है, जहां एक * या एक संख्या का प्रतिनिधित्व करता है जब कमांड चलाना है। मिनट के लिए 0 और * बाकी विकल्पों के लिए * का उपयोग करके, हम मिनट की शुरुआत में हर घंटे के पहले मिनट पर एक कमांड चला सकते हैं। यह हमें स्वचालित रूप से कोड वापस करने देता है। सूडो के साथ निष्पादित होने पर क्रोन की सभी नौकरियां रूट के रूप में चलती हैं, इसलिए हमें हर घंटे पासवर्ड टाइप करने की आवश्यकता नहीं होगी। पासवर्ड का उपयोग किए बिना हमारे कोड का बैकअप लेना आसान बनाने के लिए, आइए हमारे बैकअप कमांड के लिए पासवर्ड को अक्षम करें। हम निम्नलिखित कमांड को निष्पादित करके और पासवर्ड दर्ज करके ऐसा करेंगे:

sudo visudo
अब, चलो फ़ाइल के नीचे स्क्रॉल करें और एक और पंक्ति जोड़ें:

ALL ALL=NOPASSWD: /bin/backup
यह हमें पासवर्ड के बिना किसी भी उपयोगकर्ता के रूप में कमांड "बैकअप" चलाने देता है। इसके लिए प्रारूप आसान है, बस "सभी = nopasswd:/bin/" के साथ लाइन को उपसर्ग करें और कमांड के साथ समाप्त करें, उदाहरण के लिए/बिन/बैकअप, जो/USR/BIN/में मौजूद है। अब, आइए ईमेल के साथ काम करना शुरू करें। वेबसाइटों के लिए ईमेल वास्तव में महत्वपूर्ण है, क्योंकि यह एक वेबसाइट को अधिक सुरक्षित रखने का एक तरीका है, सत्यापित करें कि उपयोगकर्ता वास्तविक लोग हैं, और यहां तक ​​कि ग्राहकों के लिए बाजार उत्पाद या सेवाएं भी हैं। बहुत से लोग जो अक्सर इंटरनेट को रोजाना अपने ईमेल की जांच करते हैं, और उन उत्पादों और सेवाओं के बारे में सभी प्रकार के मार्केटिंग ईमेल प्राप्त करते हैं जिनमें वे रुचि रखते हैं। कुछ विकल्प हैं जब यह एक Django वेबसाइट पर ईमेल को सक्षम करने की बात आती है, और आप चुनने के लिए स्वागत करते हैं जो भी आपके लिए सबसे अच्छा काम करता है। सबसे पहले, आप एक ईमेल सेवा के लिए भुगतान कर सकते हैं जो आपको अपने डोमेन से ईमेल भेजने में सक्षम करेगा और न्यूनतम कोड की आवश्यकता है। कई सेवाएं हैं जो इसे प्रदान करती हैं, जैसे कि Google कार्यक्षेत्र, Sendinblue, Mailgun, और बहुत कुछ। अन्यथा, आप अच्छी तरह से इमारत से दूर हैंखरोंच से अपने सर्वर के भीतर आपकी अपनी ईमेल सेवा। मैं इस विकल्प की सलाह देता हूं, भले ही यह अधिक कोड हो और विशेष होस्टिंग की आवश्यकता हो। आप अपने होम कंप्यूटर से एक मेल सर्वर शुरू करने में सक्षम नहीं होंगे, इसलिए चलो आगे बढ़ें और क्लाउड में एक सर्वर शुरू करने और अपने स्वयं के मेल सर्वर बनाने से पहले ईमेल भेजने के लिए कॉन्फ़िगरेशन और कोड की जांच करें। सबसे पहले, निम्नलिखित के साथ सेटिंग्स को संपादित करें

nano app/settings.py
जहां ऐप आपके द्वारा StartApp के साथ बनाए गए ऐप का नाम है। निम्नलिखित पंक्तियाँ जोड़ें:

SITE_NAME = 'Django App'

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_ADDRESS = username@server.com'
EMAIL_HOST_USER = 'username'
EMAIL_HOST_PASSWORD = config['EMAIL_HOST_PASSWORD']
DEFAULT_FROM_EMAIL = '{} <{}>'.format(SITE_NAME, EMAIL_HOST_USER)
जब आप अपने ऐप को तैनात करने के लिए तैयार होते हैं, तो इन्हें बदलना सुनिश्चित करें, हम बाद में इसे फिर से करेंगे। Email_address सेटिंग वह ईमेल होनी चाहिए जिसे आप भेजना चाहते हैं, और पासवर्ड (ईमेल_हॉस्ट_पासवर्ड) को उस सर्वर के लिए आपके द्वारा उत्पन्न पासवर्ड पर सेट किया जाना चाहिए। मैं एक कॉन्फ़िगर फ़ाइल से पासवर्ड लोड करता हूं, इसे निम्नलिखित तर्क का उपयोग करके कोड से बाहर रखने के लिए, सेटिंग्स में इन लाइनों के ऊपर।

import os
import json
with open('/etc/config.json') as config_file:
    config = json.load(config_file)
फिर, मैंने nano का उपयोग करके /etc/config.json में कॉन्फ़िगरेशन के साथ एक JSON फ़ाइल सेट की है। फ़ाइल को संपादित करने के लिए:

sudo nano /etc/config.json
निम्नलिखित पंक्तियाँ जोड़ें:

{
	“EMAIL_HOST_PASSWORD”: “<some password here>”
}
हम कॉन्फ़िगर फ़ाइल को संपादित करना जारी रखेंगे और उन सभी पासवर्डों और कुंजियों को जोड़ेंगे जो हम ऐप में उपयोग करेंगे। अभी के लिए, आइए जल्दी से जांचें कि पायथन का उपयोग करके ईमेल कैसे भेजें। सबसे पहले, आइए एक सत्यापन ईमेल के लिए एक टेम्पलेट बनाएं जिसे हम अपने उपयोगकर्ताओं को भेज सकते हैं, और इसे उपयोगकर्ता टेम्प्लेट निर्देशिका में डाल सकते हैं। यह टेम्पलेट HTML में लिखा जाएगा।

nano users/templates/users/verification_email.html
यह ईमेल काफी सरल है। यह एक उपयोगकर्ता, साइट के लिए आधार URL, और एक उपयोगकर्ता आईडी और टोकन का संदर्भ लेता है जो उपयोगकर्ता के ईमेल को सत्यापित करने के लिए उपयोग किया जाता है। सेटिंग्स में बेस URL को परिभाषित करना सुनिश्चित करें। इससे पहले कि हम टेम्पलेट को रेंडर करने के लिए कुछ पायथन कोड लिखें। आगे बढ़ें और निम्नलिखित लाइनों को APP/SETTINGS.PY, शुरुआत के पास जोड़ें।

SITE_NAME = 'Django App'
PROTOCOL = 'https'
DOMAIN = 'example.com'

BASE_URL = PROTOCOL + '://' + DOMAIN
आखिरकार, जब आपकी साइट इंटरनेट के लिए तैयार हो जाती है और आप इसे तैनात करते हैं, तो आप अपने डोमेन को परिभाषित करना चाहेंगे क्योंकि आप साइट का प्रतिनिधित्व करने के लिए खरीदे गए डोमेन नाम के रूप में हैं। यह वह नाम है जिसे आप अपनी साइट तक पहुंचने के लिए नवबार में टाइप करेंगे। अभी के लिए, आप डोमेन को खाली छोड़ सकते हैं या किसी प्लेसहोल्डर का उपयोग कर सकते हैं। आप SITE_NAME को एक ऐसे नाम में भी बदलना चाहेंगे जिसे आप अपनी साइट को अपनी चुनने के लिए देना चाहते हैं। इससे पहले कि हम ईमेल भेजें, आइए एक टोकन जनरेटर बनाएं ताकि हमारे पास एक खाता सक्रियण टोकन हो जो कभी भी समाप्त नहीं होता है। हम एक खाता सक्रियण टोकन के निर्माण और आयात करके ऐसा कर सकते हैं जो निम्नलिखित की तरह दिखता है। फ़ाइल संपादित करें:

nano users/tokens.py
निम्न कोड जोड़ें:

from django.contrib.auth.tokens import PasswordResetTokenGenerator
import six
class TokenGenerator(PasswordResetTokenGenerator):
    def _make_hash_value(self, user, timestamp):
        return (
            six.text_type(user.pk) + six.text_type(timestamp)
        )
account_activation_token = TokenGenerator()
unsubscribe_token = TokenGenerator()
यह मूल टोकन जनरेटर एक टोकन उत्पन्न करता है जिसे हम उपयोगकर्ता को एक URL में भेज सकते हैं और उपयोगकर्ता उनके ईमेल को सत्यापित करने और उनके खाते को सक्रिय करने के लिए उपयोग कर सकता है। अगला, आइए देखें कि ईमेल कैसे भेजें। नैनो का उपयोग करके, उपयोगकर्ताओं/ईमेल को संपादित करें।

nano users/email.py
सत्यापन HTML ईमेल भेजना इस तरह दिखेगा:

from django.contrib.auth import get_user_model
from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode
from django.contrib.sites.shortcuts import get_current_site
from django.core.mail import send_mail
from django.template.loader import render_to_string
from django.utils.encoding import force_bytes
from django.core.mail import EmailMultiAlternatives
from django.shortcuts import render
from .tokens import account_activation_token
from django.template.loader import render_to_string
from django.utils.html import strip_tags
from django.template import Template, Context
from django.conf import settings
import traceback

def send_verification_email(user):
    User = get_user_model()
    mail_subject = '[{}] Activate your account.'.format(settings.SITE_NAME)
    html_message = render_to_string('users/verification_email.html', {
        'user': user,
        'domain': settings.DOMAIN,
        'protocol': 'https',
        'uid': urlsafe_base64_encode(force_bytes(user.pk)),
        'token': account_activation_token.make_token(user),
    })
    send_html_email(user, mail_subject, html_message)
यह काफी सरल है। हम उन कार्यों को आयात करते हैं जिन्हें हमें ईमेल भेजने की आवश्यकता होती है, ईमेल को टेम्प्लेट और हमारी सेटिंग्स के साथ रेंडर करें, और फिर हम ईमेल को टेम्पलेट नाम से परिभाषित करते हैं और इसे किसी फ़ंक्शन का उपयोग करके उपयोगकर्ता को भेजते हैं। आप देखेंगे कि हमने मेल भेजने के लिए फ़ंक्शन को परिभाषित नहीं किया है, Send_html_email, फिर भी, तो आइए हम इसे उस कोड के नीचे लिखते हैं जो हमने पहले से ही उपयोगकर्ताओं/ईमेल में जोड़ा है।

def send_html_email(user, mail_subject, html_message):
    to_email = user.email
    username = user.username
    if to_email == '':
        return None
    unsub_link = settings.BASE_URL + user.profile.create_unsubscribe_link()
    html_message = html_message + "<p><a href=\"" + unsub_link +  "\" + title=\"Unsubscribe from " + settings.SITE_NAME + " emails\">Unsubscribe</a></p></body></html>"
    msg = EmailMultiAlternatives(mail_subject, strip_tags(html_message), settings.DEFAULT_FROM_EMAIL, [to_email], headers={'List-Unsubscribe' : '<' + unsub_link + '>'},)
    msg.attach_alternative(html_message, "text/html")
    profile = user.profile
    try:
        msg.send(fail_silently=False)
        if not profile.email_valid:
            profile.email_valid=True
            profile.save()
    except:
        profile.email_valid=False
        profile.save()
यह थोड़ा अधिक जटिल है, और हम अभी तक इस कोड को चलाने के लिए तैयार नहीं हैं। ध्यान दें कि हम एक UNSUB_LINK को परिभाषित कर रहे हैं, जिस लिंक को उपयोगकर्ता हमारे ईमेल से सदस्यता समाप्त करने के लिए उपयोग कर सकता है। यह महत्वपूर्ण है, क्योंकि उपयोगकर्ताओं को हमारे ईमेल से बाहर निकलने में सक्षम होने की आवश्यकता होगी जब तक कि वे उन्हें किसी भी समय नहीं देखना चाहते। हम अपने संदेश के लिए एक पाठ विकल्प भी जोड़ते हैं, जो HTML टैग से छीन लिया गया HTML संदेश है। अंत में, हम जांचते हैं कि क्या ईमेल भेजा गया है, और यदि यह नहीं था, तो हम उपयोगकर्ता की प्रोफ़ाइल में चिह्नित करते हैं कि उनका ईमेल मान्य नहीं है। आइए उपयोगकर्ता मॉडल पर वापस जाएं ताकि हम यह सब काम कर सकें। हमें सदस्यता समाप्त करने के लिए एक लिंक उत्पन्न करने के लिए एक फ़ंक्शन को परिभाषित करने की आवश्यकता है, और एक बूलियन फ़ील्ड को परिभाषित करने के लिए यह चिह्नित करने के लिए कि उपयोगकर्ता का ईमेल मान्य नहीं है। सबसे पहले, उपयोगकर्ताओं/मॉडल के शीर्ष पर निम्नलिखित आयात जोड़ें।

nano users/models.py
# …
इसके बाद, आइए टोकन बनाने के लिए उपयोगकर्ता मॉडल में फ़ंक्शंस जोड़ें और ईमेल को सक्रिय करने के लिए उपयोग किए जाने वाले टोकन की जांच करें, साथ ही उपयोगकर्ता को सफलतापूर्वक अपने मेल को प्राप्त करने के लिए सहेजने के लिए फ़ील्ड भी। उपयोगकर्ताओं/मॉडल में फिर से, निम्न कोड को मॉडल के अंत में जोड़ें (इंडेंटेड कोड)
# …
            TimestampSigner().unsign(key, max_age=60 * 60 * 24 * 30) # 30 दिनों के लिए मान्य
यह काफी सरल है, हम एक टाइमस्टैम्पसिग्नर का उपयोग करते हैं, जो एक बुनियादी क्रिप्टोग्राफी उपकरण है, एक टोकन बनाने के लिए जो एक निश्चित समय के बाद समाप्त हो जाएगा, और हम यह भी जांचने के लिए एक और फ़ंक्शन का उपयोग करते हैं कि क्या यह मान्य है। हम इन टोकन का उपयोग दो बार करते हैं, एक बार ईमेल को सत्यापित करने के लिए, और एक बार एक अनसब्सक्राइब लिंक के लिए। अब जब हमारे पास ये हैं, तो हमें जो काम करना होगा, वह विचारों में है। उपयोगकर्ताओं/विचारों के भीतर, आइए ईमेल पते को सत्यापित करने के लिए, और सदस्यता समाप्त करने के लिए दृश्य जोड़ें।

nano users/views.py
सबसे पहले, निम्नलिखित आयात जोड़ें। मैंने कुछ अतिरिक्त में फेंक दिया, इसलिए हमें बाद में फिर से अधिक आइटम आयात नहीं करना पड़ेगा।
from .email import send_verification_email # सत्यापन ईमेल भेजने वाले फ़ंक्शन को आयात करना सुनिश्चित करें
आपके पास पहले से ही इनमें से कुछ आयात हो सकते हैं, लेकिन यह उन्हें दोहराने के लिए चोट नहीं करता है। आपको सत्यापन ईमेल भेजने वाले फ़ंक्शन को आयात करने की आवश्यकता है, साथ ही अन्य आयातों के बीच, उपयोगकर्ताओं से खाता_एक्टिवेशन_टोकन। अब, फ़ाइल के नीचे, निम्न कोड जोड़ें:
        # उन्हें अनसब्सक्राइब करें
    # अन्यथा पेज लॉगिन करने के लिए पुनर्निर्देशित करें
# sendwelcomeemail (अनुरोध, उपयोगकर्ता)
यह बहुत अधिक कोड है। चलो इसे तोड़ते हैं। पहला फ़ंक्शन, स्वच्छ और सरल, मेलिंग सूची से उपयोगकर्ता को अनसब्सक्राइब करता है। दूसरा फ़ंक्शन उनके ईमेल को सक्रिय करता है, और आप देखेंगे कि मैंने एक टिप्पणी फ़ंक्शन, SendwelComeEmail जोड़ा। आपका स्वागत है एक ईमेल टेम्पलेट और फ़ंक्शन परिभाषा का उपयोग करने के लिए एक स्वागत योग्य ईमेल भेजने के लिए, मैं अभी तक नहीं है। अंतिम फ़ंक्शन जो मैंने फेंक दिया है वह महत्वपूर्ण है, क्योंकि सक्रियण ईमेल समाप्त हो जाते हैं। इसलिए, हमें कुछ समय सक्रियण ईमेल को फिर से भेजना होगा। हम इसके लिए एक मूल फॉर्म का उपयोग कर सकते हैं, और सत्यापन ईमेल भेजने के लिए फ़ंक्शन को कॉल कर सकते हैं। इससे पहले कि हम ऐसा करें, आइए सुनिश्चित करें कि यह पहले स्थान पर भेजा जा रहा है, रजिस्टर दृश्य में एक फ़ंक्शन कॉल जोड़कर। रजिस्टर व्यू में रीडायरेक्ट से ठीक पहले इस लाइन को जोड़ें, DEF रजिस्टर, उपयोगकर्ताओं/व्यूज में।

nano users/views.py
# … (बाद में) डीईएफ रजिस्टर (अनुरोध):
# … (पहले) रीडायरेक्ट (
आपको उस कोड स्निपेट में पहली और अंतिम पंक्तियों को जोड़ने की आवश्यकता नहीं है, बस सुनिश्चित करें कि रजिस्टर व्यू उपयोगकर्ता को सत्यापन ईमेल भेजता है। इसे ऐसा दिखना चाहिए:
# ... आयात
            send_verification_email(user) # इस लाइन को जोड़ना सुनिश्चित करें!
अब, हमें सक्रियण ईमेल को फिर से तैयार करने के लिए एक फॉर्म जोड़ना होगा। उपयोगकर्ताओं/forms.py में, निम्न फॉर्म जोड़ें:
# … (आयात)
हमें इस रेसेंड ईमेल सक्रियण फॉर्म के अनुरूप एक टेम्पलेट की भी आवश्यकता होगी। आइए इस टेम्पलेट को जोड़ें। फ़ाइल को संपादित करें:

nano users/templates/users/resend_activation.html
अगला, फ़ाइल में निम्न कोड जोड़ें।

{% extends 'base.html' %}
{% block content %}
{% load crispy_forms_tags %}
        <form method="POST">
            {% csrf_token %}
            <fieldset class="form-group">
                <legend class="border-bottom mb-4">Resend activation email</legend>
                {{ form|crispy }}
            </fieldset>
            <div class="form-group">
                <button class="btn btn-outline-secondary" type="submit">Resend activation email</button>
            </div>
        </form>
{% endblock %}
वाह, यह बहुत कुछ है! अब, जब हम अपने सर्वर पर कोड को तैनात करते हैं, तो हम HTML ईमेल भेजने में सक्षम होंगे और ईमेल में एक क्लिक के साथ उपयोगकर्ता खातों को सक्रिय करेंगे। हम एक साधारण स्वागत ईमेल भी भेजना चाहते हैं, तो आइए देखें कि यह कैसे करना है। उपयोगकर्ताओं/ईमेल में वापस।, निम्न कोड जोड़ें:

def sendwelcomeemail(user):
    User = get_user_model()
    html = open('{}/users/welcome_email.html'.format(settings.BASE_DIR)).read()
    subject = 'Welcome to ' + settings.SITE_NAME + ', {{ username }}!'
    template = Template(html)
    subjtemplate = Template(subject)
    context = Context({'username': user.username, 'base_url': settings.BASE_URL, 'model_name': 'Daisy Holton, 'site_name': settings.SITE_NAME})
    renderedtemplate = template.render(context)
    subjcontext = Context({'username': user.username})
    subjrenderedtemplate = subjtemplate.render(subjcontext)
    send_html_email(user, subjrenderedtemplate, renderedtemplate)
इसके अलावा, हमें इस सभी जानकारी को प्रस्तुत करने के लिए एक टेम्पलेट की आवश्यकता होगी। मेरी वेबसाइट पर, टेम्प्लेट नीचे की तरह दिखता है, लेकिन आप इसे प्रारूपित करने के लिए स्वागत करते हैं, हालांकि आप इसे पसंद करते हैं।
ध्यान दें कि हमारे पास क्लोजिंग बॉडी या HTML टैग नहीं हैं, क्योंकि जब हम HTML अनसब्सक्राइब लिंक जोड़ते हैं तो हम इन्हें जोड़ते हैं। ये महत्वपूर्ण हैं, लेकिन हम उन्हें दो बार परिभाषित नहीं करना चाहते हैं। तो आगे क्या है? हमने एक लंबा सफर तय किया है। वास्तव में, हमें साइट को एक सर्वर पर तैनात करने के लिए तैयार होना चाहिए। हम @login_required डेकोरेटर जोड़ सकते हैं और अपने विचारों को सुरक्षित कर सकते हैं, उपयोगकर्ता साइनअप ले सकते हैं, आज्ञाकारी ईमेल भेज सकते हैं, और कैश जानकारी भेज सकते हैं, जो कि प्रासंगिक रहने के लिए एक वेबसाइट को क्या करने की आवश्यकता है, इसका आधार है। हम कुछ और उपयोगी सुविधाएँ जोड़ेंगे, और फिर हमारी साइट को सुरक्षित और उपयुक्त बनाने के लिए एक मेल सर्वर, डोमेन कॉन्फ़िगरेशन और फ़िल्टर सेट करने के लिए, एक दूरस्थ सर्वर पर हमारे कोड को तैनात करने के लिए एक आधार बनाएंगे। हमें एक पासवर्ड रीसेट दृश्य की भी आवश्यकता होगी, तो चलो वास्तव में जल्दी में जोड़ें। Django का बनाया गया पासवर्ड रीसेट दृश्य कुछ कार्यों में टूट गया है, लेकिन हम देखेंगे कि कैसे अपना खुद का दृश्य, ईमेल टेम्पलेट, प्रपत्र और URL पैटर्न लिखें। यहाँ उपयोगकर्ताओं/विचारों में दृश्य कैसा दिखता है।
# ... आयात
यह फ़ॉर्म Django में बनाया गया है, लेकिन हमें पासवर्ड रीसेट, उपयोगकर्ताओं/टेम्प्लेट/उपयोगकर्ताओं/पासवर्ड_सेट_कॉनफिम। Html की पुष्टि करने के लिए एक टेम्पलेट की आवश्यकता होगी
हमारे पास उपयोगकर्ताओं/टेम्प्लेट/उपयोगकर्ताओं/password_reset.html में एक साधारण फॉर्म के साथ एक पासवर्ड रीसेट ईमेल भेजने के लिए एक टेम्पलेट भी है।
ईमेल के लिए टेम्पलेट स्वयं सरल है, यह एक मूल HTML फ़ाइल है जो उपयोगकर्ताओं/टेम्प्लेट/उपयोगकर्ताओं/password_reset_email.html में पासवर्ड को रीसेट करने के लिए एक लिंक प्रदान करता है। Django स्वचालित रूप से इस फ़ाइल की व्याख्या करेगा।
हमें दो और टेम्प्लेट की भी आवश्यकता होगी। पहला यह पुष्टि करना है कि ईमेल भेजा गया है। इन के लिए दृश्य पहले से ही Django में हैं, इसलिए हमें बस उन्हें urls.py में संबोधित करने की आवश्यकता है। यह टेम्प्लेट उपयोगकर्ताओं/टेम्प्लेट/उपयोगकर्ताओं/पासवर्ड_रेसेट_डोन। Html पर स्थित है
और अंत में, यह पुष्टि करने के लिए कि पासवर्ड रीसेट पूरा हो गया है, उपयोगकर्ताओं/टेम्प्लेट/उपयोगकर्ता/पासवर्ड_रेसेट_कॉम्प्लेट। Html
अब, हमें इन विचारों के लिए URL पैटर्न की आवश्यकता है। उपयोगकर्ताओं/urls.py में, निम्न URL पैटर्न जोड़ें:
    # ... पिछले url यहाँ
चार टेम्प्लेट, यह बहुत कुछ है! लेकिन अब हम निश्चित रूप से उपयोगकर्ता के पासवर्ड को रीसेट करने में सक्षम हो सकते हैं, हमें किसी भी समय वेब ब्राउज़र से, सभी की आवश्यकता है। मैं समझता हूं कि यह बहुत अधिक कोड है। अगर यह आपके सिर पर थोड़ा सा लगता है, तो यह ठीक है। आप सुधार करेंगे, आपकी समझ में सुधार होगा, और आप बहुत जल्द कोड के साथ बहुत अधिक सक्षम हो जाएंगे। यदि आप पूरी तरह से खो गए हैं, तो मैं इस सॉफ़्टवेयर में वापस आने की सलाह देता हूं, बाद में एक स्व-पुस्तक सीखने के लिए ऑनलाइन कोड पाठ्यक्रम पर काम करने के बाद ऑनलाइन। ये आम तौर पर आरंभ करने के लिए स्वतंत्र होते हैं, और जब आप इस परियोजना में वापस आते हैं तो आपको सफल होने की जरूरत है। यदि आपको लगता है कि आप जारी रखने के लिए तैयार हैं, तो आगे पढ़ें, अगला, हम आपके कोड को एक रिमोट सर्वर पर तैनात करने और एक मेल सर्वर सेट करने के साथ -साथ BASH का उपयोग करके अपनी तैनाती को स्वचालित करने के लिए कवर करेंगे ताकि आप हमेशा एक नई प्रोजेक्ट सेट कर सकें। कुछ सरल आदेश। रिमोट सर्वर पर तैनात करने से पहले हमें जो आखिरी चीज करनी है, वह हमारी साइट को थोड़ा और अधिक सुरक्षित बनाती है। आपध्यान दें कि लॉगिन दृश्य केवल एक उपयोगकर्ता नाम और पासवर्ड लेता है, और कोई बहु कारक प्रमाणीकरण या एक समय कोड नहीं है। यह एक आसान फिक्स है, और एक ही कोड के साथ, हम अपनी साइट को टेक्स्ट मैसेज भेज सकते हैं और यहां तक ​​कि सर्वर को भेजे गए पाठ संदेशों के प्रति उत्तरदायी हो सकते हैं। शुरू करने के लिए, हम उपयोगकर्ता मॉडल में वापस जाएंगे और एक टाइमस्टैम्प हस्ताक्षरकर्ता जोड़ेंगे जो प्रत्येक लॉगिन का प्रतिनिधित्व करेगा। हम उपयोगकर्ता मॉडल में एक अद्वितीय, घूर्णन पहचानकर्ता भी जोड़ेंगे जिसका उपयोग हमारे लॉगिन में अतिरिक्त सुरक्षा जोड़ने के लिए किया जाएगा। उपयोगकर्ता मॉडल, उपयोगकर्ताओं/मॉडल को संपादित करना, निम्नलिखित जोड़ें
# UUID, टाइमस्टैम्प हस्ताक्षरकर्ता और URL जनरेटर (रिवर्स) आयात करना सुनिश्चित करें
    # इस कोड को यहां जोड़ें
    # और इस फ़ंक्शन को जोड़ें
            TimestampSigner().unsign(key, max_age=60 * settings.AUTH_VALID_MINUTES) # 3 मिनट के लिए मान्य
सुनिश्चित करें कि आपके उपयोगकर्ता/models.py इस तरह दिखते हैं, इसके अलावा टिप्पणियों के अलावा ( #के साथ लाइनों पर कोड)। इसे तोड़कर, यह सरल है। हमारे पास कुछ आयात हैं, एक टाइमस्टैम्पसिग्नर जो एक क्रिप्टोग्राफिक उपयोगिता है जो एक सुरक्षित कोड उत्पन्न कर सकती है और यह सुनिश्चित करने के लिए इसे सत्यापित कर सकती है कि यह मान्य है, केवल एक बार उपयोग किया गया है, और एक निश्चित संख्या में सेकंड से अधिक पुराना नहीं है। हम एक UUID का भी उपयोग करते हैं, जो एक अद्वितीय पहचानकर्ता है जो टोकन के हस्ताक्षर में हमारे उपयोगकर्ता की पहचान करता है, और URL में जहां टोकन उपयोगकर्ता को भेजा जाता है। हम दो कारक प्रमाणीकरण दृश्य बनाने के लिए इस मूल क्रिप्टोग्राफी का उपयोग करेंगे। इससे पहले कि हम कुछ और करें, चलो माइग्रेशन चलाएं ताकि हमारे उपयोगकर्ता मॉडल अपडेट हो जाएं। Manage.py के साथ निर्देशिका में, माइग्रेशन बनाने और पूरा करने के लिए निम्नलिखित कमांड चलाएं।

source venv/bin/activate
python manage.py makemigrations && python manage.py migrate
यह महत्वपूर्ण है क्योंकि हर बार जब हम मॉडल में बदलाव करते हैं, तो हमें टेबल बनाने और डेटाबेस को डिफॉल्ट के साथ अपडेट करने की आवश्यकता होगी, इससे पहले कि हम वास्तव में मॉडल का उपयोग कर सकें। अगला, आइए एक माध्यमिक प्रमाणीकरण दृश्य के लिए पुनर्निर्देशित करने के लिए हमारे लॉगिन दृश्य को सुधारें। उपयोगकर्ताओं/views.py में, लॉगिन फ़ंक्शन को हटा दें और URL पर पुनर्निर्देशित करें जो हमने अभी उपयोगकर्ता मॉडल में उत्पन्न किया है।
# ... आयात
        if user and user.profile.can_login < timezone.now(): # ध्यान दें कि अब हम जांचते हैं कि क्या उपयोगकर्ता लॉग इन कर सकता है
            # यहाँ था Auth_login फ़ंक्शन निकालें
                return redirect(user.profile.create_auth_url()) # ध्यान दें कि हम यहां एक नए URL पर पुनर्निर्देशित करते हैं
            else: # यदि उपयोगकर्ता बहु-कारक प्रमाणीकरण का उपयोग नहीं कर रहा है, तो बस उन्हें लॉग इन करें।
        else: # यदि लॉगिन सफल नहीं था,
            user = User.objects.filter(username=username).first() # यह वह हिस्सा है जहां हम उपयोगकर्ताओं को प्रोफ़ाइल अपडेट करते हैं
                profile.can_login = timezone.now() + datetime.timedelta(seconds=15) # इसलिए वे कुछ सेकंड के लिए फिर से लॉग इन नहीं कर सकते
तो यह बहुत सरल है, अब हमारे पास दो कारक प्रमाणीकरण दृश्य को पुनर्निर्देशित करने का एक तरीका है जब हम इसे बनाते हैं। यदि उपयोगकर्ता ने फोन नंबर नहीं जोड़ा है, तो हमारे पास एक गिरावट भी है। हम जल्द ही एक फोन नंबर जोड़ने के लिए एक बुनियादी दृश्य जोड़ेंगे और जल्द ही एक पाठ संदेश के साथ लॉग इन करेंगे। सबसे पहले, हमें अपने कोड से एक पाठ संदेश भेजने का एक आसान तरीका चाहिए। ऐसा करने के लिए, हम कई एपीआई से चुन सकते हैं, लेकिन मेरी राय में सबसे आसान एक ट्विलियो है। वे छोटी परियोजनाओं के साथ -साथ थोक छूट के लिए भी अच्छा मूल्य निर्धारण प्रदान करते हैं। Twilio.com पर एक खाता बनाएँ, अपनी परियोजना के बारे में कुछ विवरण भरें, एक फ़ोन नंबर खरीदें, और अपनी API कुंजी को अपनी सेटिंग्स पर कॉपी करें। फिर, इस कोड को एक नई फ़ाइल, उपयोगकर्ताओं/sms.py के तहत जोड़ें।

nano users/sms.py
# सभी आवश्यक पैकेज आयात करें
# यह कोड ट्विलियो के साथ पाठ भेजता है
# इतने सारे अंकों के साथ एक नंबर प्राप्त करने के लिए एक सहायक फ़ंक्शन
# उपयोगकर्ता को सत्यापित करने के लिए पाठ भेजें
# इस फ़ंक्शन के साथ कोई उपयोगकर्ता कोई भी पाठ भेजें
# इस फ़ंक्शन के साथ कोड को मान्य करें
# समय को मान्य करें
अपनी सेटिंग्स को उचित रूप से बदलना सुनिश्चित करें, इन पंक्तियों को अपनी कुंजी के साथ जोड़ना:
# अपने ट्विलियो डैशबोर्ड से इनकी कॉपी करना सुनिश्चित करें
AUTH_VALID_MINUTES = 3 # TFA पृष्ठ के मिनटों की संख्या एक बार त्वरित होने के बाद सक्रिय होती है
सबसे पहले, हमें अपने दो कारक प्रमाणीकरण विचारों के लिए रूपों की आवश्यकता होगी। उपयोगकर्ताओं/forms.py को संपादित करना, निम्न कोड जोड़ें।
# ... आयात
# हमारे फोन नंबर में प्रवेश करने के लिए एक फॉर्म
# प्रमाणीकरण के लिए एक फॉर्म
अगला, आइए उपयोगकर्ताओं/विचारों में दृश्य बनाएं।
# ... आयात
हमें इन दोनों विचारों के लिए टेम्प्लेट की भी आवश्यकता होगी। आइए पहले MFA टेम्पलेट जोड़ें।

nano users/templates/users/mfa.html
इस HTML कोड को टेम्पलेट में जोड़ें
यह बहुत ही आत्म व्याख्यात्मक है। फ़ॉर्म या तो एक कोड या एक खाली कोड भेजता है, और यदि हम एक खाली कोड प्राप्त करते हैं, तो आप कोड भेजते हैं, आप उस दृश्य में देखेंगे। फिर हमारे पास सिर्फ दो सबमिट बटन हैं, और इस तरह से हम किसी भी बटन के साथ कोड भेज सकते हैं। अगला, हम फ़ोन नंबर जोड़ने के लिए एक सरल फॉर्म जोड़ेंगे।

nano users/templates/users/mfa_onboarding.html
निम्नलिखित HTML जोड़ें:
यह फॉर्म बहुत सरल है, यह हमारे द्वारा बनाए गए फोन नंबर फॉर्म को प्रस्तुत करता है और उपयोगकर्ता को एक फोन नंबर जोड़ने देता है। यह वास्तव में अच्छा लग रहा है! जब तक सब कुछ ठीक से सेट हो जाता है, तब तक हमें संदेश भेजने में सक्षम होना चाहिए, और जैसे ही हम URL पैटर्न जोड़ते हैं, उपयोगकर्ता को उनके फ़ोन नंबर के साथ लॉग इन करते हैं। आखिरी चीज जो हमें सेट करने की आवश्यकता है वह एक प्रोफ़ाइल दृश्य है ताकि हम यह सुनिश्चित कर सकें कि उपयोगकर्ता लॉग इन किए बिना अपना फोन नंबर बदल सकता है। इसके अलावा, आखिरकार, हम "स्टॉप टू क्विट" विकल्प जोड़ना चाहेंगे, इसलिए उपयोगकर्ता पाठ कर सकता है भविष्य के पाठ संदेशों से बाहर निकलने के लिए "स्टॉप"। आइए उपयोगकर्ताओं/दृश्य में एक प्रोफ़ाइल दृश्य जोड़ें। यह दृश्य उपयोगकर्ता के जैव, ईमेल, उपयोगकर्ता नाम और फोन नंबर को अपडेट करेगा, साथ ही हमें मल्टी फैक्टर प्रमाणीकरण को सक्षम करने की अनुमति देगा। सबसे पहले, हमें उपयोगकर्ताओं/रूपों में दो और रूपों की आवश्यकता होगी।
# ... आयात
अगला, हम इन दोनों रूपों का उपयोग करने के लिए एक दृश्य बना सकते हैं। उपयोगकर्ताओं/views.py को संपादित करें और दृश्य में जोड़ें।
# ये आयात जोड़ें
हमें इस दृश्य के लिए एक टेम्पलेट की भी आवश्यकता होगी।

nano users/templates/users/profile.html
आप देखेंगे कि यह एक काफी सरल रूप है, लेकिन इसमें कुछ जावास्क्रिप्ट है जो स्वचालित रूप से फॉर्म की सामग्री को पोस्ट करते हैं क्योंकि वे अपडेट किए जाते हैं। यह उपयोगी है, इसलिए आप हर बार सबमिट करने के बिना संपादन करने में सक्षम हैं। इसके बाद, हमें उपयोगकर्ताओं के URL पटर में इन सभी विचारों का प्रतिनिधित्व करने वाले URL की आवश्यकता है। उपयोगकर्ताओं/urls.py को संपादित करें और इस कोड को जोड़ें:
# … पिछला कोड, आयात
# ... URL पैटर्न जो हमने पहले दर्ज किया था, अगली तीन लाइनें जोड़ें
अब हमारी परियोजना का परीक्षण करने के लिए एक अच्छा समय है। लेकिन पहले, चलो एक और बैकअप चलाते हैं।

backup
और सर्वर चलाएं। इससे पहले कि हम एक लिनक्स सर्वर पर तैनात करें, खाते पर दो कारक प्रमाणीकरण को सक्षम करना एक अच्छा विचार है। हम इसे अपने प्रोफ़ाइल URL,/उपयोगकर्ताओं/प्रोफ़ाइल/में जा रहे हैं, और हमारे फ़ोन नंबर में प्रवेश करने के बाद प्रमाणीकरण को सक्षम करने के लिए बॉक्स की जाँच करेंगे, और फिर फॉर्म सबमिट करेंगे।

python manage.py runserver localhost:8000
अपने वेब ब्राउज़र पर जाकर वेबपेज पर जाएं, मैं इस उदाहरण में Google क्रोम का उपयोग कर रहा हूं, और URL https: // localhost: 8000/खातों/प्रोफ़ाइल/में प्रवेश कर रहा हूं। यदि आवश्यक हो तो आप लॉग इन कर सकेंगे और दो कारक प्रमाणीकरण को सक्षम करें। इस परियोजना को चलाने के लिए एक सर्वर की आवश्यकता होती है ताकि यह वास्तव में मेल भेज सके। लेकिन पहले, हमें त्रुटियों को देखने का एक तरीका चाहिए। आप देखेंगे कि यदि आप सर्वर को डिबग मोड में चलाते हैं, तो सेटिंग्स के साथ। डिबग मोड का उपयोग किए बिना त्रुटियों को दिखाने के लिए, जो एक उत्पादन सर्वर पर असुरक्षित है, हमें इसके लिए एक दृश्य जोड़ना चाहिए। सबसे महत्वपूर्ण त्रुटियां हमें संभालने में सक्षम होने की आवश्यकता है: त्रुटि 500 ​​- हमारे कोड के साथ एक समस्या त्रुटि 404 - एक पृष्ठ जो नहीं मिला (टूटा हुआ URL) त्रुटि 403 - एक अनुमति से वंचित त्रुटि आइए इन त्रुटियों को संभालने के लिए एक नया ऐप जोड़ें, जिन्हें त्रुटियां कहा जाता है।

python manage.py startapp errors
इसे सेटिंग्स में जोड़ें।

handler404 = 'errors.views.handler404'
handler500 = 'errors.views.handler500'
handler403 = 'errors.views.handler403'
यह सब हमें त्रुटि दृश्य, टेम्प्लेट और थोड़ा सा मिडलवेयर के अलावा की आवश्यकता है। चलो उन लोगों को परिभाषित करते हैं:
# यहां अपने विचार बनाएं।
अगला, आइए इन त्रुटियों को संभालने के लिए मिडलवेयर को परिभाषित करें। हम पहले हमारे मिडलवेयर के नाम के साथ, सेटिंग्स में मिडलवेयर_क्लास में जोड़कर ऐसा करेंगे।
    # ... पिछला मिडलवेयर
अगला, चलो मिडलवेयर जोड़ें।

from threading import local
import traceback
from django.utils.deprecation import MiddlewareMixin

_error = local()

class ExceptionVerboseMiddleware(MiddlewareMixin):
    def process_exception(self, request, exception):
        _error.value = traceback.format_exc()

def get_current_exception():
    try:
        return _error.value
    except AttributeError:
        return None

def set_current_exception(exception):
    try:
        _error.value = exception
    except AttributeError:
        print('Attribute error setting exception.')
हम एक थ्रेडिंग स्थानीय का उपयोग करके वर्तमान अपवाद प्राप्त करने के लिए एक फ़ंक्शन जोड़ते हैं, जो हमें अपने कोड में किसी भी त्रुटि का पता लगाने में मदद करता है। टेम्प्लेट के संदर्भ में, हमें केवल एक की आवश्यकता है, क्योंकि हम गतिशील रूप से शीर्षक को दृश्य में परिभाषित करते हैं। टेम्पलेट को केवल शीर्षक और "ट्रेस", हमारी त्रुटि ट्रेसबैक को संदर्भ से प्रस्तुत करने की आवश्यकता है।

nano errors/templates/errors/error.html
यह अभी तक हमारा सबसे सरल टेम्पलेट है, लेकिन यह है कि हमारी परियोजना में त्रुटियों को देखना कितना आसान है। अगला, आइए सेटिंग्स में डिबग को अक्षम करें।

nano app/settings.py
इस पंक्ति को खोजें जहां यह सही है, और इसे झूठे में बदल दें

DEBUG = False
आगे बढ़ें और अब ऐप का बैकअप लें। हम एक रिमोट लिनक्स सर्वर पर तैनात करने के लिए तैयार हैं, और वहां से सुविधाएँ जोड़ते रहते हैं।

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

nano users/models.py
यह वही है जो हम जो मॉडल जोड़ रहे हैं वह जैसा दिखना चाहिए। हमें किसी भी तरीके की आवश्यकता नहीं है, बस एक आईडी, उपयोगकर्ता, टाइमस्टैम्प, समाप्ति, लंबाई और किसी भी बहु कारक प्रमाणीकरण के खिलाफ प्रयासों को संग्रहीत करने के लिए चर (फोन या ईमेल पर भेजे गए 123456 जैसा कोड)।
# एक बुनियादी टोकन वेबसाइट पर लॉग इन करने के लिए उपयोग किया जाता है
आइए अपने उपयोगकर्ता के लिए एक विशेषाधिकार भी जोड़ें, और हम इसे मैन्युअल रूप से अभी के लिए सेट करेंगे, अंततः विशेष रूप से विशेषाधिकार प्राप्त उपयोगकर्ताओं को स्वचालित रूप से सूचीबद्ध करने के लिए माइग्रेट करने से पहले। उपयोगकर्ता मॉडल में, इस लाइन को प्रोफ़ाइल में जोड़ें:

    vendor = models.BooleanField(default=False)
डेटाबेस में किसी भी परिवर्तन के साथ, हमें माइग्रेशन करने और डेटाबेस को माइग्रेट करने की आवश्यकता है, जब भी हम Django में एक मॉडल को संपादित करते हैं। याद रखें, ऐसा करने के लिए हम पहले स्रोत का उपयोग करते हैं (यदि यह पहले से ही उपयोग नहीं किया गया है क्योंकि टर्मिनल खुला था) और फिर पायथन को प्रबंधित करने के लिए।
cd project-directory-you-named # (यदि ज़रूरत हो तो)
अभी के लिए, आप शेल का उपयोग करके आपके द्वारा बनाए गए किसी भी खाते को विक्रेताओं के रूप में सूचीबद्ध कर सकते हैं।

python manage.py shell
from users.models import Profile
p = Profile.objects.get(user__username='Charlotte')
p.vendor = True
p.save()
exit()
अब, आइए इस टोकन का उपयोग करने के लिए हमारे बहु कारक प्रमाणीकरण दृश्य को विकसित करें। सबसे पहले, हमें अपने MFA सहायक उपयोगिताओं को संशोधित करने की आवश्यकता है। नैनो का उपयोग करना,

nano users/mfa.py

from django.utils import timezone
import random
import datetime
from django.conf import settings
from feed.middleware import get_current_request
from django.contrib import messages
from .email import send_html_email
import traceback
from .models import MFAToken

account_sid = settings.TWILIO_ACCOUNT_SID
auth_token = settings.TWILIO_AUTH_TOKEN
source_phone = settings.PHONE_NUMBER

def send_text(target_phone, text):
    from twilio.rest import Client
    try:
        client = Client(account_sid, auth_token)
        if len(target_phone) >= 11:
            message = client.messages.create(
                to=target_phone,
                from_=source_phone,
                body=text + ' Text STOP to cancel.')
    except:
        messages.warning(get_current_request(), 'There was an error sending the message.')
        print(traceback.format_exc())

def get_num_length(num, length):
    n = ''
    for x in range(length):
        n = n + str(num)
    return int(n)

def send_verification_text(user, token):
    length = user.profile.verification_code_length
    code = random.randint(get_num_length(1, length), get_num_length(9, length));
    token.token = code
    token.expires = timezone.now() + datetime.timedelta(minutes=settings.AUTH_VALID_MINUTES)
    token.save()
    send_user_text(user, "Your verification code for {} is {}".format(settings.SITE_NAME, str(code)))

def send_verification_email(user, token):
    length = user.profile.verification_code_length
    code = random.randint(get_num_length(1, length), get_num_length(9, length));
    token.token = code
    token.expires = timezone.now() + datetime.timedelta(minutes=settings.AUTH_VALID_MINUTES)
    token.save()
    send_html_email(user, "Your verification code for {} is {}".format(settings.SITE_NAME, str(code)), "<p>Dear {},</p><p>Your verification code for {} is {}. Thank you for using this code to secure your account.</p><h2>{}</h2><p>Sincerely, {}</p>".format(user.profile.name, settings.SITE_NAME, str(code), str(code), settings.SITE_NAME))

def send_user_text(user, text):
    send_text(user.profile.phone_number, text)

def check_verification_code(user, token, code):
    token.attempts = token.attempts + 1
    profile = user.profile
    result = (token != None and code != '' and token.token == code and (token.expires > timezone.now()) and token.attempts <= settings.MFA_TOKEN_ATTEMPTS)
    if token.attempts < 3 and result:
        profile.verification_code_length = 6
    elif token.attempts > 1 and not result:
        profile.verification_code_length = profile.verification_code_length + 2
        if profile.verification_code_length > settings.MFA_TOKEN_LENGTH: profile.verification_code_length = settings.MFA_TOKEN_LENGTH
    token.save()
    profile.save()
    return result
# अपने ईमेल या फोन नंबर का उपयोग करके उपयोगकर्ता को प्रमाणित करें
    token = MFAToken.objects.filter(uid=username, expires__gt=timezone.now() + datetime.timedelta(seconds=30)).order_by('-timestamp').last() # URL में पारित मान द्वारा टोकन को फ़िल्टर करें (एक UUID)
    if not token: token = MFAToken.objects.create(user=User.objects.filter(profile__uuid=username).first(), uid=username, expires=timezone.now() + datetime.timedelta(seconds=115)) # यदि यह सत्र नहीं बनाया गया है, तो इसे बनाएं
    user = User.objects.filter(id=token.user.id).first() # टोकन से उपयोगकर्ता प्राप्त करें
    if not user and request.user.is_authenticated: return redirect(reverse('feed:home')) # यदि वे पहले से ही प्रमाणित हैं, तो उन्हें लॉग इन करें
    if not user: raise PermissionDenied() # इनकार अगर कोई उपयोगकर्ता नहीं मिला था
    if not user.profile.enable_two_factor_authentication and user.is_active and user.profile.check_auth_token(usertoken, token): # प्रामाणिक टोकन की जाँच करें
        auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # यदि वे पहले से लॉग इन नहीं हैं, तो उपयोगकर्ता में लॉग इन करें
        user.profile.mfa_expires = timezone.now() + datetime.timedelta(minutes=settings.LOGIN_VALID_MINUTES) # उनके बहु कारक प्रमाणीकरण पर एक समाप्ति निर्धारित करें
        return HttpResponseRedirect(next if next != '' else reverse('landing:landing')) # उपयोगकर्ता को अगले पृष्ठ पर पुनर्निर्देशित करें
    if not user.profile.mfa_enabled: # जाँच करें कि क्या MFA सक्षम है
        if not check_verification_time(user, token): # समय की जाँच करें
            user.profile.mfa_enabled = False # फ़ोन नंबर साफ़ करें
            user.profile.enable_two_factor_authentication = True # MFA सक्षम करें
            user.profile.phone_number = '+1' # फ़ोन नंबर अक्षम करें
            user.profile.save() # प्रोफ़ाइल सहेजें
            auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # यदि उनका MFA सक्षम नहीं है, तो उपयोगकर्ता को लॉग इन करें
    if request.method == 'POST' and not fraud_detect(request, True): # यदि अनुरोध एक पोस्ट अनुरोध है
        form = TfaForm(request.POST) # फॉर्म को त्वरित करें
        code = str(form.data.get('code', None)) # कोड प्राप्त करें
        if code and code != '' and code != None: # सुनिश्चित करें कि यह खाली नहीं है
            token_validated = user.profile.check_auth_token(usertoken) # प्रामाणिक टोकन की जाँच करें
            is_verified = check_verification_code(user, token, code) # कोड की जाँच करें
            if token_validated: # अगर सब कुछ
                if is_verified: # क्रम में है
                    user.profile.mfa_enabled = True # MFA सक्षम करें (यदि पहले से सक्षम नहीं है)
                    auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # उपयोगकर्ता में लॉग इन करें
                    for key, value in request.GET.items(): # अगले पैरामीटर के लिए एक querystring का निर्माण करें (यदि कोई हो)
                        return HttpResponseRedirect(next) # पुनर्निर्देशन
            elif not token_validated: # यदि टोकन अमान्य था
            if p.mfa_attempts > 3: # अगर बहुत सारे प्रयास थे
            if form.data.get('send_email', False): # ईमेल (या पाठ) भेजें
    # फॉर्म को प्रस्तुत करें (अनुरोध प्राप्त करने के लिए)
जब हम इस कोड में जोड़ रहे हैं, तो ईमेल भेजने के लिए फ़ंक्शन को आयात करना सुनिश्चित करें। फ़ाइल के शीर्ष पर, उपयोगकर्ता दृश्य (अन्य आयात के साथ), जोड़ें

from .mfa import send_verification_email as send_mfa_verification_email
अब, हमें उस फ़ंक्शन को लिखने की आवश्यकता है, इससे पहले कि कोई भी काम करेगा। यह हमारे भेजें ईमेल फ़ंक्शन का विस्तार करना चाहिए, और बस सत्यापन कोड के साथ उपयोगकर्ता को एक ईमेल भेजें।

nano users/mfa.py

def send_verification_email(user, token):
    length = user.profile.verification_code_length
    code = random.randint(get_num_length(1, length), get_num_length(9, length));
    token.token = code
    token.expires = timezone.now() + datetime.timedelta(minutes=settings.AUTH_VALID_MINUTES)
    token.save()
    send_html_email(user, "Your verification code for {} is {}".format(settings.SITE_NAME, str(code)), "<p>Dear {},</p><p>Your verification code for {} is {}. Thank you for using this code to secure your account.</p><h2>{}</h2><p>Sincerely, {}</p>".format(user.profile.name, settings.SITE_NAME, str(code), str(code), settings.SITE_NAME))
इसलिए यह सब बहुत अच्छा काम करता है, अब हमारे पास एक मल्टी फैक्टर ऑथेंटिकेशन सिस्टम है जो लॉग इन करने के लिए एक फोन नंबर या ईमेल पर निर्भर करता है। लेकिन हमें उन उपयोगकर्ताओं को हटाने, या कम से कम उन उपयोगकर्ताओं को छिपाने की भी आवश्यकता है जो हमारी शर्तों के साथ सहयोग नहीं कर रहे हैं। ये स्पैमर, रोबोट या कोई भी हो सकता है जो हमारे काम के लिए अच्छी तरह से मतलब नहीं है। मेरी वेबसाइट पर उपयोगकर्ताओं की निगरानी के लिए मेरे पास एक दृश्य देखें:
# आयात
from .tests import is_superuser_or_vendor # हमें यह परीक्षण बनाने की आवश्यकता होगी
    # उपयोगकर्ताओं की सूची प्राप्त करें
    return render(request, 'users/users.html', { # एक टेम्पलेट में उपयोगकर्ताओं को लौटाएं
ध्यान दें कि यह कोड एक परीक्षण का उपयोग करता है, हमें इस परीक्षण को एक test.py फ़ाइल में घोषित करना होगा और इसे आयात करना होगा। उपयोगकर्ताओं/tests.py का संपादन, चलो परीक्षण बनाते हैं।

def is_superuser_or_vendor(user):
    return user.profile.vendor or user.is_superuser
यह उपयोगकर्ताओं/उपयोगकर्ताओं के साथ मिलकर है। HTML टेम्पलेट, जो कुछ इस तरह दिखता है:
ध्यान दें कि टेम्पलेट में एक और टेम्पलेट, उपयोगकर्ता/_user.html शामिल हैं। एक टेम्पलेट का उपयोग करते समय जिसमें एक सबटेम्प्लेट होता है और इसका उपयोग नहीं करता है, यह विस्तार करने के लिए फ़ाइल के नाम से पहले एक अंडरस्कोर (_) जोड़ने के लिए एक अच्छा विचार है, ताकि टेम्प्लेट को अलग किया जा सके। ध्यान दें कि यह बहुत अधिक जिंजा है, आपके पास इन सभी चर को परिभाषित नहीं हो सकता है। लेकिन यह मेरा कोड जैसा दिखता है।
      <small># {{user.id}} </small>
हमें एक और सबटेम्प्लेट की भी आवश्यकता है, togle_active.html। यह टेम्पलेट एक ऐसा रूप होना चाहिए जो हमें टॉगल करने की अनुमति देता है कि क्या कोई उपयोगकर्ता सक्रिय है।
हमें उपयोगकर्ता गतिविधि, और उचित URL पैटर्न को टॉगल करने के लिए एक दृश्य जोड़ने की आवश्यकता होगी। जब हम इस पर होते हैं, तो आइए किसी उपयोगकर्ता को हटाने के लिए एक दृश्य जोड़ें यदि हमें इसकी आवश्यकता है।
# आयात
    success_url = '/' # सफलता URL पर पुनर्निर्देशित
    def test_func(self): # परीक्षण करें कि यदि उपयोगकर्ता सुपरयूज़र है और उसे हटाने की अनुमति है
हालांकि यह आवश्यक होने पर व्यावहारिक है, उपयोगकर्ता को हटाना ज्यादातर समय आवश्यक नहीं होना चाहिए, हम केवल उन उपयोगकर्ताओं की दृश्यता को टॉगल कर सकते हैं जो साइट पर जाते हैं यदि हमें उन्हें खारिज करने की आवश्यकता है। URL पैटर्न जो हमने जोड़े जो इस तरह दिखते हैं। नैनो के साथ, उपयोगकर्ताओं/urls.py को संपादित करें और इन पंक्तियों को जोड़ें:

nano users/urls.py
लाइनों को उपयोगकर्ता के विचारों में पथों की सूची में जाना चाहिए, समाप्त होने से पहले "] लेकिन शुरुआत के बाद" ["।
# …
# …
अब, साइट का बैकअप लेना सुनिश्चित करें ताकि आप इसे वेब सर्वर पर डाउनलोड कर सकें, जिस पर हम काम करना जारी रखेंगे। कमांड लाइन से,

sudo backup
अब हमारी साइट का समर्थन किया गया है। इसलिए अब हमारे पास कुछ और उपयोगी विशेषताएं हैं। लेकिन यहाँ बड़ी तस्वीर के बारे में क्या? यह कोड अभी भी इंटरनेट से सुलभ नहीं है, हमारे पास अभी तक कोई मेल सर्वर नहीं है, और हमें अपने ऐप का विस्तार करने की आवश्यकता है, जिसमें व्यापक सत्यापन प्रक्रिया को शामिल करने के लिए अपने ऐप का विस्तार करने की आवश्यकता है, जिससे हमें साइट का पता लगाने में मदद मिल सके, साथ ही विशेषाधिकार प्राप्त उपयोगकर्ताओं को प्रमाणित करने के लिए सुरक्षित प्रोटोकॉल के साथ । हम यह सब प्राप्त करेंगे। अब के लिए सबसे महत्वपूर्ण बात सिर्फ इस कोड को ऑनलाइन प्राप्त कर रही होगी, जिसे हम एक उबंटू सर्वर पर बैश की कुछ पंक्तियों के साथ कर सकते हैं। हालांकि आपको इसके लिए एक सर्वर किराए पर लेना होगा, जब तक कि आपके पास घर पर एक सर्वर और एक व्यावसायिक इंटरनेट सदस्यता नहीं है जो आपको पोर्ट खोलने की अनुमति देता है। मैं व्यक्तिगत रूप से अपनी वेबसाइट को एक HP Z440 पर चलाता हूं जो मेरे अपार्टमेंट में स्थापित है, लेकिन यह आमतौर पर एक वर्चुअल प्राइवेट सर्वर (VPS) को किराए पर लेने के लिए बुनियादी आवश्यकताओं के लिए बहुत सस्ता है। ध्यान रखें कि अब हम जिस कोड को चला रहे हैं वह अपेक्षाकृत पतली है, इसे बनाए रखने और बेहतर होने से पहले इसे बेहतर बनाने की आवश्यकता होगीएक उत्पाद बनाने के लिए हमें क्या उपयोग करने के लिए तैयार है। सावधान रहें कि आप इंटरनेट के साथ क्या करते हैं, सुनिश्चित करें कि यदि आप इस साइट को सार्वजनिक रूप से एक लिनक्स सर्वर पर वेब पर तैनात करते हैं, तो आपके पास अपनी वेबसाइट के साथ अवांछित इंटरैक्शन को ब्लॉक करने की योजना है। यह संभावना पहली बार में एक समस्या नहीं होगी, लेकिन हम मशीन लर्निंग, आर्टिफिशियल इंटेलिजेंस और कंप्यूटर विजन सहित इस से निपटने के लिए विभिन्न प्रकार के समाधानों पर गौर करेंगे। जब यह एक समस्या बन जाती है, तो समाधान के लिए इस पाठ में आगे देखें। वीपीएस किराए पर लेने के संदर्भ में, बहुत सारे स्थान हैं जो आप जा सकते हैं। Google क्लाउड में VPS सर्वर, Ionos, Kamatera, Amazon AWS हैं, और अधिक प्रदाता क्लाउड सर्वर समाधान प्रदान करते हैं जो हमारी आवश्यकताओं के अनुरूप होंगे। आपको उनके फॉर्म के माध्यम से क्लिक करना होगा और आरंभ करने के लिए एक योजना का चयन करना होगा। आप किसी भी प्रदाता के साथ एक बुनियादी योजना के साथ जा सकते हैं, लेकिन सुनिश्चित करें कि प्रदाता आपको ईमेल भेजने के लिए पोर्ट मेल सर्वर पोर्ट खोलने की अनुमति देता है (यह पोर्ट 587 और पोर्ट 25 होना चाहिए), कुछ प्रदाता इन पोर्ट को ब्लॉक करते हैं। अब तक मेरे पास हैआयनोस और कामेटेरा के साथ ईएसटी अनुभव, दोनों मुझे असीमित ईमेल भेजने की अनुमति देंगे और उनका मूल्य निर्धारण बहुत सस्ता है। आप SSH या SECURE SHELL नामक एक प्रोटोकॉल पर अपने नए सर्वर से कनेक्ट करेंगे, जो आपको अपने व्यक्तिगत कंप्यूटर से, अपने व्यक्तिगत कंप्यूटर की तरह सर्वर के साथ दूर से इंटरफ़ेस करने की अनुमति देता है। जब आप सर्वर सेट करते हैं, तो होस्टिंग प्रदाता आपको एक SSH कुंजी जोड़ने के लिए कहने जा रहा है, या वे आपको एक उपयोगकर्ता नाम और पासवर्ड देंगे। SSH कुंजी यह है कि आप कोड को संपादित करने के लिए कमांड लाइन से सर्वर पर कैसे लॉग इन करेंगे। SSH उत्पन्न करने के लिए नीचे SSH-KEYGEN विकल्प का उपयोग करें

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

cat ~/.ssh/id_rsa.pub
यदि आप उस कमांड को टाइप करते समय एक SSH कुंजी देखने में सक्षम नहीं थे ("ssh-rsa aaa" के साथ शुरू होने वाले अंकों और पत्रों की एक लंबी स्ट्रिंग और पत्र), एक RSA कुंजी उत्पन्न करने का प्रयास करें (वे अधिक सुरक्षित हैं, इसलिए मैं उन्हें उपयोग करने की सलाह देता हूं ।) निम्नलिखित कोड 4096 बिट RSA SSH कुंजी उत्पन्न करेगा।

ssh-keygen -t rsa -b 4096
Ubuntu चलाने वाला एक VPS बनाएँ, हालांकि आप ऐसा करने की योजना बना रहे हैं। एक बार जब आप प्रदाताओं की वेबसाइट (kamatera.com, ionos.com या इसी तरह) पर प्रपत्रों के माध्यम से क्लिक करके एक VPS बना लेते हैं, तो आप लॉग इन करना चाहते हैं। ऐसा करने के लिए, अपने IP पते (पता (पता (पता) के साथ SSH कमांड का उपयोग करें यह xx.xx.xx.xx की तरह दिखता है)। आपको हमारे द्वारा बनाए गए सर्वर पर डिफ़ॉल्ट उपयोगकर्ता नाम के प्रति संवेदनशील होने की आवश्यकता होगी, उदाहरण के लिए, उबंटू।

ssh ubuntu@XX.XX.XX.XX
आपसे एक पासवर्ड के लिए कहा जा सकता है, यदि आपसे पासवर्ड के लिए कहा जाता है, तो इसे दर्ज करें। हम डिफ़ॉल्ट उपयोगकर्ता नाम का उपयोग नहीं करेंगे, इसलिए आइए एक नया उपयोगकर्ता बनाकर और उनके खाते में एक SSH कुंजी जोड़कर शुरू करें। आइए एक नई SSHD_CONFIG फ़ाइल जोड़कर शुरू करें, जो सर्वर को बताता है कि SSH का उपयोग कैसे करें।

nano sshd_config
# यह SSHD सर्वर सिस्टम-वाइड कॉन्फ़िगरेशन फ़ाइल है।  देखना
# अधिक जानकारी के लिए sshd_config (5)।
# यह SSHD path =/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/गेम के साथ संकलित किया गया था
# डिफ़ॉल्ट SSHD_CONFIG में विकल्पों के लिए उपयोग की जाने वाली रणनीति के साथ भेज दिया गया
# OpenSSH अपने डिफ़ॉल्ट मान के साथ विकल्पों को निर्दिष्ट करना है जहां
# संभव है, लेकिन उन्हें छोड़ दो टिप्पणी की।  असंबद्ध विकल्प ओवरराइड करते हैं
# डिफ़ॉल्ट मान।
# पोर्ट 22
# पता
# LEOSEDDRESS 0.0.0.0
# LeoSaddress ::
# Hostkey/etc/ssh/ssh_host_rsa_key
# Hostkey/etc/ssh/ssh_host_ecdsa_key
# Hostkey/etc/ssh/ssh_host_ed25519_key
# सिफर और कुंजीयन
# Rekeylimit डिफ़ॉल्ट कोई नहीं
# लॉगिंग
# सिसलोगफैसिलिटी प्रामाणिक
# Loglevel जानकारी
# प्रमाणीकरण:
# Logingracetime 2m
# परमिट्रोटलोगिन निषेध-पत्रकार
# सख्ती
# Maxauthtries 6
# अधिकतम 10
# भविष्य में डिफ़ॉल्ट रूप से अवहेलना करने के लिए .ssh/अधिकृत_केस 2 की अपेक्षा करें।
# अधिकृत
# अधिकृत नहीं
# अधिकृत
# इसके लिए काम करने के लिए आपको/etc/ssh/ssh_nokn_hosts में होस्ट कीज़ की भी आवश्यकता होगी
# HostBasedAuthentication नहीं
# यदि आप पर भरोसा नहीं करते हैं तो हां में बदलें ~/.ssh/got_hosts
# Hostbasedauthentication
# अनदेखी
# उपयोगकर्ता के ~/.rhosts और ~/.shosts फ़ाइलों को न पढ़ें
# अज्ञानी हाँ
# स्पष्ट पाठ पासवर्ड को अक्षम करने के लिए, यहां नहीं बदलें!
# Parmitemptypasswords नहीं
# चुनौती-प्रतिक्रिया पासवर्ड को सक्षम करने के लिए हां में बदलें (के साथ सावधान मुद्दे)
# कुछ पाम मॉड्यूल और धागे)
# केर्बरोस विकल्प
# Kerberosauthentication नहीं
# Kerberosorlocalpasswd हाँ
# Kerberosticketcleanup हाँ
# Kerberosgetafstoken नहीं
# GSSAPI विकल्प
# Gssapiauthentication नहीं
# Gssapicleanupcredentials हाँ
# Gssapistrictacceptorcheck हाँ
# Gssapikeyexchange नहीं
# PAM प्रमाणीकरण, खाता प्रसंस्करण को सक्षम करने के लिए इसे 'हां' पर सेट करें,
# और सत्र प्रसंस्करण। यदि यह सक्षम है, तो PAM प्रमाणीकरण होगा
# kbdinteractiveauthentication और के माध्यम से अनुमति दी जाए
# PasswordAuthentication।  आपके PAM कॉन्फ़िगरेशन के आधार पर,
# KBDInteractiveAuthentication के माध्यम से PAM प्रमाणीकरण बाईपास हो सकता है
# "परमिट्रोटलोगिन के बिना-पैसवर्ड" की सेटिंग।
# यदि आप बस पाम खाता चाहते हैं और सत्र चेक बिना चलाने के लिए
# PAM प्रमाणीकरण, फिर इसे सक्षम करें लेकिन पासवर्ड सेट करें
# और kbdinteractiveauthentication 'नहीं'।
# Yellagentforverving YES
# Allowtcpforverving YES
# गेटवेपोर्ट्स नहीं
# X11DISPLAYOFFSET 10
# X11uselocalhost हाँ
# परमिट्टी हाँ
# PrintLastLog हाँ
# Tcpkeepalive हाँ
# Permituserenvironment no
# संपीड़न विलंब
# ClientaliveInterval 0
# ClientaliveCountMax 3
# इस्तेमाल नहीं किया
# Pidfile /run/sshd.pid
# मैक्सस्टार्टअप 10: 30: 100
# Permittunnel नहीं
# Chrootdirectory कोई नहीं
# Versionaddendum कोई नहीं
# कोई डिफ़ॉल्ट बैनर पथ नहीं
# क्लाइंट को लोकेल पर्यावरण चर पास करने की अनुमति दें
# कोई सबसिस्टम का डिफ़ॉल्ट ओवरराइड करें
# प्रति-उपयोगकर्ता आधार पर ओवरराइडिंग सेटिंग्स का उदाहरण
# उपयोगकर्ता anoncvs मैच करें
# X11forwverding नहीं
# Allowtcpforwarding नहीं
# परमिटटी नहीं
# Forcecommand cvs सर्वर
याद रखें, फ़ाइल को बचाने के लिए Ctrl+x और y। इसके बाद, आइए एक मूल स्क्रिप्ट लिखें जिसे इनिशियलाइज़ (हमारे उपयोगकर्ता के डिफ़ॉल्ट होम डायरेक्टरी में सभी) कहा जाता है।

nano initialize
इन लाइनों को फ़ाइल में जोड़ें, प्रतिस्थापित करेंअपने SSH कुंजी के साथ आपको कैट का उपयोग करके मिला। (.ssh/id_rsa.pub)
# !/बिन/बैश
इस फ़ाइल के माध्यम से आपको चलने के लिए, आइए लाइन द्वारा लाइन शुरू करें। पहली पंक्ति कंपाइलर को बताती है कि यह एक बैश स्क्रिप्ट है। फिर हम निर्भरताएं स्थापित कर रहे हैं, सही निर्देशिका में sshd_config की नकल कर रहे हैं, SSH को पुनरारंभ कर रहे हैं, रूट के लिए SSH कुंजी उत्पन्न कर रहे हैं, उपयोगकर्ता 'टीम' को जोड़ते हैं (आप इसके लिए एक नाम चुन सकते हैं, अपने नाम और अक्षम पासवर्ड के साथ Adduser कमांड का उपयोग करें और पासवर्ड का उपयोग करें। अब)। हम SUDO समूह में टीम भी जोड़ते हैं, उनकी SSH कुंजी उत्पन्न करते हैं, अधिकृत कुंजियों और उनके साथ -साथ हमारी कुंजी जोड़ते हैं, और उनकी कुंजी को भी प्रिंट करते हैं। यह नया उपयोगकर्ता यह होगा कि हम साइट में कैसे लॉग इन करते हैं। एक नए टर्मिनल में, आगे बढ़ें और फिर से सर्वर खोलें।

ssh team@XX.XX.XX.XX
आपको इस बार एक पासवर्ड की आवश्यकता नहीं होनी चाहिए, जैसा कि आपके पास एक SSH कुंजी है। हमने साइट को अधिक सुरक्षित रखने के लिए पासवर्ड के साथ लॉगिन भी अक्षम कर दिया है। अब, यह सर्वर इस पर कोई जानकारी नहीं होने के साथ पूरी तरह से खाली हो जाता है। आइए हम GIT से हमारी परियोजना को क्लोन करके शुरू करें ताकि हम इसे दूरस्थ मशीन पर डाउनलोड और चला सकें। SSH से जुड़े दूरस्थ सर्वर पर, पहले अपने SSH कुंजी प्रिंट करें:

cat ~/.ssh/id_rsa.pub
इसके बाद, इस कुंजी को Git सेटिंग्स में पेस्ट करें जैसे हमने पहले किया था कि हम अपने Git रिपॉजिटरी को सेट करें। अब हम अपनी परियोजना को सीधे सर्वर पर क्लोन कर सकते हैं। सुनिश्चित करें कि आपने स्थानीय रूप से पहले प्रोजेक्ट का बैकअप लिया है, इसलिए यह डाउनलोड करने के लिए Git सर्वर पर है।

git clone git://github.com/you/yourproject.git
उत्तम। अब सभी फाइलें यहाँ हैं। हम उन्हें एलएस के साथ देख सकते हैं

ls
अब, आइए सर्वर सेट करना शुरू करें। सबसे पहले, अपनी परियोजना निर्देशिका को एक सरल, यादगार नाम में कॉपी करें जिसे हम परियोजना के लिए उपयोग करेंगे।

cp -r yourproject whatyoucalledit
जहां "WhateouCaldEdit" आपके प्रोजेक्ट का नया नाम है। अगला, हमें सर्वर को सेट करने के लिए एक बुनियादी उपयोगिता का निर्माण करना होगा। हम इस उपयोगिता को बचाएंगे और भविष्य में इसका उपयोग करेंगे। इस उपयोगिता का निर्माण करने के लिए, आइए एक उपयोगकर्ता बाइनरी बनाएं ताकि हम एक स्क्रिप्ट को संपादित करें। बैश का उपयोग करना, संपादित करें/usr/bin/ascript

sudo nano /usr/bin/ascript
वहां सूडो का उपयोग करना सुनिश्चित करें ताकि आपके पास फ़ाइल को संपादित करने की अनुमति हो। फ़ाइल में, इन पंक्तियों को जोड़ें:
# !/बिन/बैश
    echo "# /बिन/बैश ">>/usr/बिन/$ 1
याद रखें कि यह स्क्रिप्ट एक तर्क, स्क्रिप्ट नाम, $ 1 के रूप में लेता है। पहले यह जांचता है कि क्या फ़ाइल मौजूद है, या अन्यथा इसे बनाता है, स्क्रिप्ट को घोषित करने के लिए पहली पंक्ति जोड़ता है, बैश है, इसकी अनुमति बदल देता है, इसे संपादित करता है, और इसके नाम को /etc /ascripts में जोड़ता है जो हमें स्क्रिप्ट के नामों को संग्रहीत करने देता है। बना रहे हैं। यदि फ़ाइल पहले से मौजूद है, तो बस अनुमतियाँ बदलें और इसे संपादित करें। फ़ाइल को सहेजें, और आगे हम इसे अनुमतियों को बदल देंगे। जब तक हम इस स्क्रिप्ट का उपयोग करते हैं, हमें फिर से ऐसा नहीं करना पड़ेगा।

sudo chmod a+x /usr/bin/ascript
उत्तम। अब सेटअप नामक एक स्क्रिप्ट बनाएं। सबसे पहले, आपको अभिभूत करने के लिए नहीं, लेकिन एक नज़र डालें कि मेरी सेटअप स्क्रिप्ट कैसी दिखती है। हम इस स्क्रिप्ट के माध्यम से चलेंगे कि इस स्क्रिप्ट को आपके प्रोजेक्ट में कैसा दिखना चाहिए, आपको शुरू करने के लिए मेरी स्क्रिप्ट में सब कुछ की आवश्यकता नहीं होगी।
# !/बिन/बैश
# sudo chmod a+x स्क्रिप्ट/usersetup
# ./scripts/usersetup
# ssh-keygen
# परियोजना निर्देशिका
# लॉग कमांड
# नैनो विन्यास
# Git config
# अद्यतन और स्थापित करें
# क्लैमव एंटीवायरस सक्षम करें
# होस्टनाम सेट करें
# सेटअप पोस्टग्रेस
# सेटअप डेटाबेस बैकअप
# Iptables को अक्षम करें
# BitDefender स्थापित करें
# सेटअप पोस्टफिक्स
# DIRS बनाएँ
# Setup rigtherenv
# निर्भरता प्राप्त करें और निर्माण करें
# फ़ायरवॉल नियम सेट करें
# PYPI निर्भरता स्थापित करें
pip3 install --upgrade opencv-python # == 4.5.4.60
pip3 install --upgrade opencv-contrib-python # == 4.5.4.60
# PIP OPENCV-PYTHON == 4.5.5.64 स्थापित करें
# PIP स्थापित OpenCV-Contrib-Python == 4.5.5.64
# CERTBOT स्थापित करें
# रन सर्टर्बोट
# डाक -सर्वर को पुनः लोड करें
# COPY CERTS
# sudo cp /etc/letsencrypt/live/femmebabe.com/privkey.pem privkey.pem
# sudo cp /etc/letsencrypt/live/femmebabe.com/cert.pem cert.pem
# पैच वेनव
# उपयोगकर्ता सेटिंग्स सेट करें
# अनुमतियाँ सेट करें
# sudo chown -r टीम: उपयोगकर्ता/var/run/
# SUDO CHOWN ROOT: रूट/रन/SUDO/TS -R
# SUDO CHMOD 664 DB.SQLITE3
# sudo chown www-data: उपयोगकर्ता db.sqlite3
# कॉपी कॉन्फ़िगरेशन और अनुमतियाँ सेट करें
# सेटअप डेटाबेस
# पाम कॉन्फ़िगरेशन इंजेक्ट करें और दोषपूर्ण SSH कॉन्फ़िगरेशन निकालें
# sudo sed -i '' -e '$ d' /etc/pam.d/sshd
# sudo sed -i '' -e '$ d' /etc /प्रोफ़ाइल
# बिन स्क्रिप्ट कॉपी करें और अनुमतियाँ सेट करें
# सेवाओं को पुनः लोड और सक्षम करें
# Apache मॉड्यूल सक्षम करें
# sudo a2dismod mpm_event
# sudo a2dismod mpm_worker
# sudo a2enmod mpm_prefork
# डिफ़ॉल्ट साइट अक्षम करें
# हमारी साइट सक्षम करें
# डेमॉन को पुनः लोड करें और अपाचे, पोस्टफिक्स और ओपेंडकिम को पुनरारंभ करें
# अनुमतियाँ सेट करें
# स्वैप कॉन्फ़िगरेशन
# आतिन कैप्शन इंजन
# सेटअप गिट
# डोमेन कॉन्फ़िगरेशन के लिए IPv6 और opendkim दिखाएं
# सेटअप पूरा हुआ
यह बहुत सेटअप है! संक्षेप में, यह कोड कमांड को लॉग करता है, नैनो और गिट को कॉन्फ़िगर करता है, फ़ाइलों पर प्रतियां, डाउनलोड करता है और उबंटू एप्ट पैकेज, पायथन निर्भरताएं, पोस्टफिक्स को कॉन्फ़िगर करता है, पोस्टग्रेसक्यूएल (डेटाबेस सर्वर) को कॉन्फ़िगर करता है और डेटाबेस को लोड करता है, यूएफडब्ल्यू (एक अपूर्ण फ़ायरवॉल) कॉन्फ़िगर करता है, Iptables को अक्षम करता है, एक एंटीवायरस डाउनलोड करता है, निर्देशिका, क्लोन निर्भरता बनाता है, प्रमाण पत्र स्थापित करता है और सेट करता है सर्वर, कॉन्फ़िगरेशन इंस्टॉल करता है, शुरू करता है और सक्षम करता है, स्वैप आवंटित करता है, अनुमतियाँ सेट करता है, और आईपी, आईपीवी 6 पते और opendkim कुंजी को प्रिंट करता है। काफी सरल, लेकिन यह बहुत सारे कोड की तरह दिखता है। हमें इसकी बहुत आवश्यकता नहीं होगी क्योंकि हमारे पास निर्भरता नहीं है, हम अजवाइन, अजवाइन या डैफने का उपयोग नहीं कर रहे हैं, लेकिन हम उनमें से कुछ को शुरू करने के लिए वैसे भी स्थापित करेंगे। ध्यान दें कि इस कोड में कई बार घोषित एक डोमेन है। हमें एक डोमेन नाम (जो एक छोटा सा वार्षिक शुल्क है) भी खरीदना होगा। मैं एक डोमेन खरीदने के लिए स्क्वायरस्पेस की सलाह देता हूं, उनका लेआउट हैसहज और उपयोग करने में आसान। आप अपनी पसंद का कोई भी डोमेन खरीद सकते हैं, लेकिन मैं इस उदाहरण में डोमेन FemMebabe.com का उपयोग कर रहा हूं। एक बार जब आप एक डोमेन खरीद लेते हैं, तो स्क्वायरस्पेस डीएनएस कॉन्फ़िगरेशन पैनल पर जाएं और आईपी पते द्वारा सर्वर में अपने डोमेन को इंगित करने वाला एक रिकॉर्ड जोड़ें। इसे ऐसा दिखना चाहिए: @ A xx.xx.xx.xx होस्ट के रूप में @ ऑपरेटर के साथ, इस डोमेन और रूट डोमेन के तहत सभी उप -डोमेन का अर्थ है सभी सर्वर पर पुनर्निर्देशित करेंगे। घोषित करने के लिए और भी रिकॉर्ड हैं, लेकिन मेल भेजने के लिए तैयार होने के बाद हम इन पर आगे बढ़ सकते हैं। ध्यान रखें, सर्वर से सफलतापूर्वक मेल भेजने में सक्षम होने से पहले कई दिन लग सकते हैं। हम जो DNS रिकॉर्ड सेट कर रहे हैं, वह प्रचार करने में समय लगेगा। वैसे भी, हमें शुरू करने के लिए एकमात्र रिकॉर्ड एक रिकॉर्ड है। इसलिए अब हम अपनी परियोजना के अनुसार नीचे की स्क्रिप्ट भर सकते हैं और इसे चला सकते हैं। आइए एक छोटी सेटअप स्क्रिप्ट के साथ शुरू करें, बस एक बुनियादी प्रगति के लिए हमें क्या चाहिए। हम अभी तक बहुत सारी निर्भरता या Postgresql का उपयोग नहीं करेंगे, हम अभी करेंगेएक बुनियादी HTTP सर्वर और जब यह किया जाता है तो इसे प्रमाणित करने के बारे में चिंता करें। याद रखें, एक HTTPS प्रमाणपत्र प्राप्त करने और सर्वर को सुरक्षित रूप से चलाने के लिए, हमें एक सर्वर किराए के साथ एक डोमेन खरीदना होगा। अभी के लिए, इस फ़ाइल में "टीम" को अपने उपयोगकर्ता के नाम से बदलें, "dir" अपनी परियोजना की निर्देशिका के साथ, और <> टैग में अपने ईमेल और डोमेन की आपूर्ति करें। इसके अतिरिक्त, इससे पहले कि हम इस कोड को चलाते हैं, हमें होस्टिंग प्रदाता को फायरवॉल में सेटिंग्स को बदलने की आवश्यकता है, यदि कोई हो। आमतौर पर यह आपके होस्टिंग प्रदाता के 'नेटवर्क' टैब में होता है, या यदि आप स्वयं होस्टिंग कर रहे हैं, तो अपने राउटर के 'पोर्ट फ़ॉरवर्डिंग' अनुभाग में। यदि आप सेल्फ होस्टिंग का उपयोग कर रहे हैं, तो आप अपने सर्वर मशीन के पते के साथ अपने राउटर के माध्यम से एक स्थिर आईपी भी सेट करना चाहेंगे। आपको रीड/राइट एक्सेस के लिए निम्नलिखित पोर्ट खोलने होंगे। 22 (एसएसएच) 25 (मेल) 587 (मेल) 110 (मेल क्लाइंट) 80 (HTTP) 443
# !/बिन/बैश
# लॉग कमांड
# नैनो विन्यास
# Git config
# अद्यतन और स्थापित करें
# क्लैमव एंटीवायरस सक्षम करें
# होस्टनाम सेट करें
# सेटअप डेटाबेस बैकअप
# Iptables को अक्षम करें
# Setup rigtherenv
# CERTBOT स्थापित करें
# रन सर्टर्बोट
# उपयोगकर्ता सेटिंग्स सेट करें
# अनुमतियाँ सेट करें
# sudo chown -r टीम: उपयोगकर्ता/var/run/
# SUDO CHOWN ROOT: रूट/रन/SUDO/TS -R
# सेवाओं को पुनः लोड और सक्षम करें
# Apache मॉड्यूल सक्षम करें
# डेमॉन को पुनः लोड करें और अपाचे, पोस्टफिक्स और ओपेंडकिम को पुनरारंभ करें
# डोमेन कॉन्फ़िगरेशन के लिए IPv6 और opendkim दिखाएं
इस कोड को चलाने से पहले, सुनिश्चित करें कि आपके द्वारा खरीदा गया डोमेन सर्वर से जुड़ा हुआ है। ऐसा करने के लिए, अपने स्थानीय मशीन पर एक टर्मिनल खोलें, और इस कमांड को अपने डोमेन के साथ चलाएं:
ping femmebabe.com # पिंग के बाद, यहां अपना डोमेन डालें
यदि सभी अच्छी तरह से दिखते हैं और सर्वर प्रतिक्रिया भेज रहा है, तो हम स्क्रिप्ट को चलाने और पैकेज स्थापित करने के साथ -साथ हमारे अपाचे सर्वर को शुरू करने, सक्षम करने और प्रमाणित करने के लिए तैयार हैं। यह पोस्टफिक्स को कॉन्फ़िगर करने के लिए आवश्यक सभी सेटअप नहीं है, हम उस सेटअप को बाद में अधिक देखेंगे। अभी के लिए, इस सेटअप कोड को चलाएं और अपने सर्वर को स्थापित करने और प्रमाणित करने में कुछ मिनट लगने चाहिए। एक बार फिर, आपके द्वारा खरीदे गए नाम के अनुसार स्क्रिप्ट में नाम, ईमेल और डोमेन नाम को बदलना सुनिश्चित करें। अब जब सर्वर का प्रावधान हो गया है, तो आप किसी भी वेब ब्राउज़र में URL पर जा सकते हैं और यह सुनिश्चित करने के लिए जांच कर सकते हैं कि सर्वर HTTPS चला रहा है। यदि यह नहीं है, तो DNS रिकॉर्ड्स को पकड़ने के लिए थोड़ी देर प्रतीक्षा करें और फिर प्रमाणन प्रमाणन को पुनः प्राप्त करने के लिए निम्नलिखित कमांड चलाएं:

sudo certbot --apache --non-interactive --agree-tos --domains <domain>.com --email <youremail>@gmail.com
जब तक आपने सब कुछ सही ढंग से कॉन्फ़िगर किया है, तब तक आपको अपाचे के डिफ़ॉल्ट पृष्ठ तक पहुंचने में सक्षम होना चाहिए ताकि यह जान सकें कि आपका कोड काम कर रहा है और एक लाइव वेबपेज प्रदर्शित कर रहा है। अगला, आइए सेटिंग्स को संपादित करें। हमारे डिफ़ॉल्ट डिबग मोड को उत्पादन में बदलने के लिए। हम सेटिंग्स में डोमेन को भी कॉन्फ़िगर करेंगे, साथ ही आंतरिक आईपी भी।

nano yourproject/settings.py
सेटिंग्स में, इन पंक्तियों को बदलें/जोड़ें।
# साइट विन्यास
अब, हमें Apache2 को कॉन्फ़िगर करना होगा। आइए उस कॉन्फिग फ़ाइल को संपादित करें जिसे हम इस लाइन के साथ तैनात करेंगे:

sudo nano /etc/apache2/sites-available/femmebabe-le-ssl.conf
इस कॉन्फ़िगर फ़ाइल में हमारा डोमेन नाम होना चाहिए, और उपयोगकर्ता और प्रोजेक्ट का नाम। मैं डोमेन नाम FemMebabe.com, उपयोगकर्ता नाम टीम और प्रोजेक्ट नाम FemMebabe का उपयोग कर रहा हूं।

ServerSignature Off
ServerTokens Prod
<IfModule mod_ssl.c>
<VirtualHost *:80> 
	Redirect permanent / https://femmebabe.com/
</VirtualHost>
<VirtualHost *:443>
	ServerName femmebabe.com
	ServerAdmin team@femmebabe.com
	DocumentRoot /var/www/html

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
	
	Alias /static /home/team/femmebabe/static
	<Directory /home/team/femmebabe/static>
		Require all granted
	</Directory>

Alias /media/icons /home/team/femmebabe/media/
<Directory /home/team/femmebabe/media>
Require all granted
</Directory>

	<Directory /home/team/femmebabe/femmebabe>
		<Files wsgi.py>
			Require all granted
		</Files>
	</Directory>

	WSGIScriptAlias / /home/team/femmebabe/femmebabe/wsgi.py
	WSGIDaemonProcess femmebabe python-path=/home/team/femmebabe/ python-home=/home/team/femmebabe/venv header-buffer-size=100000000000 user=team
	WSGIProcessGroup femmebabe
	WSGIApplicationGroup %{GLOBAL}
	
	<Directory /home/team/femmebabe/static>
                Options Indexes FollowSymLinks
                AllowOverride All
	</Directory>

	<IfModule mod_rewrite.c>
		RewriteEngine on
		RewriteCond %{REQUEST_URI} \.(css|webp|webm|gif|png|mp3|wav|jpeg|jpg|svg|webp)$ [NC]
		RewriteCond %{HTTP_REFERER} !^https://femmebabe.com/media/.*$ [NC]
		RewriteRule ^(.+?)/$ /media/$1 [F,L]
	</IfModule>

	Include /etc/letsencrypt/options-ssl-apache.conf
	SSLCertificateFile /etc/letsencrypt/live/femmebabe.com/fullchain.pem
	SSLCertificateKeyFile /etc/letsencrypt/live/femmebabe.com/privkey.pem

	Header set X-Frame-Options: "SAMEORIGIN"
	Header set Access-Control-Allow-Origin "https://femmebabe.com"

	TimeOut 60000
	LimitRequestBody 0

	<FilesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|webp|JPG|JPEG|wav|mp3|mp4|public|js|css|swf|webp|svg)$">
		Header set Cache-Control "max-age=30, public"
	</FilesMatch>
</VirtualHost>
</IfModule>
<IfModule mod_ssl.c>
<VirtualHost *:80>
	ServerName femmebabe.com
	ServerAdmin team@femmebabe.com
	DocumentRoot /var/www/html

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

	RewriteEngine on
	RewriteCond %{SERVER_NAME} =femmebabe.com
	RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
</IfModule>
अपने सर्वर को कॉन्फ़िगर करते समय इस उदाहरण कोड में प्रोजेक्ट, निर्देशिका और डोमेन के नाम को बदलना सुनिश्चित करें। अब, हमें डिफ़ॉल्ट साइट को अक्षम करना होगा। यह बैश का उपयोग करके किया जा सकता है।

sudo a2dissite 000-default-le-ssl
sudo a2dissite 000-default
sudo a2dissite default-ssl
अगला, हम डिफ़ॉल्ट साइट को सक्षम कर सकते हैं और अपाचे 2 को फिर से लोड कर सकते हैं, बैश का उपयोग करके भी। /Etc/apache2/साइट्स-उपलब्ध/में संपादन करते समय आपके द्वारा घोषित फ़ाइल के नाम के साथ Femmebabe को बदलना याद रखें।

sudo a2ensite femmebabe-le-ssl
sudo systemctl reload apache2
नवबार में अपने डोमेन पर वापस जाएं। आपको उस साइट को देखना चाहिए जिसे आपने अपने वेब ब्राउज़र में कॉन्फ़िगर किया है। बधाई हो! यदि आप इसे नहीं देखते हैं, तो आपको कुछ बदलाव करने की आवश्यकता हो सकती है। अपनी परियोजना में सेटिंग्स की सावधानीपूर्वक समीक्षा करें, अपाचे कॉन्फ़िगरेशन, और सुनिश्चित करें कि आपके पास कोई त्रुटि नहीं है, और त्रुटियों के लिए परियोजना की जांच करने के लिए निम्नलिखित कमांड चलाएं।

cd projectname
source venv/bin/activate
python manage.py check
यदि आपके पास अपने पायथन प्रोजेक्ट में त्रुटियां हैं, तो उन्हें पता करें कि वे कहाँ हैं और उन्हें ठीक करते हैं। आप अपनी सभी त्रुटियों को देखने में सक्षम नहीं हो सकते हैं, जहां वे हैं, इस पर निर्भर करता है, इसलिए यदि आपके पास कोई त्रुटि है जो बस कहता है कि "पॉपुलेट नहीं है", वर्चुअल वातावरण में निम्नलिखित फ़ाइल को संपादित करें, रजिस्ट्री, को उजागर करने के लिए, गलती।

nano venv/lib/python3.12/site-packages/django/apps/registry.py
लाइन 83 पर स्क्रॉल करें, जहां इस रनटाइम त्रुटि को उठाया गया है (RUNTIMEERROR ("पॉपुलेट () reentrant नहीं है")), और इस लाइन से पहले एक टिप्पणी जोड़ें, फिर एक ही इंडेंटेशन के साथ, self.app_configs = {} जोड़ें। यह इस तरह दिखता है:
                # AppConfig.ready () चलाने से बचने के लिए reentrant कॉल को रोकें
                # दो बार तरीके।
# RuntimeError बढ़ाएँ ("पॉपुलेट () reentrant नहीं है")
आप फिर से परियोजना की जांच कर सकते हैं और त्रुटि को उजागर कर सकते हैं।

python manage.py check
फिर आप त्रुटि देख सकते हैं और इसे ठीक कर सकते हैं। जब आपके पास यह तय हो जाता है और कोड बिना किसी त्रुटि के संकलन करता है, तो फ़ाइल को वापस बदलना सुनिश्चित करें ताकि यह इस तरह दिखे:
                # AppConfig.ready () चलाने से बचने के लिए reentrant कॉल को रोकें
                # दो बार तरीके।
# self.app_configs = {}
बशर्ते सर्वर ऑनलाइन हो, जब हम इसमें कोई और बदलाव करते हैं, तो हमें सर्वर को फिर से लोड करने के लिए निम्नलिखित कमांड का उपयोग करने की आवश्यकता है:

sudo systemctl reload apache2
बहुत बढ़िया! लेकिन मेल भेजने के बारे में क्या? ईमेल भेजना शुरू करने के लिए, हमें पहले डोमेन कॉन्फ़िगरेशन को अपडेट करना होगा। यह आपके DNS पैनल में स्क्वायरस्पेस में होना चाहिए, या जो भी डोमेन नाम रजिस्ट्रार चुना गया है। हमें कॉन्फ़िगरेशन को इंस्टॉल करने और जोड़ने और कुछ कमांड चलाने की भी आवश्यकता होगी। सबसे पहले, आइए सर्वर का IPv6 पता प्राप्त करें। फिर हम आपके DNS खोलेंगे और रिकॉर्ड जोड़ेंगे। सर्वर का IPv6 पता प्राप्त करने के लिए, इस कमांड का उपयोग करें:

ip -6 addr
अब, हम निम्न रिकॉर्ड्स को DNS सेटिंग्स में जोड़ सकते हैं। मेरे रिकॉर्ड इस तरह दिखते हैं। हालाँकि, आपके रिकॉर्ड के लिए, आपको IP पते को अपने IP (75.147.182.214 नहीं, यह मेरा नहीं है) के साथ बदलना चाहिए। इसके अलावा FemMebabe.com के स्थान पर अपना डोमेन जोड़ें, साथ ही पिछले कमांड के साथ पाया गया आपका IPv6 पता (आप मेरा उपयोग नहीं कर सकते, Fe80 :: 725a: FFF: FE49: 3E02)। अब के लिए डोमेनकी के बारे में चिंता न करें, यह तब बनाया जाता है जब हम पोस्टफिक्स, मेल सर्वर, Opendkim के साथ सेट करते हैं, और कुंजी प्रिंट करते हैं। हम इसे अंतिम कॉन्फ़िगर करेंगे। @ ए एन/ए 75.147.182.214 @ मंडल 10 femmebabe.com @ पीटीआर एन/ए femmebabe.com @ TXT एन/ए Txt @ v = spf1 mx ip75.147.182.214ip6: fe80 :: 725a: fff: fe49: 3e02 ~ सभी default._bimi TXT एन/ए v = bimi1; l = https: //femmebabe.com/media/static/femmebabe.svg _dmarc TXT एन/ए v = dmarc1; पी = कोई नहीं sendonly._domainkey TXT एन/एअब, हमें पोस्टफिक्स के लिए कुछ लगातार कॉन्फ़िगरेशन जोड़ना होगा। हमें केवल यह सुनिश्चित करने की आवश्यकता है कि हम डोमेन नाम, FemMebabe.com को बदल दें, जिस डोमेन नाम का आप उपयोग कर रहे हैं। आइए एक -एक करके सभी कॉन्फ़िगर फ़ाइलों को देखें, और उन्हें ओएस पर स्थापित करने के लिए, हमारी परियोजना में कॉन्फ़िगर नामक एक निर्देशिका में स्थापित करें।

nano config/etc_postfix_main.cf
इस पाठ को फ़ाइल में जोड़ें
# एक टिप्पणी के लिए /usr/share/postfix/main.cf.dist देखें, अधिक पूर्ण संस्करण
# डेबियन विशिष्ट: एक फ़ाइल नाम निर्दिष्ट करना पहले का कारण होगा
# नाम के रूप में उपयोग की जाने वाली उस फ़ाइल की लाइन।  डेबियन डिफ़ॉल्ट
# is /etc /mailname है।
# myorigin = /etc /mailname
# Appering .Domain MUA का काम है।
# "विलंबित मेल" चेतावनियों को उत्पन्न करने के लिए अगली पंक्ति को अस्वीकार करें
# देरी_वारिंग_टाइम = 4h
# Http://www.postfix.org/compatibility_readme.html देखें।
# ताजा इंस्टॉल।
# टीएलएस पैरामीटर
# मिल्टर विन्यास
अगला विन्यास!

nano config/etc_postfix_master.cf
इन पंक्तियों को जोड़ें:
# 
# पोस्टफिक्स मास्टर प्रक्रिया कॉन्फ़िगरेशन फ़ाइल।  प्रारूप पर विवरण के लिए
# फ़ाइल में, मास्टर (5) मैनुअल पेज देखें (कमांड: "मैन 5 मास्टर" या
# ऑन-लाइन: http://www.postfix.org/master.5.html)।
# 
# इस फ़ाइल को संपादित करने के बाद "पोस्टफिक्स रीलोड" निष्पादित करना न भूलें।
# 
# ====================================================================== =============================
# सेवा प्रकार निजी असुरक्षित chroot वेकअप मैक्सप्रोक कमांड + args
# (हाँ) (हाँ) (नहीं) (कभी नहीं) (100)
# ====================================================================== =============================
# smtp inet n - y - 1 पोस्टस्क्रीन
# smtpd पास - - y - - smtpd
# DNSBLOG UNIX - - Y - 0 DNSBLOG
# tlsproxy Unix - - y - 0 tlsproxy
# एक चुनें: केवल लूपबैक क्लाइंट के लिए सबमिशन सक्षम करें, या किसी भी क्लाइंट के लिए।
# 127.0.0.1:submission inet n - y - - smtpd
# -ओ syslog_name = पोस्टफिक्स/सबमिशन
# -O SMTPD_TLS_SECURITY_LEVEL = ENCRYPT
# -ओ smtpd_sasl_auth_enable = हाँ
# -ओ smtpd_tls_auth_only = हाँ
# -ओ smtpd_reject_unlisted_recipient = नहीं
# -ओ smtpd_client_restrictions = $ mua_client_restrictions
# -O SMTPD_HELO_RESTRICTIONS = $ MUA_HELO_RESTRICTIONS
# -O SMTPD_SENDER_RESTRICTIONS = $ MUA_SENDER_RESTRICTIONS
# -ओ SMTPD_RECIPIENT_RESTRICTIONS =
# -O SMTPD_RELAY_RESTRICTIONS = PERMIT_SASL_AUTHENTICATED, अस्वीकार करें
# -ओ milter_macro_daemon_name = मूल
# एक चुनें: केवल लूपबैक क्लाइंट के लिए, या किसी भी क्लाइंट के लिए SMTPs सक्षम करें।
# 127.0.0.1:smtps inet n - y - - smtpd
# smtps inet n - y - - smtpd
# -ओ syslog_name = postfix/smtps
# -ओ smtpd_tls_wrappermode = हाँ
# -ओ smtpd_sasl_auth_enable = हाँ
# -ओ smtpd_reject_unlisted_recipient = नहीं
# -ओ smtpd_client_restrictions = $ mua_client_restrictions
# -O SMTPD_HELO_RESTRICTIONS = $ MUA_HELO_RESTRICTIONS
# -O SMTPD_SENDER_RESTRICTIONS = $ MUA_SENDER_RESTRICTIONS
# -ओ SMTPD_RECIPIENT_RESTRICTIONS =
# -O SMTPD_RELAY_RESTRICTIONS = PERMIT_SASL_AUTHENTICATED, अस्वीकार करें
# -ओ milter_macro_daemon_name = मूल
# 628 inet n - y - - qmqpd
# QMGR UNIX N - N 300 1 OQMGR
# -ओ smtp_helo_timeout = 5 -o smtp_connect_timeout = 5
# 
# ====================================================================== =====================
# नॉन-पोस्टफिक्स सॉफ्टवेयर के लिए इंटरफेस। मैनुअल की जांच करना सुनिश्चित करें
# यह पता लगाने के लिए कि गैर-पोस्टफिक्स सॉफ़्टवेयर के पृष्ठ क्या विकल्प चाहते हैं।
# 
# निम्नलिखित सेवाओं में से कई पोस्टफिक्स पाइप (8) डिलीवरी का उपयोग करते हैं
# प्रतिनिधि।  $ {प्राप्तकर्ता} के बारे में जानकारी के लिए पाइप (8) महिला पृष्ठ देखें
# और अन्य संदेश लिफाफा विकल्प।
# ====================================================================== =====================
# 
# मेल प्राप्त करने का स्थान। विवरण के लिए PostFix MailDrop_readme फ़ाइल देखें।
# Main.cf में भी निर्दिष्ट करें: maildrop_destination_recipient_limit = 1
# 
# 
# ====================================================================== =====================
# 
# हाल के साइरस संस्करण मौजूदा "LMTP" मास्टर.सीएफ प्रविष्टि का उपयोग कर सकते हैं।
# 
# Cyrus.conf में निर्दिष्ट करें:
# lmtp cmd = "lmtpd -a" सुनो = "localhost: lmtp" proto = tcp4
# 
# निम्नलिखित में से एक या एक से अधिक में निर्दिष्ट करें:
# Mailbox_transport = lmtp: inet: localhost
# Virtual_transport = lmtp: inet: localhost
# 
# ====================================================================== =====================
# 
# साइरस 2.1.5 (अमोस गौक्स)
# Main.cf में भी निर्दिष्ट करें: cyrus_destination_recipient_limit = 1
# 
# साइरस यूनिक्स - एन एन - - पाइप
# झंडे = drx उपयोगकर्ता = cyrus argv =/cyrus/bin/delive -e -r $ {प्रेषक} -m $ {एक्सटेंशन} $ {उपयोगकर्ता}
# 
# ====================================================================== =====================
# साइरस के माध्यम से वितरण का पुराना उदाहरण।
# 
# ओल्ड -साइरस यूनिक्स - एन एन - - पाइप
# झंडे = r उपयोगकर्ता = साइरस argv =/cyrus/bin/delive -e -m $ {एक्सटेंशन} $ {उपयोगकर्ता}
# 
# ====================================================================== =====================
# 
# कॉन्फ़िगरेशन विवरण के लिए PostFix UUCP_README फ़ाइल देखें।
# 
# 
# अन्य बाहरी वितरण विधियाँ।
# 
और opendkim कॉन्फ़िगरेशन। Opendkim उन्हें अधिक सुरक्षित बनाने के लिए डोमेन कुंजी के साथ ईमेल सर्वर की पहचान करता है। इसके बिना, मेल पर हस्ताक्षर नहीं किया गया है और यह एक इनबॉक्स में नहीं बना सकता है।

nano config/etc_default_opendkim
इन पंक्तियों को जोड़ें:
# नोट: यह एक विरासत कॉन्फ़िगरेशन फ़ाइल है। इसका उपयोग opendkim द्वारा नहीं किया जाता है
# SystemD सेवा। कृपया संबंधित कॉन्फ़िगरेशन मापदंडों का उपयोग करें
# इसके बजाय /etc/opendkim.conf।
# 
# पहले, कोई डिफ़ॉल्ट सेटिंग्स को यहां संपादित करेगा, और फिर निष्पादित करेगा
# /lib/opendkim/opendkim.service.generate systemd override फ़ाइलों को उत्पन्न करने के लिए
# /etc/systemd/system/opendkim.service.d/override.conf और
# /etc/tmpfiles.d/opendkim.conf। जबकि यह अभी भी संभव है, यह अब है
# सीधे /etc/opendkim.conf में सेटिंग्स को समायोजित करने की सिफारिश की।
# 
# Daemon_opts = ""
# UNIX सॉकेट का उपयोग करने के लिए/var/spool/postfix/run/opendkim में बदलें
# एक chroot में पोस्टफिक्स:
# Rundir =/var/spool/postfix/run/opendkim
# 
# एक वैकल्पिक सॉकेट निर्दिष्ट करने के लिए असंबद्ध
# ध्यान दें कि इसे सेट करने से opendkim.conf में किसी भी सॉकेट मान को ओवरराइड किया जाएगा
# गलती करना:
# पोर्ट 54321 पर सभी इंटरफेस पर सुनें:
# सॉकेट = inet: 54321
# पोर्ट 12345 पर लूपबैक पर सुनें:
# सॉकेट = inet: 12345@लोकलहोस्ट
# पोर्ट 12345 पर 192.0.2.1 पर सुनें:
# सॉकेट = inet: 12345@192.0.2.1

nano config/etc_dovecot_conf.d_10-master.conf
इन पंक्तियों को जोड़ें:
# default_process_limit = 100
# default_client_limit = 1000
# डिफ़ॉल्ट VSZ (वर्चुअल मेमोरी आकार) सेवा प्रक्रियाओं के लिए सीमा। यह मुख्य रूप से है
# खाने से पहले मेमोरी को लीक करने वाली प्रक्रियाओं को पकड़ने और मारने का इरादा है
# सब कुछ।
# default_vsz_limit = 256m
# लॉगिन उपयोगकर्ता आंतरिक रूप से लॉगिन प्रक्रियाओं द्वारा उपयोग किया जाता है। यह सबसे अविश्वसनीय है
# Dovecot सिस्टम में उपयोगकर्ता। यह किसी भी चीज़ तक पहुंच नहीं होनी चाहिए।
# default_login_user = dovenull
# आंतरिक उपयोगकर्ता का उपयोग अप्रत्याशित प्रक्रियाओं द्वारा किया जाता है। यह से अलग होना चाहिए
# लॉगिन उपयोगकर्ता, ताकि लॉगिन प्रक्रियाएं अन्य प्रक्रियाओं को परेशान न कर सकें।
# default_internal_user = dovecot
    # पोर्ट = 143
    # पोर्ट = 993
    # ssl = हाँ
  # नई प्रक्रिया शुरू करने से पहले कनेक्शन की संख्या को संभालने के लिए। आम तौर पर
  # एकमात्र उपयोगी मान 0 (असीमित) या 1 हैं। 1 अधिक सुरक्षित है, लेकिन 0
  # तेजी से है। <doc/wiki/loginprocess.txt>
  # Service_count = 1
  # हमेशा अधिक कनेक्शन की प्रतीक्षा करने के लिए प्रक्रियाओं की संख्या।
  # process_min_avail = 0
  # यदि आप service_count = 0 सेट करते हैं, तो आपको शायद इसे बढ़ाने की आवश्यकता है।
  # vsz_limit = $ default_vsz_limit
    # पोर्ट = 110
    # पोर्ट = 995
    # ssl = हाँ
    # पोर्ट = 587
  # यदि आप उपरोक्त यूनिक्स सॉकेट का उपयोग नहीं कर सकते हैं तो केवल INET श्रोता बनाएं
  # inet_listener lmtp {
    # पूरे इंटरनेट के लिए LMTP को दृश्यमान बनाने से बचें
    # पता =
    # पोर्ट =
  # }
  # अधिकांश मेमोरी MMAP () आईएनजी फ़ाइलों पर जाती है। आपको इसे बढ़ाने की आवश्यकता हो सकती है
  # यदि आपके पास विशाल मेलबॉक्स हैं तो सीमा।
  # vsz_limit = $ default_vsz_limit
  # अधिकतम। IMAP प्रक्रियाओं की संख्या (कनेक्शन)
  # process_limit = 1024
  # अधिकतम। POP3 प्रक्रियाओं की संख्या (कनेक्शन)
  # process_limit = 1024
  # अधिकतम। SMTP सबमिशन प्रक्रियाओं की संख्या (कनेक्शन)
  # process_limit = 1024
  # AUTH_SOCKET_PATH डिफ़ॉल्ट रूप से इस UserDB सॉकेट को इंगित करता है। यह आम तौर पर है
  # Dovecot-lda, doveadm, संभवतः IMAP प्रक्रिया, आदि द्वारा उपयोग किया जाता है
  # इस सॉकेट के लिए पूर्ण अनुमतियाँ सभी उपयोगकर्ताओं की एक सूची प्राप्त करने में सक्षम हैं और
  # हर किसी के UserDB लुकअप के परिणाम प्राप्त करें।
  # 
  # डिफ़ॉल्ट 0666 मोड किसी को भी सॉकेट से कनेक्ट करने की अनुमति देता है, लेकिन
  # UserDB लुकअप केवल तभी सफल होगा जब UserDB "UID" फ़ील्ड देता है
  # कॉलर प्रक्रिया के यूआईडी से मेल खाता है। इसके अलावा अगर कॉलर का यूआईडी या जीआईडी ​​मेल खाता है
  # सॉकेट का यूआईडी या जीआईडी ​​लुकअप सफल होता है। कुछ और असफलता का कारण बनता है।
  # 
  # सभी उपयोगकर्ताओं को देखने के लिए कॉलर को पूर्ण अनुमतियाँ देने के लिए, मोड को सेट करें
  # 0666 के अलावा कुछ और और dovecot कर्नेल को लागू करने देता है
  # अनुमतियाँ (उदा। 0777 सभी को पूर्ण अनुमतियों की अनुमति देता है)।
  # ऑथ वर्कर प्रक्रिया को डिफ़ॉल्ट रूप से रूट के रूप में चलाया जाता है, ताकि यह एक्सेस कर सके
  # /आदि/छाया। यदि यह आवश्यक नहीं है, तो उपयोगकर्ता को बदल दिया जाना चाहिए
  # $ default_internal_user।
  # उपयोगकर्ता = रूट
  # यदि तानाशाही प्रॉक्सी का उपयोग किया जाता है, तो मेल प्रक्रियाओं को इसके सॉकेट तक पहुंच होनी चाहिए।
  # उदाहरण के लिए: मोड = 0660, समूह = vmail और ग्लोबल mail_access_groups = vmail
    # मोड = 0600
    # उपयोगकर्ता =
    # समूह =
एक बार फिर, इन सभी फ़ाइलों में डोमेन को बदलना सुनिश्चित करें, FemMebabe.com, आपके द्वारा चुने गए डोमेन के साथ। अगली फ़ाइल को संपादित करें, Dovecot का कॉन्फ़िगरेशन,

nano config/etc_dovecot_dovecot
और इन पंक्तियों को जोड़ें
## डोवकॉट कॉन्फ़िगरेशन फ़ाइल
# यदि आप जल्दी में हैं, तो http://wiki2.dovecot.org/quickconfiguration देखें
# "doveconf -n" कमांड परिवर्तित सेटिंग्स का एक साफ आउटपुट देता है। इसका इस्तेमाल करें
# Dovecot मेलिंग सूची में पोस्ट करते समय फ़ाइलों को कॉपी और पेस्ट करने के बजाय।
# '# 'चरित्र और सब कुछ के बाद इसे टिप्पणियों के रूप में माना जाता है। अतिरिक्त स्थान
# और टैब को नजरअंदाज कर दिया जाता है। यदि आप इनमें से किसी एक का उपयोग स्पष्ट रूप से करना चाहते हैं, तो डालें
# value inside quotes, eg.: key = "# चार और अनुगामी व्हाट्सएप "
# अधिकांश (लेकिन सभी नहीं) सेटिंग्स को अलग -अलग प्रोटोकॉल और/या द्वारा ओवरराइड किया जा सकता है
# स्रोत/गंतव्य IPS उदाहरण के लिए, वर्गों के अंदर सेटिंग्स रखकर:
# प्रोटोकॉल imap {}, स्थानीय 127.0.0.1 {}, दूरस्थ 10.0.0.0/8 {}
# प्रत्येक सेटिंग के लिए डिफ़ॉल्ट मान दिखाए जाते हैं, यह असमानता की आवश्यकता नहीं है
# वे। ये इसके अपवाद हैं, हालांकि: कोई खंड नहीं (जैसे नामस्थान {})
# या प्लगइन सेटिंग्स को डिफ़ॉल्ट रूप से जोड़ा जाता है, वे केवल उदाहरण के रूप में सूचीबद्ध हैं।
# पथ भी केवल वास्तविक चूक के साथ उदाहरण हैं जो कॉन्फ़िगर पर आधारित हैं
# विकल्प। यहाँ सूचीबद्ध पथ कॉन्फ़िगर -prefix =/usr के लिए हैं
# --sysconfdir =/etc-localstatatedir =/var
# स्थापित प्रोटोकॉल सक्षम करें
# आईपी ​​या होस्ट की एक अल्पविराम अलग सूची जहां कनेक्शन के लिए सुनना है।
# "*" सभी IPv4 इंटरफेस में सुनता है, "::" सभी IPv6 इंटरफेस में सुनता है।
# यदि आप गैर-डिफॉल्ट पोर्ट या कुछ अधिक जटिल निर्दिष्ट करना चाहते हैं, तो
# conf.d/master.conf को संपादित करें।
# सुनो = *, ::
# आधार निर्देशिका जहां रनटाइम डेटा को स्टोर करने के लिए।
# base_dir =/var/run/dovecot/
# इस उदाहरण का नाम। मल्टी-इंस्टेंस सेटअप doveadm और अन्य कमांड में
# उपयोग कर सकते हैं -i <Inst_name> यह चुनने के लिए कि किस उदाहरण का उपयोग किया गया है (एक विकल्प
# से -सी <config_path>)। इंस्टेंस नाम को भी डोवेकॉट प्रक्रियाओं में जोड़ा गया है
# पीएस आउटपुट में।
# उदाहरण_नाम = dovecot
# ग्राहकों के लिए अभिवादन संदेश।
# login_greeting = dovecot तैयार।
# विश्वसनीय नेटवर्क रेंज की अंतरिक्ष अलग सूची। इनमें से कनेक्शन
# IPs को अपने IP पते और पोर्ट को ओवरराइड करने की अनुमति है (लॉगिंग के लिए और
# प्रमाणीकरण चेक के लिए)। disable_plaintext_auth को भी अनदेखा किया जाता है
# ये नेटवर्क। आमतौर पर आप अपने IMAP प्रॉक्सी सर्वर को यहां निर्दिष्ट करेंगे।
# login_trusted_networks =
# लॉगिन एक्सेस चेक सॉकेट्स की अंतरिक्ष अलग सूची (जैसे TCPWRAP)
# login_access_sockets =
# Proxy_maybe = हाँ के साथ अगर प्रॉक्सी गंतव्य इनमें से किसी भी ips से मेल खाता है, तो मत करो
# प्रॉक्सिंग। यह सामान्य रूप से आवश्यक नहीं है, लेकिन गंतव्य यदि उपयोगी हो सकता है
# आईपी ​​उदा। एक लोड बैलेंसर का आईपी।
# auth_proxy_self =
# अधिक वर्बोज़ प्रक्रिया शीर्षक (पीएस में) दिखाएं। वर्तमान में उपयोगकर्ता का नाम दिखाता है और
# आईपी ​​पता। यह देखने के लिए उपयोगी है कि वास्तव में IMAP प्रक्रियाओं का उपयोग कौन कर रहे हैं
# (उदाहरण के लिए साझा मेलबॉक्स या यदि एक ही यूआईडी का उपयोग कई खातों के लिए किया जाता है)।
# verbose_proctitle = नहीं
# क्या सभी प्रक्रियाओं को मार दिया जाना चाहिए जब Dovecot मास्टर प्रक्रिया बंद हो जाती है।
# इसे "नहीं" पर सेट करने का मतलब है कि डोवेकॉट को बिना अपग्रेड किए जा सकते हैं
# मौजूदा क्लाइंट कनेक्शन को बंद करने के लिए मजबूर करना (हालांकि यह भी हो सकता है
# एक समस्या अगर अपग्रेड उदा। एक सुरक्षा तय के कारण)।
# shotdown_clients = हाँ
# यदि गैर-शून्य है, तो Doveadm सर्वर के लिए इस कई कनेक्शन के माध्यम से मेल कमांड चलाएं,
# इसके बजाय उन्हें सीधे उसी प्रक्रिया में चलाने के लिए।
# doveadm_worker_count = 0
# यूनिक्स सॉकेट या होस्ट: पोर्ट का उपयोग Doveadm सर्वर से कनेक्ट करने के लिए किया जाता है
# doveadm_socket_path = doveadm-server
# अंतरिक्ष अलग पर्यावरण चर की सूची जो कि डोवकोट पर संरक्षित हैं
# स्टार्टअप और अपनी सभी बाल प्रक्रियाओं के लिए पास हो गया। आप भी दे सकते हैं
# कुंजी = मान जोड़े हमेशा विशिष्ट सेटिंग्स सेट करने के लिए।
# import_environment = tz
## 
## शब्दकोश सर्वर सेटिंग्स
## 
# शब्दकोश का उपयोग कुंजी = मूल्य सूचियों को संग्रहीत करने के लिए किया जा सकता है। इसका उपयोग कई लोगों द्वारा किया जाता है
# प्लगइन्स। शब्दकोश को या तो सीधे एक्सेस किया जा सकता है या हालांकि ए
# शब्दकोश सर्वर। निम्नलिखित डिक्ट ब्लॉक मैप्स डिक्शनरी नाम उरिस
# जब सर्वर का उपयोग किया जाता है। फिर इन्हें प्रारूप में URIS का उपयोग करके संदर्भित किया जा सकता है
# "प्रॉक्सी :: <नाम>"।
  # कोटा = mysql: /etc/dovecot/dovecot-dict-sql.conf.ext
# अधिकांश वास्तविक कॉन्फ़िगरेशन नीचे शामिल हैं। फ़ाइल नाम हैं
# पहले उनके ASCII मान द्वारा क्रमबद्ध किया गया और उस क्रम में पार्स किया गया। 00-prefixes
# फ़ाइल नाम में ऑर्डर को समझना आसान है।
# एक कॉन्फ़िगर फ़ाइल भी एक त्रुटि दिए बिना शामिल किए जाने की कोशिश की जा सकती है यदि
# यह नहीं मिला:
# सभी इनपुट कनेक्शनों को सुनने की अनुमति देता है (IPv4 / IPv6)
Dovecot उपयोगकर्ता के लिए एक पासवर्ड जोड़ें:

nano config/etc_dovecot_passwd
बृहदान्त्र से पहले फ़ाइल का पहला भाग, उपयोगकर्ता नाम है। अंतिम भाग, "YourPassword", उस पासवर्ड को दर्शाता है जिसे आप अपना मेल सर्वर देना चाहते हैं।

team:{plain}yourpassword
अगला, opendkim कॉन्फ़िगर

nano config/etc_opendkim.conf
और इन पंक्तियों को जोड़ें:
# यह हस्ताक्षर करने और सत्यापित करने के लिए एक बुनियादी कॉन्फ़िगरेशन है। यह आसानी से हो सकता है
# एक बुनियादी स्थापना के अनुरूप अनुकूलित। Opendkim.conf (5) और देखें
# /usr/share/doc/opendkim/examples/opendkim.conf.sample के लिए पूरा
# उपलब्ध कॉन्फ़िगरेशन मापदंडों का प्रलेखन।
# Logwhy नहीं
# सामान्य हस्ताक्षर और सत्यापन पैरामीटर। डेबियन में, "हेडर" से है
# ओवरसाइड किया गया, क्योंकि यह अक्सर प्रतिष्ठा प्रणालियों द्वारा उपयोग की जाने वाली पहचान कुंजी है
# और इस प्रकार कुछ हद तक सुरक्षा संवेदनशील।
# डोमेन, चयनकर्ता और कुंजी (आवश्यक) पर हस्ताक्षर करना। उदाहरण के लिए, हस्ताक्षर करें
# चयनकर्ता "2020" के साथ डोमेन "उदाहरण.कॉम" के लिए (2020._domainkey.example.com),
# /etc/dkimkeys/example.private में संग्रहीत निजी कुंजी का उपयोग करना। अधिक दानेदार
# सेटअप विकल्प /usr/share/doc/opendkim/readme.opendkim में पाया जा सकता है।
# डोमेन उदाहरण.कॉम
# चयनकर्ता 2020
# Keyfile /etc/dkimkeys/example.private
# डेबियन में, Opendkim उपयोगकर्ता "Opendkim" के रूप में चलता है। 007 के एक umask की आवश्यकता होती है जब
# MTAs के साथ एक स्थानीय सॉकेट का उपयोग करना जो सॉकेट को गैर-निजीकृत के रूप में एक्सेस करता है
# उपयोगकर्ता (उदाहरण के लिए, पोस्टफिक्स)। आपको समूह में उपयोगकर्ता "पोस्टफ़िक्स" जोड़ने की आवश्यकता हो सकती है
# उस मामले में "Opendkim"।
# एमटीए कनेक्शन (आवश्यक) के लिए सॉकेट। यदि एमटीए एक चेरोट जेल के अंदर है,
# यह सुनिश्चित किया जाना चाहिए कि सॉकेट सुलभ है। डेबियन में, पोस्टफिक्स में चलता है
# एक chroot in/var/spool/postfix, इसलिए एक UNIX सॉकेट होना होगा
# नीचे दी गई अंतिम पंक्ति पर दिखाए गए अनुसार कॉन्फ़िगर किया गया।
# सॉकेट लोकल: /run/opendkim/opendkim.sock
# सॉकेट inet: 8891@लोकलहोस्ट
# सॉकेट INET: 8891
# होस्ट जिसके लिए सत्यापित करने के बजाय हस्ताक्षर करना है, डिफ़ॉल्ट 127.0.0.1 है। देखना
# अधिक जानकारी के लिए Opendkim (8) का ऑपरेशन अनुभाग।
# InternalHosts 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12
# ट्रस्ट एंकर DNSSEC को सक्षम करता है। डेबियन में, ट्रस्ट एंकर फ़ाइल प्रदान की जाती है
# पैकेज DNS-ROOT-DATA द्वारा।
# NameServers 127.0.0.1
# संदेशों पर हस्ताक्षर करने के लिए उपयोग किए जाने वाले पते से लेकर मैप डोमेन
# आंतरिक मेजबानों का एक सेट जिसका मेल हस्ताक्षरित किया जाना चाहिए

nano config/etc_default_opendkim
और इन पंक्तियों को जोड़ें
# नोट: यह एक विरासत कॉन्फ़िगरेशन फ़ाइल है। इसका उपयोग opendkim द्वारा नहीं किया जाता है
# SystemD सेवा। कृपया संबंधित कॉन्फ़िगरेशन मापदंडों का उपयोग करें
# इसके बजाय /etc/opendkim.conf।
# 
# पहले, कोई डिफ़ॉल्ट सेटिंग्स को यहां संपादित करेगा, और फिर निष्पादित करेगा
# /lib/opendkim/opendkim.service.generate systemd override फ़ाइलों को उत्पन्न करने के लिए
# /etc/systemd/system/opendkim.service.d/override.conf और
# /etc/tmpfiles.d/opendkim.conf। जबकि यह अभी भी संभव है, यह अब है
# सीधे /etc/opendkim.conf में सेटिंग्स को समायोजित करने की सिफारिश की।
# 
# Daemon_opts = ""
# UNIX सॉकेट का उपयोग करने के लिए/var/spool/postfix/run/opendkim में बदलें
# एक chroot में पोस्टफिक्स:
# Rundir =/var/spool/postfix/run/opendkim
# 
# एक वैकल्पिक सॉकेट निर्दिष्ट करने के लिए असंबद्ध
# ध्यान दें कि इसे सेट करने से opendkim.conf में किसी भी सॉकेट मान को ओवरराइड किया जाएगा
# गलती करना:
# पोर्ट 54321 पर सभी इंटरफेस पर सुनें:
# सॉकेट = inet: 54321
# पोर्ट 12345 पर लूपबैक पर सुनें:
# सॉकेट = inet: 12345@लोकलहोस्ट
# पोर्ट 12345 पर 192.0.2.1 पर सुनें:
# सॉकेट = inet: 12345@192.0.2.1
जब हम अपने पोस्टफ़िक्स सर्वर को सेट करने के लिए तैयार होते हैं, तो हम नीचे दिए गए कोड को चलाएंगे, जिसमें उपयुक्त डोमेन नाम एम्बेडेड होगा। एक स्क्रिप्ट बनाकर शुरू करें

touch scripts/postfixsetup
sudo chmod a+x scripts/postfixsetup
nano scripts/postfixsetup
अब, नैनो में, पाठ संपादक, इस फ़ाइल को संपादित करें ताकि इसमें FemMebabe.com के बजाय आपका डोमेन नाम शामिल हो।
# !/बिन/बैश
# सेटअप पोस्टफिक्स
अब, PostFix, Opendkim और Dovecot को कॉन्फ़िगर करने के लिए पूर्ण स्क्रिप्ट चलाएं।

./scripts/postfixsetup
एक बार जब यह स्क्रिप्ट चल जाती है, तो अंतिम पंक्ति को कॉपी करें जो इसे प्रिंट करती है और इसे अपने DNS कॉन्फ़िगरेशन में पेस्ट करें, क्योंकि यह Sendonly._domainkey के लिए मान है। यह सुरक्षित मेल भेजते समय अपने डोमेन की पहचान करने के लिए उपयोग की जाने वाली Opendkim कुंजी है। बहुत बढ़िया! कुछ दिनों के भीतर, आपको सर्वर से मेल भेजने में सक्षम होना चाहिए बशर्ते कि सब कुछ सही ढंग से कॉन्फ़िगर किया गया हो। यदि आपने अपने मेल सर्वर के लिए DNS को कॉन्फ़िगर किया है, तो रिकॉर्ड को अपडेट करने में 72 घंटे से कम समय लेना चाहिए। यह आमतौर पर बहुत तेज है। आप जांच सकते हैं कि क्या आपका सर्वर इस कमांड का उपयोग करके काम कर रहा है, आपके ईमेल की आपूर्ति की गई है:

echo “test” | mail -s “Test Email” youremail@gmail.com
यदि सब कुछ सही तरीके से काम कर रहा है, तो आपको अपने सर्वर के साथ ईमेल भेजने में सक्षम होना चाहिए। यदि यह काम नहीं कर रहा है, तो लॉग को देखने का प्रयास करें कि त्रुटि क्या हो सकती है।

tail –lines 150 /var/log/mail.log
यह मेल के बारे में वर्बोज़ जानकारी प्रदान करेगा जो सर्वर द्वारा भेजा जा रहा है और क्या यह ठीक से काम कर रहा है। आपको अपने इनबॉक्स में ईमेल भी देखने में सक्षम होना चाहिए, यदि यह वहां नहीं है, तो अपने स्पैम फ़ोल्डर की जांच करें। आपको अपनी सेटिंग्स को अपनी सेटिंग्स में भी कॉन्फ़िगर करना होगा। ताकि आपका ईमेल सर्वर आपके Django ऐप, प्रोजेक्ट से बात कर सके। अपनी सेटिंग्स में इन लाइनों को जोड़ें या बदलें
EMAIL_HOST_USER = 'team' # 'Love@mamasheen.com'
ध्यान दें कि हम पासवर्ड प्राप्त करने के लिए एक कॉन्फ़िगर फ़ाइल का उपयोग कर रहे हैं। आइए इस फ़ाइल को सेटिंग्स में लोड करते हैं जैसे कि फ़ाइल की शुरुआत में।:
# कॉन्फ़िगरेशन को खोलें और लोड करें
आइए इस फ़ाइल को बनाएं और इसमें एक गुप्त कुंजी जोड़ें, साथ ही मेल पासवर्ड भी। एक गुप्त कुंजी उत्पन्न करने के लिए, इस कमांड का उपयोग करें, जो भी लंबाई आपको पसंद है:

openssl rand -base64 64
अब, उस पाठ को कॉपी करें जो OpenSSL जनरेट किया गया है और /etc/config.json को संपादित करता है

sudo nano /etc/config.json
सीक्रेट कुंजी के रूप में उत्पन्न होने वाली कुंजी के साथ, अपनी फ़ाइल में निम्न पंक्तियों को जोड़ें।

{
	"SECRET_KEY": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX-generated-using-openssl)",
	"EMAIL_HOST_PASSWORD": "yourpassword"
}
JSON प्रारूप सरल और उपयोग में आसान है, हम अन्य कुंजियों की घोषणा कर सकते हैं जो हम अपनी परियोजना में भी इस तरह से उपयोग करना चाहते हैं, और उन्हें हमारी परियोजना निर्देशिका से अलग रख सकते हैं ताकि अन्य उपयोगकर्ता उन्हें नहीं लिख सकें और इसलिए उन्हें पढ़ा नहीं जा सके अकेले हमारी परियोजना निर्देशिका से। यह एपीआई कुंजियों के लिए अभ्यास की सिफारिश की जाती है, जिनमें से हम यहां कुछ से अधिक का उपयोग करेंगे। आप यह सुनिश्चित करने के लिए अपनी परियोजना का बैकअप लेना चाहेंगे कि सब कुछ सहेजा जाए और आप बाद में अपने काम को ठीक कर पाएंगे, भले ही आप अब सर्वर किराए पर नहीं लेना चाहते हों।

sudo backup
अब, वेब सर्वर से एक HTML ईमेल भेजने का प्रयास करें, बशर्ते कमांड लाइन से एक भेजना काम कर रहा हो। शेल में अपने उपयोगकर्ता उदाहरण को क्वेरी करें, और Django के माध्यम से उस उपयोगकर्ता को HTML ईमेल भेजें। कोड में मेरा नाम बदलें, चार्लोट, अपने उपयोगकर्ता नाम में।

python manage.py shell
from django.contrib.auth.models import User
u = User.objects.get(username='Charlotte')
from users.email import send_welcome_email
send_welcome_email(u)
exit()
यदि पहला कमांड काम नहीं करता है, तो उपयोग करना सुनिश्चित करें

source venv/bin/activate
बशर्ते सब कुछ सही तरीके से सेट किया गया हो, अब आपको अपने वेब ऐप द्वारा भेजे गए अपने मेलबॉक्स में एक स्वागत योग्य ईमेल मिलेगा। अच्छा काम! आप एक लंबा सफर तय कर चुके हैं। मैं जोड़ना चाहता था, यदि आप कभी भी इस तरह की परियोजना पर काम करते समय किसी भी त्रुटि के साथ संघर्ष कर रहे हैं, तो जवाब खोजने और मदद मांगने में संकोच न करें। Google, अन्य खोज इंजनों के बीच, प्रोग्रामिंग सहायता के लिए खोज करने के लिए महान संसाधन हैं। बस उस त्रुटि के लिए खोजें जो आप प्राप्त कर रहे हैं, और आप यह देख पाएंगे कि अन्य लोग समस्या को कैसे हल करते हैं। इसके अलावा, आप मुझसे, अपने शिक्षकों (शिक्षकों, प्रोफेसरों, ट्यूटर्स), इंटरनेट पर किसी भी साथियों से संपर्क करने के लिए स्वागत करते हैं, जो प्रोग्रामिंग सहायता के लिए उपलब्ध हैं, या इस पुस्तक को फिर से या अन्य संसाधनों से परामर्श करने के लिए उन मुद्दों का समाधान खोजने के लिए जो आप अनुभव कर रहे हैं। मैं समझता हूं कि यह आसान नहीं है, लेकिन भले ही आपने इस में पढ़ा हो और कोई भी कोड नहीं लिख रहे हैं, आप स्क्रैच से वेब ऐप बनाने के बारे में बहुत कुछ सीख रहे हैं। अपने आप को पीठ पर थपथपाएं, आप एक महान कर रहे हैंकाम। इस तीसरे संस्करण वेब डेवलपमेंट गाइड को पढ़ने के लिए समय निकालने के लिए धन्यवाद। भविष्य के संस्करणों में, मैं दस्तावेज़ की शुरुआत में चर्चा किए गए महत्वपूर्ण उदाहरणों को शामिल करूंगा और हम सॉफ्टवेयर और हार्डवेयर विकास की दुनिया में बहुत गहराई से गोता लगाएंगे। आने वाले समय के लिए बने रहें, और मैं आपको अविश्वसनीय सॉफ़्टवेयर बनाने का तरीका सिखाने के लिए उत्सुक हूं। अगले में मिलते हैं






बंद करना
पेज 1
कूदना
पूरा लेख देखें
जारी रखें पढ़ रहे हैं

द्वारा Daisy / देखना | खरीदना | क्रिप्टोक्यूरेंसी के साथ खरीदें


दो खिलाड़ी रंग सुडोकू ऑनलाइन मुफ्त मुफ्त में एक दोस्त के साथ सहयोगी रंग सुडोकू खेलें।किसी मित्र को आमंत्रित करें एक खेल में शामिल हों ***
खरीददारी

द्वारा Daisy / देखना | खरीदना | क्रिप्टोक्यूरेंसी के साथ खरीदें


क्रिप्टो बाजार इतनी जल्दी कैसे बढ़ रहा है?


क्रिप्टोक्यूरेंसी बाजार के तेजी से विकास में योगदान देने वाले कई कारक हैं। 


1। जागरूकता और गोद लेने में वृद्धि: चूंकि अधिक लोग क्रिप्टोकरेंसी और उनके संभावित लाभों के बारे में जानते हैं, इसलिए क्रिप्टोक्यूरेंसी निवेश की मांग में काफी वृद्धि हुई है। इस बढ़ी हुई रुचि के कारण बाजार में भाग लेने वाले उपयोगकर्ताओं और निवेशकों की संख्या में वृद्धि हुई है।


2। संस्थागत भागीदारी: पिछले कुछ वर्षों में, हमने संस्थागत निवेशकों की बढ़ती संख्या, जैसे कि हेज फंड, बैंक और अन्य वित्तीय संस्थानों को क्रिप्टोक्यूरेंसी बाजार में शामिल किया है। इसने बाजार में विश्वसनीयता को जोड़ा है और और भी अधिक निवेशकों को आकर्षित किया है।


3। प्रौद्योगिकी प्रगति: ब्लॉकचेन अंतरिक्ष में तकनीकी विकास ने नई क्रिप्टोकरेंसी के लिए इसे बनाया और कारोबार करना आसान बना दिया है। इसके अतिरिक्त, सुरक्षा उपायों और नियामक ढांचे में प्रगति ने बाजार को निवेशकों को अधिक आकर्षक बना दिया है।


4। बाजार की अस्थिरता: क्रिप्टोक्यूरेंसी बाजार की अत्यधिक अस्थिर प्रकृति ने व्यापारियों और निवेशकों को आकर्षित किया है जो मूल्य में उतार -चढ़ाव को भुनाने और अपेक्षाकृत कम समय में महत्वपूर्ण लाभ कमाने के लिए देख रहे हैं।


5। वैश्विक स्वीकृति: क्रिप्टोकरेंसी को अब दुनिया भर के व्यापारियों और व्यवसायों की बढ़ती संख्या द्वारा भुगतान के रूप में स्वीकार किया जाता है। इसने पारंपरिक फिएट मुद्राओं के लिए एक व्यवहार्य विकल्प के रूप में क्रिप्टोकरेंसी को वैध बनाने में मदद की है।


कुल मिलाकर, इन कारकों ने क्रिप्टोक्यूरेंसी बाजार की तेजी से विकास में योगदान दिया है और भविष्य में इसके विस्तार को जारी रखने की संभावना है।


द्वारा Daisy / देखना | खरीदना | क्रिप्टोक्यूरेंसी के साथ खरीदें


मैं अपने घर से एक वेब सर्वर की मेजबानी कैसे करूं?


अपने घर से एक वेब सर्वर की मेजबानी इन चरणों का पालन करके किया जा सकता है:


1। एक सर्वर सॉफ़्टवेयर चुनें: आप विभिन्न सर्वर सॉफ़्टवेयर विकल्पों जैसे अपाचे, Nginx, Microsoft इंटरनेट सूचना सेवा (IIS), आदि चुन सकते हैं, जो आपकी आवश्यकताओं के अनुरूप एक चुनें।


2। एक स्थिर आईपी पता सेट करें: अपने इंटरनेट सेवा प्रदाता (आईएसपी) से संपर्क करें और अपने इंटरनेट कनेक्शन के लिए एक स्थिर आईपी पते का अनुरोध करें। यह सुनिश्चित करेगा कि आपकी IP पता बदलने पर भी आपकी वेबसाइट सुलभ रहे।


3। अपने राउटर को कॉन्फ़िगर करें: अपने राउटर के प्रशासन पैनल और फॉरवर्ड पोर्ट 80 (HTTP ट्रैफ़िक के लिए डिफ़ॉल्ट पोर्ट) को अपने सर्वर के आंतरिक आईपी पते पर लॉग इन करें। यह बाहरी ट्रैफ़िक को आपके वेब सर्वर तक पहुंचने की अनुमति देगा।


4। सर्वर सॉफ़्टवेयर को स्थापित और कॉन्फ़िगर करें: अपने सर्वर मशीन पर सर्वर सॉफ़्टवेयर स्थापित करें और इसे अपनी आवश्यकताओं के अनुसार कॉन्फ़िगर करें, जैसे कि वर्चुअल होस्ट, एसएसएल प्रमाणपत्र, आदि सेट करना।


5। अपनी वेबसाइट का परीक्षण करें: जांचें कि क्या आपकी वेबसाइट आपके स्टेटिक आईपी पते को वेब ब्राउज़र में दर्ज करके सुलभ है। आप पिंगडम या GTMetrix जैसे ऑनलाइन टूल का उपयोग करके इसका परीक्षण भी कर सकते हैं।


6। डोमेन नाम और DNS सेटअप: अपनी वेबसाइट के लिए एक डोमेन नाम पंजीकृत करें और अपने स्थैतिक आईपी पते को इंगित करने के लिए DNS रिकॉर्ड्स सेट करें।


7। सुरक्षा उपाय: अपने वेब सर्वर को साइबर खतरों से बचाने के लिए फ़ायरवॉल, एन्क्रिप्शन, नियमित बैकअप आदि जैसे सुरक्षा उपायों को लागू करें।


8। मॉनिटर और रखरखाव: प्रदर्शन के मुद्दों, सुरक्षा खतरों और सॉफ़्टवेयर अपडेट के लिए नियमित रूप से अपने सर्वर की निगरानी करें। चिकनी कामकाज सुनिश्चित करने के लिए अपने सर्वर सॉफ़्टवेयर और एप्लिकेशन को अद्यतित रखें।


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


द्वारा Daisy / देखना | खरीदना | क्रिप्टोक्यूरेंसी के साथ खरीदें


मुझे एक वेबसाइट के लिए प्रचार और कार्बनिक यातायात कैसे मिलेगा?


1। खोज इंजन अनुकूलन (एसईओ): खोज इंजन के लिए खोज इंजन के लिए अपनी वेबसाइट का अनुकूलन करें और खोज इंजन परिणाम पृष्ठों पर रैंकिंग में सुधार करें।


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


3। सोशल मीडिया मार्केटिंग: सोशल मीडिया प्लेटफॉर्म जैसे फेसबुक, ट्विटर, इंस्टाग्राम और लिंक्डइन पर अपनी वेबसाइट को बढ़ावा दें और अपनी वेबसाइट पर ट्रैफ़िक को व्यापक रूप से पहुंचाने और ट्रैफ़िक चलाने के लिए।


4। पेड विज्ञापन: खोज इंजन (Google ऐडवर्ड्स), सोशल मीडिया प्लेटफॉर्म और अन्य प्रासंगिक वेबसाइटों पर भुगतान किए गए विज्ञापन अभियानों को चलाने पर विचार करें, जो आपकी वेबसाइट पर लक्षित ट्रैफ़िक चलाने के लिए हैं।


5। प्रभावशाली विपणन: अपनी वेबसाइट को बढ़ावा देने और बड़े दर्शकों तक पहुंचने में मदद करने के लिए अपने आला में प्रभावितों के साथ साझेदार।


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



8। जनसंपर्क: प्रचार और यातायात उत्पन्न करने के लिए अपनी वेबसाइट से संबंधित नई कहानियों या घोषणाओं को पिच करने के लिए पत्रकारों, ब्लॉगर्स और मीडिया आउटलेट्स तक पहुंचें।


9। अतिथि ब्लॉगिंग: अन्य वेबसाइटों के लिए उच्च गुणवत्ता वाले अतिथि पोस्ट लिखें और ट्रैफ़िक चलाने के लिए लेखक जैव या सामग्री में अपनी वेबसाइट पर एक लिंक वापस शामिल करें।


10। ऑनलाइन समुदाय और मंच: अपने आला से संबंधित ऑनलाइन समुदायों और मंचों में भाग लें और मूल्यवान अंतर्दृष्टि साझा करके, सवालों के जवाब देने और प्रासंगिक होने पर अपनी वेबसाइट को बढ़ावा देकर सदस्यों के साथ जुड़ें।

द्वारा Daisy / देखना | खरीदना | क्रिप्टोक्यूरेंसी के साथ खरीदें


लोग अपने हाथों में NFC प्रत्यारोपण क्यों करते हैं?


ऐसे कई कारण हैं कि लोग अपने हाथों में एनएफसी (क्षेत्र संचार के पास) प्रत्यारोपण को प्रत्यारोपित करने के लिए क्यों चुनते हैं:


1। सुविधा: एनएफसी प्रत्यारोपण व्यक्तियों को आसानी से जानकारी तक पहुंचने, दरवाजे खोलने, भुगतान करने और अपने हाथ की एक साधारण लहर के साथ अन्य कार्यों को करने की अनुमति देते हैं। यह कुंजियों, आईडी कार्ड या स्मार्टफोन के आसपास ले जाने की तुलना में अधिक सुविधाजनक हो सकता है।


2। सुरक्षा: एनएफसी प्रत्यारोपण सुरक्षा की एक अतिरिक्त परत प्रदान कर सकते हैं, क्योंकि उन्हें व्यक्ति के शरीर को सक्रिय करने के लिए भौतिक पहुंच की आवश्यकता होती है। यह उपकरणों या संवेदनशील जानकारी के लिए अनधिकृत पहुंच को रोकने में मदद कर सकता है।


3। तकनीकी प्रयोग: कुछ लोग एनएफसी चिप्स को उभरती हुई प्रौद्योगिकियों के साथ प्रयोग करने और उन्हें अपने दैनिक जीवन में एकीकृत करने के तरीके के रूप में प्रत्यारोपित करने के लिए चुनते हैं।


4। व्यक्तिगत पहचान: एनएफसी प्रत्यारोपण का उपयोग व्यक्तिगत पहचान उद्देश्यों के लिए किया जा सकता है, जैसे कि चिकित्सा जानकारी या संपर्क विवरणों को संग्रहीत करना जो आपात स्थितियों के मामले में आसानी से एक्सेस किया जा सकता है।


5। बायोहाकिंग: कुछ व्यक्ति एनएफसी प्रत्यारोपण को बायोहाकिंग के एक रूप के रूप में देखते हैं, जहां वे अपनी क्षमताओं या अनुभवों को बढ़ाने के लिए प्रौद्योगिकी के साथ अपने शरीर को बढ़ाते हैं।


कुल मिलाकर, एनएफसी चिप्स को उनके हाथों में प्रत्यारोपित करने का निर्णय एक व्यक्तिगत पसंद है जो उनकी व्यक्तिगत वरीयताओं और विश्वासों के आधार पर व्यक्ति से व्यक्ति में भिन्न होता है।


खरीददारी

द्वारा Daisy / देखना | खरीदना | क्रिप्टोक्यूरेंसी के साथ खरीदें


क्या चीनी वास्तव में अस्वस्थ है?


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


द्वारा Daisy / देखना | खरीदना | क्रिप्टोक्यूरेंसी के साथ खरीदें



मुझे अपने वेब डेवलपमेंट के छोटे व्यवसाय के लिए ग्राहक कैसे मिलेंगे?


यहां कुछ रणनीतियाँ हैं जिनका उपयोग आप अपने वेब डेवलपमेंट व्यवसाय के लिए ग्राहकों को आकर्षित करने के लिए कर सकते हैं:


1। एक मजबूत ऑनलाइन उपस्थिति का निर्माण करें: अपनी सेवाओं, पोर्टफोलियो और ग्राहक प्रशंसापत्रों को दिखाने वाली एक पेशेवर वेबसाइट बनाएं। अपने व्यवसाय को बढ़ावा देने और संभावित ग्राहकों के साथ जुड़ने के लिए सोशल मीडिया चैनलों का उपयोग करें।


2। नेटवर्क: क्षेत्र और संभावित ग्राहकों में अन्य पेशेवरों के साथ जुड़ने के लिए उद्योग की घटनाओं, सम्मेलनों और मीटअप में भाग लें। अपने नेटवर्क का विस्तार करने के लिए वेब विकास से संबंधित ऑनलाइन समुदायों और मंचों में शामिल हों।


3। रेफरल प्रोत्साहन की पेशकश करें: सफल रेफरल के लिए छूट या अन्य प्रोत्साहन की पेशकश करके दूसरों को अपनी सेवाओं को संदर्भित करने के लिए संतुष्ट ग्राहकों को प्रोत्साहित करें।


4। अन्य व्यवसायों के साथ सहयोग करें: डिजिटल मार्केटिंग एजेंसियों, ग्राफिक डिजाइनरों, या अन्य पेशेवरों के साथ साझेदार जिन्हें अपने ग्राहकों के लिए वेब विकास सेवाओं की आवश्यकता हो सकती है।


5। विज्ञापन: Google ऐडवर्ड्स, सोशल मीडिया विज्ञापनों के माध्यम से ऑनलाइन विज्ञापन में निवेश करें, या व्यापक दर्शकों तक पहुंचने के लिए विज्ञापन प्रदर्शित करें।


6। कोल्ड आउटरीच: ईमेल या फोन के माध्यम से सीधे संभावित ग्राहकों तक पहुंचें, अपनी सेवाओं और पिछले काम को दिखाते हुए।



8। व्यापार शो और घटनाओं में भाग लें: संभावित ग्राहकों के साथ जुड़ने और अपनी सेवाओं का प्रदर्शन करने के लिए उद्योग व्यापार शो और घटनाओं में भाग लें।


9। मुफ्त परामर्श की पेशकश करें: संभावित ग्राहकों को उनकी आवश्यकताओं पर चर्चा करने के लिए मुफ्त परामर्श प्रदान करें और कैसे आपकी सेवाएं उन्हें अपने लक्ष्यों को प्राप्त करने में मदद कर सकती हैं।


10। समीक्षा और प्रशंसापत्र के लिए पूछें: संतुष्ट ग्राहकों को अपनी वेबसाइट या अन्य समीक्षा प्लेटफार्मों पर समीक्षा और प्रशंसापत्र छोड़ने के लिए प्रोत्साहित करें और विश्वसनीयता बनाने और नए ग्राहकों को आकर्षित करने के लिए।


द्वारा Daisy / देखना | खरीदना | क्रिप्टोक्यूरेंसी के साथ खरीदें


मैं एक पेशेवर ब्लॉग पोस्ट कैसे लिखूं?


एक पेशेवर ब्लॉग पोस्ट लिखने में एक अच्छी तरह से तैयार की गई और सामग्री के आकर्षक टुकड़े को बनाने के लिए कई प्रमुख चरण शामिल हैं। एक पेशेवर ब्लॉग पोस्ट लिखने में मदद करने के लिए यहां कुछ सुझाव दिए गए हैं:

1। एक प्रासंगिक और आकर्षक विषय चुनें: एक विषय की पहचान करके शुरू करें जो आपके दर्शकों के लिए प्रासंगिक है और कुछ ऐसा है जिसके बारे में आप जानकार और भावुक हैं। सुनिश्चित करें कि विषय कुछ ऐसा है जो आपके पाठकों के साथ रुचि और प्रतिध्वनित होगा।

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

3। एक रूपरेखा बनाएं: अपने ब्लॉग पोस्ट के लिए एक रूपरेखा बनाकर अपने विचारों और प्रमुख बिंदुओं को व्यवस्थित करें। यह आपको अपनी सामग्री को एक तार्किक और सुसंगत तरीके से तैयार करने में मदद करेगा, जिससे पाठकों के साथ पालन करना आसान हो जाएगा।

4। एक सम्मोहक परिचय लिखें: अपने ब्लॉग पोस्ट को एक मजबूत और आकर्षक परिचय के साथ शुरू करें जो पाठक का ध्यान आकर्षित करता है। पाठकों को आकर्षित करने के लिए एक हुक का उपयोग करें और उन्हें पढ़ना चाहते हैं।

5। स्पष्ट और संक्षिप्त भाषा का उपयोग करें: अपने ब्लॉग पोस्ट में शब्दजाल या अत्यधिक तकनीकी भाषा का उपयोग करने से बचें। सभी पाठकों के लिए अपनी सामग्री को समझने में आसान बनाने के लिए स्पष्ट और संक्षिप्त तरीके से लिखें।

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

। किसी सहकर्मी या मित्र से इसे प्रकाशित करने से पहले प्रतिक्रिया के लिए अपनी पोस्ट की समीक्षा करने के लिए पूछने पर विचार करें।

8। एक कॉल टू एक्शन जोड़ें: अपने ब्लॉग पोस्ट को एक मजबूत कॉल टू एक्शन के साथ समाप्त करें जो पाठकों को आपकी सामग्री के साथ जुड़ने के लिए प्रोत्साहित करता है, जैसे कि आपके ब्लॉग की सदस्यता लेना, टिप्पणी करना, या सोशल मीडिया पर अपनी पोस्ट साझा करना

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

द्वारा Daisy / देखना | खरीदना | क्रिप्टोक्यूरेंसी के साथ खरीदें


मैं पोस्टफिक्स के साथ एक मेल सर्वर कैसे बनाऊं?


PostFix के साथ एक मेल सर्वर बनाने के लिए, इन चरणों का पालन करें:


1। पोस्टफिक्स इंस्टॉल करें: अपने सर्वर पर पोस्टफिक्स स्थापित करने के लिए अपने पैकेज मैनेजर का उपयोग करें। उदाहरण के लिए, डेबियन/उबंटू पर, आप `sudo apt-get स्थापित पोस्टफिक्स` चला सकते हैं।


2। CONFIGURE POSTFIX: पोस्टफ़िक्स कॉन्फ़िगरेशन फ़ाइलें `/etc/पोस्टफिक्स/` में स्थित हैं। मुख्य कॉन्फ़िगरेशन फ़ाइल `main.cf` है। आप अपनी आवश्यकताओं के अनुसार अपना मेल सर्वर सेट करने के लिए इस फ़ाइल को संपादित कर सकते हैं। कुछ सामान्य कॉन्फ़िगरेशन जो आपको सेट करने की आवश्यकता हो सकती है, उनमें डोमेन नाम, मेल रिले सेटिंग्स, वर्चुअल डोमेन, आदि शामिल हैं।


3। DNS रिकॉर्ड्स सेट करें: मेल डिलीवरी सुनिश्चित करने के लिए, आपको अपने डोमेन के लिए आवश्यक DNS रिकॉर्ड्स (MX और SPF रिकॉर्ड) सेट करना होगा। यदि आवश्यक हो तो सहायता के लिए अपने डोमेन रजिस्ट्रार या DNS प्रदाता से संपर्क करें।


4। वर्चुअल डोमेन और उपयोगकर्ताओं को कॉन्फ़िगर करें: यदि आप अपने मेल सर्वर पर कई डोमेन होस्ट करना चाहते हैं, तो आपको वर्चुअल डोमेन और उपयोगकर्ताओं को कॉन्फ़िगर करना होगा। यह पोस्टफिक्स कॉन्फ़िगरेशन फ़ाइल में `वर्चुअला_एएलआईएएस_मैप्स` और` वर्चुअल_मेलबॉक्स_मैप्स` सेटिंग्स का उपयोग करके किया जा सकता है।


5। अपने मेल सर्वर को सुरक्षित करें: सुनिश्चित करें कि आपका मेल सर्वर फ़ायरवॉल नियम स्थापित करके सुरक्षित है, इनकमिंग और आउटगोइंग मेल के लिए टीएलएस एन्क्रिप्शन का उपयोग करके, और मेल सर्वर के लिए अनुशंसित अन्य सुरक्षा उपायों को लागू करना।


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


समय -समय पर अपडेट करना और अपने मेल सर्वर को बनाए रखने के लिए यह सुनिश्चित करना याद रखें कि यह आसानी से और सुरक्षित रूप से चलता है। किसी भी समस्या या संदिग्ध गतिविधि के लिए मेल सर्वर लॉग की निगरानी करना भी एक अच्छा विचार है।

द्वारा Daisy / देखना | खरीदना | क्रिप्टोक्यूरेंसी के साथ खरीदें


अंडे को उबालने का सबसे अच्छा तरीका क्या है?


यहाँ अंडे उबालने की एक सरल विधि दी गई है:


1। अंडे को सॉस पैन में रखें और उन्हें ठंडे पानी से ढक दें।

2। पानी को उच्च गर्मी पर उबाल लें।

3। एक बार जब पानी उबल रहा है, तो गर्मी को कम करें और अंडे को 9-12 मिनट तक उबाल दें, यह इस बात पर निर्भर करता है कि आप उन्हें कितना अच्छा चाहते हैं।

4। अंडे को गर्मी से हटा दें और तुरंत उन्हें जल्दी से ठंडा करने के लिए बर्फ के पानी के एक कटोरे में स्थानांतरित करें।

5। एक बार ठंडा होने के बाद, आप अपने पूरी तरह से उबले अंडे का आनंद ले सकते हैं।


द्वारा Daisy / देखना | खरीदना | क्रिप्टोक्यूरेंसी के साथ खरीदें


मैं एक अच्छी किताब कैसे लिखूं?


1। एक स्पष्ट विचार या अवधारणा विकसित करें: लिखना शुरू करने से पहले, सुनिश्चित करें कि आपके पास अपनी पुस्तक के लिए एक ठोस विचार है। यह एक कथानक, चरित्र, विषय या सेटिंग हो सकती है जिसे आप अपने लेखन में तलाशना चाहते हैं।


2। एक रूपरेखा बनाएं: लिखना शुरू करने से पहले अपनी पुस्तक के मुख्य प्लॉट पॉइंट्स, वर्ण और थीम को रेखांकित करें। जैसा कि आप लिखते हैं, यह आपको संगठित और केंद्रित रहने में मदद करेगा।


3। लेखन के लिए समर्पित समय निर्धारित करें: लेखन के लिए एक दिनचर्या स्थापित करें और अपनी पुस्तक पर काम करने के लिए प्रत्येक दिन समर्पित समय निर्धारित करें। यह आपको प्रेरित रहने और अपने लेखन पर प्रगति करने में मदद करेगा।


4। बस लिखना शुरू करें: कभी -कभी किताब लिखने का सबसे कठिन हिस्सा शुरू हो रहा है। इस स्तर पर पूर्णता के बारे में चिंता न करें, बस लिखना शुरू करें और अपने विचारों को कागज पर नीचे ले जाएं।


5। एक लेखन समूह या समुदाय में शामिल हों: समर्थन, प्रतिक्रिया और प्रेरणा के लिए एक लेखन समूह या समुदाय में शामिल होने पर विचार करें। लेखन एक एकान्त पीछा हो सकता है, इसलिए साथी लेखकों का एक समुदाय अमूल्य हो सकता है।


6। संपादित करें और संशोधित करें: एक बार जब आप अपनी पुस्तक का एक मसौदा पूरा कर लेते हैं, तो वापस जाएं और अपने लेखन की स्पष्टता, संरचना और प्रवाह को बेहतर बनाने के लिए इसे संशोधित करें और संपादित करें। इसमें आपकी पुस्तक प्रकाशन के लिए तैयार होने से पहले कई ड्राफ्ट और संशोधन शामिल हो सकते हैं।


7। फीडबैक की तलाश करें: अपने काम को दूसरों के साथ साझा करें, जैसे कि बीटा पाठक, लेखन समूह, या पेशेवर संपादकों, अपने लेखन पर प्रतिक्रिया प्राप्त करने के लिए। यह आपको सुधार के लिए क्षेत्रों की पहचान करने और अपनी पुस्तक को मजबूत बनाने में मदद कर सकता है।


8। लिखते रहें: एक किताब लिखना एक मैराथन है, स्प्रिंट नहीं। आगे बढ़ते रहें, समर्पित रहें, और अपनी पुस्तक पर काम करना जारी रखें जब तक कि यह पूरा न हो जाए।


द्वारा Daisy / देखना | खरीदना | क्रिप्टोक्यूरेंसी के साथ खरीदें


मैं एक आज्ञाकारी ईमेल सूची और अनसब्सक्राइब लिंक के साथ ईमेल कैसे भेज सकता हूं?


एक आज्ञाकारी सूची और एक सख्त सदस्यता समाप्त लिंक के साथ एक ईमेल भेजने के लिए, आपको इन चरणों का पालन करना चाहिए:


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


2। अपने ईमेल में एक स्पष्ट और प्रमुख सदस्यता समाप्त लिंक शामिल करें। सुनिश्चित करें कि यह ढूंढना और क्लिक करना आसान है, और यह प्राप्तकर्ताओं को सीधे एक पृष्ठ पर ले जाता है जहां वे आसानी से आपकी मेलिंग सूची से अनसब्सक्राइब कर सकते हैं।


3। अनसब्सक्राइब लिंक "टाइटिंग" बनाने के लिए, आप एक एकल-क्लिक सदस्यता समाप्त विकल्प का उपयोग कर सकते हैं। इसका मतलब यह है कि प्राप्तकर्ता आपके ईमेल से केवल एक क्लिक के साथ सदस्यता समाप्त कर सकते हैं, बिना किसी अतिरिक्त फॉर्म को भरने या कोई व्यक्तिगत जानकारी प्रदान करने के लिए।


4। ईमेल भेजते समय, संदेश को निजीकृत करना सुनिश्चित करें और यदि संभव हो तो नाम से प्राप्तकर्ता को संबोधित करें। यह सगाई को बढ़ाने में मदद कर सकता है और ईमेल को प्राप्तकर्ता के लिए अधिक प्रासंगिक महसूस कर सकता है।


5। ईमेल भेजने से पहले, यह सुनिश्चित करने के लिए परीक्षण करें कि सदस्यता समाप्त लिंक ठीक से काम कर रही है और यह ईमेल सभी उपकरणों और ईमेल ग्राहकों पर अच्छा लगता है।


इन चरणों का पालन करके, आप यह सुनिश्चित करने के लिए एक ईमेल भेज सकते हैं कि एक आज्ञाकारी सूची और एक सख्त सदस्यता समाप्त लिंक यह सुनिश्चित करने के लिए कि आपके प्राप्तकर्ताओं के पास एक सकारात्मक अनुभव है और आसानी से आपसे आगे के ईमेल प्राप्त करने का विकल्प चुन सकता है।

द्वारा Daisy / देखना | खरीदना | क्रिप्टोक्यूरेंसी के साथ खरीदें


मैं गतिरोध कैसे पहनूं?


1। अपने बालों को वांछित लंबाई तक बढ़ाकर शुरू करें। आपके बाल सबसे अच्छे परिणामों के लिए कम से कम 2-3 इंच लंबा होना चाहिए।


2। अपने बालों को छोटे, यहां तक ​​कि एक कंघी का उपयोग करके भागों में भाग लें। वर्गों का आकार आपके dreadlocks के आकार को निर्धारित करेगा, इसलिए एक आकार चुनना सुनिश्चित करें जिसके साथ आप सहज हैं।


3। बालों के प्रत्येक खंड को मुड़कर और जड़ों की ओर कसकर खींचकर वापस शुरू करें। यह बालों में गांठें पैदा करेगा, जो अंततः dreadlocks में बन जाएगा।


4। बालों के प्रत्येक खंड पर मोम या जेल लागू करें और जगह में समुद्री मील को पकड़ने में मदद करें और बालों को एक साथ चटाई के लिए प्रोत्साहित करें।


5। जब तक आप अपना पूरा सिर पूरा नहीं कर लेते, तब तक बालों के प्रत्येक खंड को बैककॉम करना और घुमाना जारी रखें। यह प्रक्रिया समय लेने वाली हो सकती है, इसलिए धैर्य रखें और आवश्यकतानुसार ब्रेक लें।


6। एक बार जब आपके सभी बाल मुड़ गए और बैककॉम हो गए, तो इसे कुछ दिनों के लिए बैठने दें ताकि गांठों को कसने और ड्रेडलॉक में बनाने की अनुमति दी जा सके।



8। अपने dreadlocks को साफ -सुथरा और सुव्यवस्थित रखने के लिए, सोते समय या गंदे वातावरण में उन्हें कवर करने के लिए दुपट्टा या बंदना का उपयोग करने पर विचार करें। नियमित रखरखाव और रखरखाव आपके dreadlocks को स्वस्थ और जीवंत रहने में मदद करेगा।

द्वारा Daisy / देखना | खरीदना | क्रिप्टोक्यूरेंसी के साथ खरीदें


मुझे एल शब्द पर एक सेब एल का उपयोग क्यों करना चाहिए?


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


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


कुल मिलाकर, एल वर्ड में एक ऐप्पल एल का उपयोग करके आपको एक प्रीमियम स्ट्रीमिंग अनुभव प्रदान कर सकता है जो आपको शो की मनोरम दुनिया में खुद को पूरी तरह से विसर्जित करने की अनुमति देगा।

द्वारा Daisy / देखना | खरीदना | क्रिप्टोक्यूरेंसी के साथ खरीदें



माइग्रेन का क्या कारण है और उनका इलाज कैसे किया जाता है?


माइग्रेन गंभीर सिरदर्द होते हैं जो अक्सर अन्य लक्षणों जैसे कि मतली, प्रकाश और ध्वनि के प्रति संवेदनशीलता और दृश्य गड़बड़ी के साथ होते हैं। माइग्रेन का सटीक कारण पूरी तरह से समझा नहीं गया है, लेकिन यह माना जाता है कि यह मस्तिष्क में रक्त प्रवाह और रसायनों में परिवर्तन से संबंधित है।


माइग्रेन के लिए उपचार में आमतौर पर जीवनशैली परिवर्तन, दवाओं और वैकल्पिक उपचारों का संयोजन शामिल होता है। कुछ सामान्य उपचार विकल्पों में शामिल हैं:


1। इबुप्रोफेन या एसिटामिनोफेन जैसे ओवर-द-काउंटर दर्द निवारक लेना

2। पर्चे दवाएं विशेष रूप से माइग्रेन के इलाज के लिए डिज़ाइन की गई हैं, जैसे कि ट्रिप्टान और एर्गोटामाइन

3। ट्रिगर से बचना जैसे कुछ खाद्य पदार्थ, तनाव, नींद की कमी, या हार्मोनल परिवर्तन

4। गहरी श्वास या ध्यान जैसी विश्राम तकनीकों का अभ्यास करना

5। सिर या गर्दन पर गर्म या ठंडे पैक लगाने

6। नियमित व्यायाम करना और एक स्वस्थ आहार बनाए रखना


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

द्वारा Daisy / देखना | खरीदना | क्रिप्टोक्यूरेंसी के साथ खरीदें


सार्वजनिक रूप से मास्क पहनना सुरक्षित क्यों है?


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


द्वारा Daisy / देखना | खरीदना | क्रिप्टोक्यूरेंसी के साथ खरीदें


मैं Django के साथ एक पूर्ण स्टैक वेब ऐप कैसे बनाऊं?


Django के साथ एक पूर्ण स्टैक वेब ऐप बनाने में कई चरण शामिल हैं। यहां प्रक्रिया की सामान्य रूपरेखा दी गई है:


1। Django सेट करें: सबसे पहले, अपने कमांड लाइन में `pip इंस्टॉल Django` चलाकर Django स्थापित करें। फिर, `Django-Admin StartProject myProject` चलाकर एक नया Django प्रोजेक्ट बनाएं।


2। Django Apps बनाएँ: Django ऐप्स आपकी परियोजना के मॉड्यूलर घटक हैं जो विशिष्ट उद्देश्यों की सेवा करते हैं। आप विभिन्न कार्यात्मकताओं को संभालने के लिए अपनी परियोजना के भीतर कई ऐप बना सकते हैं।


3। मॉडल को परिभाषित करें: Django में मॉडल का उपयोग आपके डेटाबेस तालिकाओं की संरचना को परिभाषित करने के लिए किया जाता है। प्रत्येक ऐप के मॉडल.यू फाइल में कक्षाओं को परिभाषित करके अपने मॉडल बनाएं।


4। दृश्य बनाएं: Django में दृश्य पायथन फ़ंक्शन हैं जो उपयोगकर्ता अनुरोधों को संभालते हैं और प्रतिक्रियाओं को वापस करते हैं। प्रत्येक ऐप के व्यूज़.पी फ़ाइल में फ़ंक्शन बनाकर अपने ऐप के लिए दृश्य को परिभाषित करें।


5। URL सेट करें: Django में URL का उपयोग विशिष्ट विचारों के लिए उपयोगकर्ता अनुरोधों को मैप करने के लिए किया जाता है। प्रत्येक ऐप में एक urls.py फ़ाइल बनाकर अपने ऐप के लिए URL पैटर्न को परिभाषित करें और उन्हें अपनी परियोजना की मुख्य urls.py फ़ाइल में शामिल करें।


6। टेम्प्लेट बनाएँ: Django में टेम्प्लेट का उपयोग HTML पृष्ठों को उत्पन्न करने के लिए किया जाता है जो उपयोगकर्ता के ब्राउज़र को भेजे जाते हैं। प्रत्येक ऐप में एक टेम्प्लेट फ़ोल्डर बनाकर और अलग -अलग टेम्प्लेट फ़ाइलों में HTML कोड लिखकर अपने ऐप के लिए HTML टेम्प्लेट बनाएं।


7। स्थिर फ़ाइलों की सेवा करें: स्टेटिक फाइलें जैसे कि सीएसएस, जावास्क्रिप्ट, और छवियां Django में गतिशील सामग्री से अलग से परोसी जाती हैं। प्रत्येक ऐप में स्थिर फ़ोल्डर से स्थिर फ़ाइलों की सेवा करने के लिए अपनी प्रोजेक्ट की सेटिंग्स में स्थिर फ़ाइल सेटिंग्स को कॉन्फ़िगर करें।


8। डेटाबेस को कॉन्फ़िगर करें: डेटाबेस इंजन, नाम, उपयोगकर्ता, पासवर्ड और होस्ट सहित अपनी प्रोजेक्ट की सेटिंग्स में अपनी डेटाबेस सेटिंग्स सेट करें।


9। डेटाबेस को माइग्रेट करें: अपने मॉडल के आधार पर डेटाबेस माइग्रेशन बनाने और लागू करने के लिए `पायथन मैनेज।


10। सर्वर चलाएं: अपने कमांड लाइन में `पायथन Manage.py Runserver` चलाकर Django डेवलपमेंट सर्वर शुरू करें। अब आपको अपने ब्राउज़र में अपने वेब ऐप को `http: //127.0.0.1: 8000/` पर एक्सेस करने में सक्षम होना चाहिए।


Django के साथ एक पूर्ण स्टैक वेब ऐप बनाने के लिए ये बुनियादी कदम हैं। यहां से, आप प्रमाणीकरण, प्राधिकरण, एपीआई समापन बिंदु, परीक्षण, और बहुत कुछ जोड़कर अपने ऐप को अनुकूलित और विस्तारित कर सकते हैं।


द्वारा Daisy / देखना | खरीदना | क्रिप्टोक्यूरेंसी के साथ खरीदें


सुरक्षा कैमरा होने के क्या लाभ हैं?


1। आपराधिक गतिविधि की निवारक - सुरक्षा कैमरे संभावित अपराधियों के लिए एक निवारक के रूप में कार्य कर सकते हैं, क्योंकि वे अपराध करने की संभावना कम हैं यदि वे जानते हैं कि उन्हें देखा जा रहा है।


2। निगरानी और निगरानी - सुरक्षा कैमरे आपको अपनी संपत्ति की निगरानी करने और वास्तविक समय में किसी भी संदिग्ध गतिविधि पर नज़र रखने की अनुमति देते हैं, जिससे चोरी, बर्बरता, या अन्य अपराधों को रोकने में मदद मिलती है।


3। एक अपराध के मामले में सबूत - दुर्भाग्यपूर्ण घटना में कि आपकी संपत्ति पर एक अपराध होता है, सुरक्षा कैमरा फुटेज कानून प्रवर्तन और बीमा दावों के लिए महत्वपूर्ण सबूत प्रदान कर सकता है।


4। रिमोट एक्सेस - कई सुरक्षा कैमरे अब दूरस्थ देखने की क्षमता प्रदान करते हैं, जिससे आप अपने स्मार्टफोन या कंप्यूटर का उपयोग करके कहीं से भी अपनी संपत्ति पर जांच कर सकते हैं।


5। मन की शांति - सुरक्षा कैमरे स्थापित होने से मन की शांति प्रदान की जा सकती है, यह जानकर कि आपकी संपत्ति की निगरानी की जा रही है और संभावित खतरों का पता लगाया जा रहा है और दर्ज किया जा रहा है।


द्वारा Daisy / देखना | खरीदना | क्रिप्टोक्यूरेंसी के साथ खरीदें


मैंने अभी जन्म नियंत्रण लेना शुरू कर दिया है। सबसे आम दुष्प्रभाव क्या हैं?


जन्म नियंत्रण की गोलियों के सबसे आम दुष्प्रभावों में शामिल हैं:


1। मतली

2। स्तन कोमलता

3। सिरदर्द

4। वजन बढ़ना

5। मूड में बदलाव

6। स्पॉटिंग या सफलता रक्तस्राव

7। कामेच्छा में परिवर्तन 

8। मुँहासे 

9। ब्लोटिंग 


यह ध्यान रखना महत्वपूर्ण है कि प्रत्येक व्यक्ति अलग -अलग दुष्प्रभावों का अनुभव कर सकता है, और कुछ व्यक्ति किसी भी तरह का अनुभव नहीं कर सकते हैं। यदि आपको अपने जन्म नियंत्रण के दुष्प्रभावों के बारे में चिंता है, तो अपने स्वास्थ्य सेवा प्रदाता के साथ बात करना सबसे अच्छा है।

द्वारा Daisy / देखना | खरीदना | क्रिप्टोक्यूरेंसी के साथ खरीदें




https://glamgirlx.com -


(छवि डाउनलोड करने के लिए क्लिक करें या टैप करें)
पेशेवर मनोरंजन, फोटो, वीडियो, ऑडियो, लाइवस्ट्रीमिंग और कैजुअल गेमप्ले, साथ ही आईडी स्कैनिंग, वेब डेवलपमेंट और सरोगेसी सर्विसेज।

मुझे इस पते का उपयोग करके बिटकॉइन में एक टिप छोड़ दें: 3KhDWoSve2N627RiW8grj6XrsoPT7d6qyE

© Glam Girl X 2025

सेवा की शर्तें