कोर्स
Django एक व्यापक रूप से उपयोग किया जाने वाला नि:शुल्क, ओपन-सोर्स, और उच्च-स्तरीय वेब डेवलपमेंट फ्रेमवर्क है। यह डेवलपर्स को कई सुविधाएँ "आउट ऑफ द बॉक्स" देता है, जिससे डेवलपमेंट तेज़ हो सकता है। साथ ही, इससे बनाए गए वेबसाइटें सुरक्षित, स्केलेबल और मेंटेन योग्य रहती हैं।
लक्ष्य
इस ट्यूटोरियल का लक्ष्य एक ब्लॉग एप्लिकेशन बनाना है, जहाँ ब्लॉग कंटेंट को प्रशासन पैनल के माध्यम से बनाया और अपडेट किया जा सके। ब्लॉग की सामग्री पेज पर दिखाई जाएगी और आवश्यकता होने पर हटाई भी जा सकेगी। संपूर्ण एप्लिकेशन CRUD (Create, Read, Update, Delete) फंक्शनैलिटी प्रदान करता है।
यह ट्यूटोरियल किसी भी फ्रंटएंड तकनीक जैसे Javascript, CSS आदि का उपयोग नहीं करता, बल्कि उन बुनियादी और आवश्यक अवधारणाओं पर केंद्रित है जिनकी आवश्यकता हर Django वेब डेवलपमेंट में होती है।
आवश्यक सेटअप
- Git Bash: सभी ऑपरेटिंग सिस्टम के उपयोगकर्ता इसे इस्तेमाल कर सकते हैं। सभी Django संबंधित कमांड और Unix कमांड इसके माध्यम से चलाए जाते हैं। Git Bash डाउनलोड करने के लिए: Click Me।
- टेक्स्ट-एडिटर: कोई भी टेक्स्ट-एडिटर जैसे Sublime Text या Visual Studio Code उपयोग किया जा सकता है। निम्नलिखित प्रोजेक्ट के लिए Sublime Text का उपयोग किया गया है।
- Python 3: Python का नवीनतम संस्करण यहाँ से डाउनलोड करें: Download Python।
नोट: यदि आप Python की बुनियादी समझ रखते हैं और लूप, फंक्शन, क्लासेज आदि के बारे में जानते हैं, और bash या कमांड लाइन का कुछ ज्ञान रखते हैं, तो आप इस ट्यूटोरियल को आसानी से फॉलो कर पाएँगे।
वर्चुअल एन्वायरनमेंट
वर्चुअल एन्वायरनमेंट Python संबंधित प्रोजेक्ट्स के लिए निर्भरताओं के रूप में कार्य करता है। यह एक स्व-निहित कंटेनर या आइसोलेटेड एन्वायरनमेंट की तरह काम करता है जहाँ किसी विशेष प्रोजेक्ट से संबंधित सभी Python पैकेज और उनके आवश्यक संस्करण इंस्टॉल किए जाते हैं। क्योंकि Python, Django, या पैकेजों के नए संस्करण आते रहते हैं, वर्चुअल एन्वायरनमेंट की मदद से आप अपने प्रोजेक्ट-विशिष्ट पुराने संस्करणों के साथ काम कर सकते हैं। संक्षेप में, आप एक ही कंप्यूटर पर Django 2.0 से संबंधित एक स्वतंत्र प्रोजेक्ट और Django 3.0 से संबंधित दूसरा स्वतंत्र प्रोजेक्ट शुरू कर सकते हैं।
नोट: वर्चुअल एन्वायरनमेंट बनाने के कई तरीके हैं, लेकिन नीचे केवल एक तरीका दिखाया गया है।
वर्चुअल एन्वायरनमेंट बनाने के चरण
- आप अपने Desktop पर 'mkdir' कमांड का उपयोग करके 'project-blog' नामक नया डायरेक्टरी बना सकते हैं।
-
'cd' कमांड का उपयोग करके डायरेक्टरी बदलकर 'project-blog' में जाएँ।

-
'python -m venv env' का उपयोग करके वर्चुअल एन्वायरनमेंट बनाया जाता है, जहाँ env हमारा वर्चुअल एन्वायरनमेंट है जिसे 'ls' कमांड से देखा जा सकता है।

