"यह लेख संशोधित किया गया है और Django के नवीनतम संस्करण के साथ अद्यतन किया गया है - मई 2016"
में भाग 1 इस श्रृंखला में आपने सीखा कि कैसे एक आभासी वातावरण में Django को स्थापित और कॉन्फ़िगर किया जाए और आपने अपनी पहली परियोजना का कंकाल बनाया।
में फिर भाग 2 हमने एक एप्लिकेशन और एक मॉडल बनाया है पद ऑब्जेक्ट्स, जिन्हें हमने बाद में डेटाबेस में माइग्रेट किया। अंत में, हमने आपको दिखाया कि अपने नए बनाए गए एप्लिकेशन को Django प्रशासन यूजर इंटरफेस में कैसे एकीकृत किया जाए।
ये लेख Django श्रृंखला का हिस्सा हैं:
वर्चुअल वातावरण के साथ Django वेब फ्रेमवर्क को स्थापित और कॉन्फ़िगर करना - भाग 1
पायथन मूल बातें की समीक्षा करना और Django के साथ अपना पहला वेब एप्लिकेशन बनाना - भाग 2
इस अंतिम गाइड में हम चर्चा करेंगे कि यूआई का उपयोग करके एप्लिकेशन को कैसे एक्सेस किया जाए और इसे सभी प्रकार के उपकरणों के लिए मोबाइल के अनुकूल कैसे बनाया जाए। उसने कहा, चलो शुरू करते हैं।
प्रकार की वस्तुओं को बनाने के लिए पद (याद रखें कि वह मॉडल है जिसे हमने परिभाषित किया है
भाग 2 इस श्रृंखला के), हम Django व्यवस्थापक इंटरफ़ेस का उपयोग करेंगे।सुनिश्चित करें कि Django अंतर्निहित वेब सर्वर पोर्ट पर चल रहा है 8000 (या आपकी पसंद का कोई अन्य) बाहरी से निम्न आदेश चलाकर: myfirstdjangoproject निर्देशिका:
# सीडी ~/myfirstdjangoenv/myfirstdjangoproject. # अजगर प्रबंधन.py रनरवर 0.0.0.0:8000।
अब अपना वेब ब्राउज़र खोलें और इंगित करें http://ip-address: 8000/व्यवस्थापक
, फिर पिछले लेख में आपके द्वारा सेट किए गए क्रेडेंशियल्स का उपयोग करके लॉग ऑन करें और एक पोस्ट लिखना शुरू करें (जो, फिर से, एक प्रकार की वस्तु बनाएगा पद और संबंधित डेटा को अंतर्निहित डेटाबेस में डालें):
प्रक्रिया को 2 या 3 बार दोहराएं:
कुछ पोस्ट बनाने के बाद, आइए देखें कि हमारे वेब ब्राउज़र का उपयोग करके उन्हें प्रदर्शित करने के लिए हमें क्या करने की आवश्यकता है।
हमारा पहला दृश्य (~/myfirstdjangoenv/myfirstdjangoproject/myblog/views.py) सभी को छानने का प्रभारी होगा पद वस्तुओं और उन लोगों को वापस करना जहां का मूल्य है जब प्रकाशित वर्तमान दिनांक और समय से कम या उसके बराबर है (जब प्रकाशित__lte=timezone.now ()) अवरोही द्वारा आदेशित जब प्रकाशित, जो कहने के समान है "नवीनतम पहले“.
इन वस्तुओं को आसानी से नामित पदों में एक चर में सहेजा जाता है, और वापस कर दिया जाता है (पहचान के रूप में सभी पद) HTML में एम्बेड किया जाना है, जैसा कि हम अगले भाग में देखेंगे:
django.shortcuts आयात रेंडर से। से .models आयात पोस्ट। django.utils से समय क्षेत्र आयात करें। def पोस्ट (अनुरोध): पोस्ट = Post.objects.filter (जब प्रकाशित__lte=timezone.now ())।order_by('-whenPublished') रिटर्न रेंडर (अनुरोध, 'myblog/posts.html', {'allposts': पोस्ट} )
अंत में, डबल अंडरस्कोर in जब प्रकाशित__lte
उपरोक्त का उपयोग डेटाबेस फ़ील्ड को अलग करने के लिए किया जाता है (जब प्रकाशित) एक फिल्टर या एक ऑपरेशन से (एलटीई = कम से या बराबर)।
एक बार जब हम अपने प्रारंभिक दृष्टिकोण को परिभाषित कर लेते हैं, तो संबंधित टेम्पलेट पर काम करते हैं।
पिछले अनुभाग में दिए गए निर्देशों और रास्तों का पालन करते हुए, हम अपने प्रारंभिक टेम्पलेट को अंदर स्टोर करेंगे मायब्लॉग/टेम्पलेट्स/मायब्लॉग. इसका मतलब है कि आपको नाम की एक निर्देशिका बनाने की आवश्यकता होगी खाके और एक उपनिर्देशिका जिसे कहा जाता है मेरा चिट्ठा:
# सीडी ~/myfirstdjangoenv/myfirstdjangoproject/myblog. # एमकेडीआईआर-पी टेम्प्लेट/मायब्लॉग.
हम टेम्पलेट को कॉल करेंगे पोस्ट.एचटीएमएल
और उसमें निम्न कोड डालें। आप देखेंगे कि हम ऑनलाइन संदर्भ जोड़ रहे हैं jQuery, बूटस्ट्रैप, FontAwesome, और Google फोंट।
इसके अलावा, हमने HTML के अंदर कर्ली ब्रैकेट्स के अंदर पायथन कोड संलग्न किया है। कृपया ध्यान दें कि पोस्ट प्रकार की प्रत्येक वस्तु के लिए हम उसका शीर्षक, उसकी प्रकाशित तिथि और लेखक, और अंत में उसका पाठ दिखाएंगे। अंत में, लाल रंग में आप देखेंगे कि हम द्वारा लौटाई गई वस्तुओं का संदर्भ देते हैं myblog/views.py:
ठीक है, ये रहा पोस्ट.एचटीएमएल फ़ाइल:
मेरा चिट्ठा
{% सभी पदों में पद के लिए%}{% अंत%}{{ शीर्षक पोस्ट करें }}{{post.whenPublished }} को {{post.author }} द्वारा प्रकाशित।{{post.text|लाइनब्रेक्स}}
ऊपरोक्त में टेम्पलेट, NS कतार टूट जाती है फ़िल्टर का उपयोग सादे पाठ में लाइन ब्रेक को संबंधित HTML समकक्ष के साथ बदलने के लिए किया जाता है (
या
इसके बाद, हमें अपने एप्लिकेशन में URL और डेटा वापस करने वाले संबंधित दृश्यों के बीच मैपिंग सेट अप करने की आवश्यकता है। ऐसा करने के लिए, नाम की एक फाइल बनाएं urls.py के भीतर मेरा चिट्ठा निम्नलिखित सामग्री के साथ:
django.conf.urls से url आयात करें। से। आयात दृश्य। urlpatterns = [ url (r'^$', views.posts, name='posts'),]
NS आर'^$'
थोड़ा और स्पष्टीकरण के योग्य है। सबसे आगे वाला आर
Django को एक नियमित अभिव्यक्ति के रूप में सिंगल कोट्स के अंदर स्ट्रिंग का इलाज करने का निर्देश देता है।
विशेष रूप से, आर'^$'
एक खाली स्ट्रिंग का प्रतिनिधित्व करता है ताकि जब हम अपने ब्राउज़र को इंगित करें http://ip-address: 8000
(और कुछ नहीं), वेरिएबल द्वारा लौटाया गया डेटा पदों के भीतर view.py
(पिछले भाग को देखें) हमारे होम पेज में प्रस्तुत किया जाएगा:
अंतिम, लेकिन कम से कम, हम इसमें शामिल नहीं होंगे urls.py हमारे ब्लॉग आवेदन की फ़ाइल (~/myfirstdjangoenv/myfirstdjangoproject/myblog/urls.py) में urls.py हमारी मुख्य परियोजना (~/myfirstdjangoenv/myfirstdjangoproject/myfirstdjangoproject/urls.py):
django.conf.urls से आयात में शामिल हैं, url। django.contrib से आयात व्यवस्थापक urlpatterns = [ url (r'^admin/', शामिल करें (admin.site.urls)), url (r'', शामिल करें('myblog.urls')),]
फिर वेब सर्वर शुरू करते हैं:
# सीडी ~/myfirstdjangoenv/myfirstdjangoproject. # अजगर प्रबंधन.py रनरवर 0.0.0.0:8000।
अब हमें उन पदों की सूची देखने में सक्षम होना चाहिए जिन्हें हमने पहले बनाया था:
करने के लिए धन्यवाद बूटस्ट्रैप, आप अभी भी एक छोटे डिवाइस में एक उत्कृष्ट विज़ुअलाइज़ेशन प्राप्त कर सकते हैं:
आइए अब उन अवधारणाओं की समीक्षा करें जिन्हें हमने इस लेख में और इस पूरी श्रृंखला में शामिल किया है:
1. प्रत्येक नमूना एक ऑब्जेक्ट और मैप्स को एक डेटाबेस टेबल पर परिभाषित करता है, जिसके फ़ील्ड बदले में उस ऑब्जेक्ट के गुणों को मैप करते हैं। दूसरी ओर, ए टेम्पलेट उपयोगकर्ता इंटरफ़ेस को परिभाषित करता है जहां दृश्य द्वारा लौटाया गया डेटा प्रदर्शित किया जाएगा।
मान लें कि हम एक फ़ील्ड जोड़कर अपने मॉडल को संशोधित करना चाहते हैं सारांश तक पद ऑब्जेक्ट, जहां हम प्रत्येक पोस्ट का एक वैकल्पिक संक्षिप्त विवरण संग्रहीत करेंगे। आइए निम्नलिखित पंक्ति को इसमें जोड़ें myblog/models.py:
सारांश = मॉडल। चारफिल्ड (अधिकतम_लंबाई = 350, रिक्त = सत्य, शून्य = सत्य)
जैसा कि हमने पिछले लेख में सीखा, हमें डेटाबेस में परिवर्तनों को माइग्रेट करने की आवश्यकता है:
# python manage.py makemigrations myblog. # python manage.py myblog माइग्रेट करें।
फिर पोस्ट को संपादित करने के लिए व्यवस्थापक इंटरफ़ेस का उपयोग करें और प्रत्येक पोस्ट में एक संक्षिप्त सारांश जोड़ें। अंत में, निम्न पंक्ति को टेम्पलेट में बदलें (पोस्ट.एचटीएमएल):
{{post.text|लाइनब्रेक्स}}
साथ
{{पोस्ट.सारांश}}
परिवर्तन देखने के लिए होम पेज को रीफ्रेश करें:
2. ए दृश्य फ़ंक्शन एक HTTP अनुरोध लेता है और एक HTTP प्रतिक्रिया देता है। इस आलेख में, डीईएफ़ पोस्ट (अनुरोध) में view.py सभी पोस्ट पुनर्प्राप्त करने के लिए अंतर्निहित डेटाबेस को कॉल करता है। अगर हम शब्द के साथ सभी पोस्ट पुनर्प्राप्त करना चाहते हैं उत्तरदायी शीर्षक में, हमें प्रतिस्थापित करना चाहिए।
पोस्ट = पोस्ट.ऑब्जेक्ट्स.फिल्टर (जब प्रकाशित__lte=timezone.now()).order_by('-जब प्रकाशित')
साथ
पोस्ट = पोस्ट.ऑब्जेक्ट्स.फिल्टर (title__icontains="ansible").order_by('-जब प्रकाशित')
वेब एप्लिकेशन में यूजर इंटरफेस को एप्लिकेशन लॉजिक से अलग करके, Django ऐप्स को बनाए रखने और आगे बढ़ाने के कार्यों को सुविधाजनक बनाता है।
3. यदि आपने इस श्रृंखला में दिए गए निर्देशों का पालन किया है, तो आपकी परियोजना की संरचना इस प्रकार होनी चाहिए:
myfirstdjangoenv/myfirstdjangoproject. db.sqlite3. manage.py. मायब्लॉग। admin.py. admin.pyc। __init__.py। __init__.pyc। माइग्रेशन। 0001_initial.py. 0001_initial.pyc। __init__.py। __init__.pyc। model.py. model.pyc। टेम्पलेट्स। myblog. पोस्ट.एचटीएमएल। test.py. urls.py. urls.pyc। views.py। views.pyc। └── myfirstdjangoproject __init__.py __init__.pyc ├── settings.py ├── settings.pyc urls.py ├── urls.pyc wsgi.py └── wsgi पीईसी
यदि उपरोक्त सूची आपके ब्राउज़र में सही ढंग से प्रदर्शित नहीं होती है, तो यहां निम्न कमांड के आउटपुट का एक स्क्रीनशॉट है:
# ट्री myfirstdjangoenv/myfirstdjangoproject.
हालाँकि ये सभी अवधारणाएँ पहली बार में थोड़ी डराने वाली लग सकती हैं, मैं आपको आश्वस्त कर सकता हूँ कि Django इससे परिचित होने के लिए आवश्यक सभी प्रयासों के लायक है
मुझे उम्मीद है कि इस उत्कृष्ट वेब ढांचे से आपका परिचय कराने के लिए हमने इस श्रृंखला में जिस उदाहरण का उपयोग किया है, वह आपको और जानने के लिए प्रेरित करेगा। यदि हां, तो अधिकारी Django दस्तावेज़ीकरण (जिसे लगातार अप टू डेट रखा जाता है) शुरू करने के लिए सबसे अच्छी जगह है।
मैं आपको आश्वस्त कर सकता हूं कि Django के पास लेखों की एक श्रृंखला में पर्याप्त रूप से कवर करने की तुलना में बहुत कुछ है, इसलिए इसे एक्सप्लोर करने और सीखने के लिए स्वतंत्र महसूस करें!
नीचे दिए गए फॉर्म का उपयोग करके हमें प्रश्नों या सुझावों के साथ एक नोट छोड़ने के लिए स्वतंत्र महसूस करें।