-
अपने वर्चुअल एन्वायरनमेंट को सक्रिय करना: वर्चुअल एन्वायरनमेंट को 'source' कमांड का उपयोग करके सक्रिय किया जा सकता है, जहाँ 'Scripts' फ़ोल्डर को सक्षम/सक्रिय करना होता है।

यदि आपने वर्चुअल एन्वायरनमेंट को सफलतापूर्वक सक्रिय कर लिया है, तो ब्रैकेट में 'env' दिखाई देगा। - Django इंस्टॉल करना: आप अपने विशेष वर्चुअल एन्वायरनमेंट में Django इंस्टॉल करने के लिए 'pip install django' का उपयोग कर सकते हैं।

नोट: Linux और Mac उपयोगकर्ताओं को कमांड में विशेष रूप से 'python3' का उपयोग करना होगा क्योंकि उनके कंप्यूटर में Python 2 पहले से इंस्टॉल रहता है। साथ ही, अभी के लिए संस्करण 3 का उपयोग करना बेहतर है, क्योंकि 2020 के बाद Python ने संस्करण 2 का समर्थन बंद कर दिया है।
Django प्रोजेक्ट बनाना
- पहला चरण अपना प्रोजेक्ट 'django-admin startproject
project_name' कमांड का उपयोग करके बनाना है, जहाँ आपके मामले में 'project_name' 'django_blog' है। साथ ही, यह हमारे नए बनाए गए प्रोजेक्ट के अंदर कई फाइलें बनाएगा, जिनके बारे में आप आवश्यकता होने पर Django दस्तावेज़ में और पढ़ सकते हैं।
- 'cd' कमांड का उपयोग करके नई बनाई गई प्रोजेक्ट डायरेक्टरी में जाएँ और 'ls' कमांड का उपयोग करके बनी हुई फाइलें देखें।

- आप 'python manage.py runserver' का उपयोग करके अपना प्रोजेक्ट चला सकते हैं।

- प्रोजेक्ट को अपने पसंदीदा ब्राउज़र (Google Chrome, Mozilla Firefox, आदि) में देखा जा सकता है। अपने ब्राउज़र में जाएँ और URL में 'localhost:8000' या '127.0.0.1:8000' टाइप करें, जैसा नीचे दिखाया गया है।

नोट: ऊपर जैसा पेज पाने के लिए, बैश में सर्वर बैकग्राउंड में चलना चाहिए। साथ ही, आवश्यकता होने पर आप Windows/Linux में 'Ctr+C' और Mac में 'Cmd+C' दबाकर सर्वर को मैन्युअली बंद कर सकते हैं।
नया Django प्रोजेक्ट शुरू करना
Django में नया प्रोजेक्ट बनाने के लिए हमेशा दो-चरणीय प्रक्रिया होती है, जो नीचे दिखाई गई है।
- पहला चरण 'python manage.py startapp
app_name' कमांड का उपयोग करके एक ऐप बनाना है, जहाँ आपके मामले में app_name 'blog' है। Django में एक ही प्रोजेक्ट में कई ऐप्स हो सकते हैं, जहाँ प्रत्येक ऐप किसी विशिष्ट फंक्शनैलिटी की सेवा देता है।
- दूसरा चरण हमारे प्रोजेक्ट को नए बनाए गए ऐप के बारे में बताना है, जिसके लिए 'django_blog/settings.py' की INSTALLED_APP सेक्शन में बदलाव करना होगा।

हमारे मॉडलों में बदलाव
Django डिफॉल्ट डेटाबेस के रूप में 'SQLite' का उपयोग करता है, जो हल्का है और छोटे प्रोजेक्ट्स के लिए प्रयुक्त होता है, जो इस प्रोजेक्ट के लिए उपयुक्त है। यह 'Object Relational Mapper (ORM)' का उपयोग करता है, जो डेटाबेस के साथ काम करना बहुत आसान बनाता है। वास्तविक डेटाबेस कोड नहीं लिखा जाता, बल्कि 'models.py' में 'class' कीवर्ड की मदद से डेटाबेस टेबल्स बनाई जाती हैं।
'blog/models.py' के अंदर, आपको 'Post' नाम का नया मॉडल बनाना होगा। यह एक क्लास है जो बाद में डेटाबेस टेबल बन जाएगी और फिलहाल 'models.Model' से इनहेरिट करती है। एक सामान्य ब्लॉग में, किसी 'Post' में एक शीर्षक होता है, जो CharField नाम का फील्ड होगा। यह टेक्स्ट-आधारित कॉलम है और इसमें अनिवार्य आर्ग्युमेंट 'max_length' देना होता है, जो आपके मामले में 50 है। साथ ही, एक और फील्ड 'content' है, जो TextField है, जिसमें 'Post' का विस्तृत टेक्स्ट होता है, जैसा कि एक मानक ब्लॉग में होता है। डबल अंडरस्कोर ('str') मेथड परिभाषित है, जो 'title' फील्ड को ओवरराइड करता है और किसी ऑब्जेक्ट के बजाय वास्तविक 'title' का नाम लौटाता है। 
माइग्रेशन बनाना
'python manage.py makemigrations' पहला चरण है जो निर्माण के बाद 'models.py' को पढ़ता है। यह 'migrations' नाम का नया फ़ोल्डर बनाता है, जहाँ '0001_initial.py' नाम की फाइल होती है, जो डेटाबेस के बीच पोर्टेबल होती है। 
डेटाबेस में माइग्रेट करना
यह दूसरा चरण है जहाँ 'python manage.py migrate' नए बनाए गए 'migrations' फ़ोल्डर को पढ़ता है और डेटाबेस बनाता है, तथा मॉडल में परिवर्तन होने पर डेटाबेस को विकसित करता है। 
एडमिन में पंजीकरण
आइए 'blog/admin.py' पर जाएँ और 'from .models import Post' का उपयोग करके 'Post' नामक मॉडल को इम्पोर्ट करें। मॉडलों को एडमिन में पंजीकृत करने के लिए कमांड है 'admin.site.register(Post)'।

सुपरयूज़र बनाना और प्रशासन पैनल में देखना
'admin' पैनल तक पहुँचने से पहले आपको एक सुपरयूज़र बनाना होगा। ऐसा करने के लिए 'winpty python manage.py createsuperuser' का उपयोग करें। 
नोट: winpty Windows कंसोल प्रोग्राम्स से संचार के लिए उपयोग किया जाने वाला bash-विशिष्ट कमांड है।
bash में python manage.py runserver कमांड से अपना सर्वर बैकग्राउंड में चलाएँ। ब्राउज़र पर जाएँ और URL में निम्नलिखित टाइप करें। 
इसके बाद अपनी विवरण भरें, यानी वह उपयोगकर्ता नाम और पासवर्ड जो आपने पहले बनाया था: 
इसके बाद अपने एडमिन पैनल में हमारे नए बनाए गए मॉडल 'Post' को देखें। 
'Add' बटन पर क्लिक करके 'Post' की सामग्री बदलें। जानकारी भरें और 'Save' करके विवरण सहेजें। 
व्यूज़ और URLs में बदलाव
'blog/views.py' पर जाएँ और नीचे दिखाए अनुसार बदलाव करें। 'blog_list' नामक फंक्शन जोड़ें, जो request लेता है। एक क्वेरी की जाती है जो 'Post.objects.all()' के माध्यम से बनाए गए सभी ऑब्जेक्ट्स को प्राप्त करती है और उसे post में सहेजती है। 'context' नाम का नया डिक्शनरी बनाया गया है जहाँ ऑब्जेक्ट को की के रूप में पास किया जा सकता है और टेम्पलेट 'blog-list.html' के माध्यम से प्राप्त किया जा सकता है, जो render की मदद से रिस्पॉन्स लौटाकर किया जाता है। 
'django_blog/blog' में 'urls.py' नाम की नई फाइल बनाएँ और निम्नलिखित बदलाव जोड़ें। व्यू 'blog_list' के लिए रिलेटिव इम्पोर्ट है और साथ ही 'urlpatterns' है, जो वेबसाइट पर किसी विशेष पेज के पथों की सूची है। फिलहाल, <b'path' में खाली स्ट्रिंग और व्यू का नाम है। 
आइए 'django_blog/urls.py' पर जाएँ और include को इम्पोर्ट करें तथा 'urlpatterns' में बदलाव करें। फिर include के माध्यम से अपने ऐप URLs का path जोड़ें। साथ ही, जब उपयोगकर्ता 'posts/' से रूट करेगा, तो उसे हमारे 'blog.urls' पर निर्देशित किया जाएगा।
टेम्पलेट बनाना और बदलना
आइए एक templates फ़ोल्डर बनाते हैं जो सामान्यतः 'HTML' रखता है और अपनी टेम्पलेटिंग भाषा 'Jinja2' का उपयोग करता है। फ़ोल्डर का नामकरण 'templates/blog/blog_list.html' के रूप में होना चाहिए, जो परंपरा है। 
आप नीचे देख सकते हैं कि 'HyperTextMarkup Language(HTML) से संबंधित सिंटैक्स है जहाँ बड़े शीर्षक के लिए 'h1' और अनऑर्डर्ड लिस्ट (ul) के साथ सूची तत्व li है। साथ ही, 'Jinja 2' से संबंधित 'for' लूप सिंटैक्स का उपयोग किया गया है, जहाँ 'blog_list' नामक ऑब्जेक्ट को की के रूप में 'blog/views.py' से पास किया गया है और 'list' नामक प्रत्येक तत्व पर इटरेट किया गया है। 
वेबपेज पर 'First Post' नामक 'title' देखें। 
आइए एडमिन पैनल से ऊपर की तरह एक और जानकारी जोड़ें और अपनी दूसरी पोस्ट का title 'Second Post' रखें। 
जानकारी जोड़ने और होमपेज को रीलोड करने के बाद, जानकारी अपडेट हो जाएगी। 
प्रत्येक पोस्ट का विवरण
आप प्रत्येक व्यक्तिगत पेज बनाएँगे जिसमें पोस्ट के शीर्षक और उसकी सामग्री से संबंधित जानकारी होगी। 'url' होगा "localhost:8000/posts/'id'" जहाँ id प्रत्येक 'Post' से जुड़ी यूनिक संख्या या प्राथमिक कुंजी को दर्शाता है, जिसे Django स्वयं देता है।
आइए 'blog/view.py' में 'blog_detail' नाम का एक फंक्शन बनाएँ, जो पैरामीटर के रूप में id स्वीकार करता है। साथ ही, एक क्वेरी की जाती है जो केवल विशिष्ट id को प्राप्त करती है और 'each_post' में सहेजती है। ऊपर की तरह ही, आवश्यक जानकारी को 'blog_detail.html' में context के रूप में पास किया जाता है। 
'blog/urls.py' में url बदला गया है जहाँ path में '<id>' है, जो पूर्णांक रूप में यूनिक id स्वीकार करता है। मान लें कि उपयोगकर्ता 'posts/' पर आता है तो उसे सभी पोस्ट दिखती हैं, लेकिन जब वह 'posts/1' पर जाता है, तो केवल पहली बनाई गई पोस्ट की जानकारी दिखती है। 
आइए एक नई फाइल 'blog/blog_detail.html' बनाएँ, और निम्नलिखित बदलाव करें। क्योंकि blog_detail context के रूप में पास किया गया है, इसलिए 'title' और 'content' को डॉट नोटेशन का उपयोग करके एक्सेस किया जा सकता है। 
अपने ब्राउज़र के URL पर जाएँ और वैसा ही टाइप करें ताकि व्यक्तिगत पोस्ट मिलें। क्योंकि पहली बनाई गई जानकारी के लिए 'id' '1' है, दूसरी जानकारी के लिए '2' होगी और इसी प्रकार नई जानकारी के लिए आगे बढ़ेगी। 
पोस्ट हटाना
आइए blog_delete परिभाषित करें, जो request और id लेता है। साथ ही, एक क्वेरी की जाती है जहाँ 'Post.objects.get(id=id)' यूनिक id वाले ऑब्जेक्ट को प्राप्त करता है और उसे each_post में सहेजता है। उसके बाद 'each_post.delete()' कॉल किया जाता है ताकि 'Post' हट जाए। अंत में 'django.http' मॉड्यूल से HttpResponseRedirect इम्पोर्ट किया जाता है, जिसका उपयोग पेज को '/posts/' पर रीडायरेक्ट करने के लिए किया जाता है। 
. 'urls.py' में 'blog_delete' को इम्पोर्ट करें और path को '<id>/delete' पर सेट करें, जहाँ अंत में delete के साथ id उस विशेष ऑब्जेक्ट या जानकारी को हटा देगी। 
आइए 'urls.py' में निम्नलिखित टाइप करके अपनी पोस्ट हटाएँ। 
अंत में, जब 'posts/1/delete/' कॉल किया जाता है, जहाँ होमपेज पर केवल एक पोस्ट मौजूद है, तो पेज '/posts' पर रीडायरेक्ट हो जाता है। 
निष्कर्ष
ट्यूटोरियल पूरा करने पर बधाई! आपने Django वेब डेवलपमेंट की बुनियादी बातें और CRUD फंक्शनैलिटी के बारे में सीखा। किसी विशेष विषय में अधिक विवरण के लिए Django Documentation देखें।
संदर्भ:
Python में Django वेब डेवलपमेंट FAQs
Django क्या है?
Django Python में लिखा हुआ एक नि:शुल्क और ओपन-सोर्स वेब फ्रेमवर्क है, जो model-template-view आर्किटेक्चरल पैटर्न का अनुसरण करता है। यह डेवलपर्स को एप्लिकेशन को अवधारणा से पूर्णता तक यथासंभव जल्दी ले जाने में मदद करने के लिए डिज़ाइन किया गया है।
Django की कुछ विशेषताएँ क्या हैं?
Django की कुछ विशेषताओं में हल्का और मॉड्यूलर डिज़ाइन, एक शक्तिशाली ORM (Object-Relational Mapper) जो डेटाबेस इंटरेक्शन को सरल बनाता है, और उपयोगकर्ता प्रमाणीकरण व प्रबंधन, फॉर्म हैंडलिंग, और कंटेंट एडमिनिस्ट्रेशन जैसे सामान्य वेब डेवलपमेंट कार्यों के लिए बिल्ट-इन सपोर्ट शामिल है।
मैं Django के साथ कैसे शुरू करूँ?
Django शुरू करने के लिए, आपको अपने मशीन पर Python और Django लाइब्रेरी इंस्टॉल करनी होगी। इसके बाद आप django-admin startproject कमांड का उपयोग करके नया Django प्रोजेक्ट बना सकते हैं और Django की बिल्ट-इन सुविधाओं और टूल्स का उपयोग करके अपना एप्लिकेशन बनाना शुरू कर सकते हैं।
मैं Django में डेटाबेस कैसे बनाऊँ?
Django डिफॉल्ट रूप से SQLite डेटाबेस इंजन का उपयोग करता है, जो Python के साथ शामिल होता है। आप अपने Django ऐप में मॉडल्स परिभाषित करके और migrate कमांड चलाकर नया डेटाबेस बना सकते हैं। यह आपके मॉडलों के डेटा को स्टोर करने के लिए आवश्यक टेबल्स डेटाबेस में बना देगा।
मैं Django में views और templates कैसे बनाऊँ?
Django में views वे फंक्शन होते हैं जो HTTP रिक्वेस्ट को हैंडल करते हैं और HTTP रिस्पॉन्स लौटाते हैं। आप अपने Django ऐप में ऐसे फंक्शन परिभाषित करके views बना सकते हैं जो एक request लेते हैं और एक response लौटाते हैं। टेम्पलेट्स HTML फाइलें होती हैं जिनमें डायनामिक कंटेंट के लिए placeholders होते हैं। आप Django की टेम्पलेट भाषा का उपयोग करके डायनामिक कंटेंट टेम्पलेट्स में डाल सकते हैं और उन्हें अपने views में रेंडर कर सकते हैं।
मैं Django एप्लिकेशन को कैसे डिप्लॉय करूँ?
होस्टिंग जरूरतों और प्राथमिकताओं के आधार पर Django एप्लिकेशन को डिप्लॉय करने के कई तरीके हैं। कुछ सामान्य विकल्पों में Heroku या AWS जैसे क्लाउड प्लेटफ़ॉर्म पर डिप्लॉय करना, Apache या Nginx जैसे वेब सर्वर का उपयोग करना, या PythonAnywhere या DigitalOcean जैसी होस्टिंग सेवाओं का उपयोग करना शामिल है।