2012-02-07 22 views
5

फिर से रनरवर के बिना दृश्य फ़ंक्शन को बदलने के बाद, और पृष्ठ को रीफ्रेश करने के लिए F5 दबाएं, Django नए दृश्य को फिर से लोड नहीं करेगा लेकिन पिछले एक का उपयोग करेगा। लेकिन यदि आप टेम्पलेट बदलते हैं, तो Django हमेशा नए का उपयोग करता है।क्या Django को पुनरारंभ किए बिना दृश्य को फिर से लोड करना संभव है?

तो, जब भी उपयोगकर्ता पृष्ठ को रीफ्रेश करते हैं तो Django को फिर से लोड करने का कोई तरीका है, मुझे लगता है कि दृश्य फ़ंक्शन को अक्सर संशोधित करने के लिए विकसित करना बहुत सुविधाजनक है।

+0

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

+0

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

+0

मैं इसे pydev के माध्यम से चलाता हूं, यह परिवर्तन कोड को पुनः लोड नहीं करता है। इसलिए प्रत्येक बार जब मैंने व्यू फ़ंक्शन बदल दिया, तो मुझे बदले गए कोड को फिर से लोड करने के लिए फिर से रनरवर करना होगा। जो प्रोग्रामिंग धीरे-धीरे बनाता है। – storm

उत्तर

9

यदि आप dev सर्वर (./manage.py runerver) का उपयोग कर django चला रहे हैं तो यह हमेशा किसी भी कोड परिवर्तन का पता लगाने पर पुनः लोड हो जाएगा। यह हर अनुरोध के साथ पुनः लोड करने से भी अधिक कुशल है। यदि आप कोई परिवर्तन करते हैं, तो इसे फिर से लोड होने पर पुनः लोड किया जाता है।

यदि आप एक उत्पादन सर्वर (nginx, apache, आदि) चला रहे हैं और आप कोड-रीलोड चाहते हैं, तो आपको कोड परिवर्तनों का पता लगाने के लिए अपने wsgi मॉड्यूल में कुछ जोड़ने की आवश्यकता है।

कोड अपाचे के साथ पुन: लोड: http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode

कोड uwsgi साथ पुन: लोड: http://projects.unbit.it/uwsgi/wiki/TipsAndTricks

+0

मैं eclipse + pydev का विकास करने के लिए उपयोग करता हूं। और रनरवर पर ग्रहण का उपयोग करें, और मैंने पाया कि यह दृश्य फ़ंक्शन को पुनः लोड नहीं किया गया है, लेकिन टेम्पलेट फ़ाइल को फिर से लोड करें, इसलिए हर बार जब मैं कोड बदलता हूं, तो मुझे इसे पुनरारंभ करना होगा। क्या इसे सक्षम करने के लिए सेटिंग.py में कोई सेटिंग है? – storm

+1

यह पीडीडीव के साथ एक मुद्दा है। जहां तक ​​मुझे पता है कि इसे पुनः लोड करने का कोई तरीका नहीं है (यह आखिरकार इसे इस्तेमाल करने के बाद से बदल सकता है), मैं हमेशा टर्मिनल के माध्यम से रनरवर चला रहा हूं। –

+1

हाँ चाहे मैं किस आईडीई का उपयोग करता हूं, मैं हमेशा टर्मिनल में रनरवर चलाता हूं। – jdi

2

यह PyDev साथ एक ज्ञात समस्या है। मैं टर्मिनल/cmd से सर्वर चलाने का सुझाव देना होगा। अपनी परियोजना निर्देशिका के लिए सीडी जहां manage.py मौजूद है और सर्वर

python manage.py runserver

आप ग्रहण मेनू से प्रोजेक्ट को चलाने की जरूरत नहीं है का उपयोग कर चलाते हैं। ग्रहण में किए गए किसी भी बदलाव को जल्द से जल्द परिलक्षित किया जाएगा।

0

मैंने देखा कि यह pyDev रन कॉन्फ़िगरेशन में एक सेटिंग है। मुझे आश्चर्य है कि क्यों ऐसा लगता है - नॉरलोड डिफ़ॉल्ट रूप से कॉन्फ़िगर किया गया है। इसलिए मैं रन सेटिंग्स के तर्क संपादित करता हूं और अब दृश्यों को संपादित करते समय भी सर्वर पुनः लोड हो रहा है।

+0

- रीलोडिंग लागू होने के तरीके से पूर्वरेखा को डिफ़ॉल्ट रूप से रखा जाता है क्योंकि ब्रेकपॉइंट्स और डिबगिंग के साथ समस्याएं हो सकती हैं – dalore

2

यदि आप डीजेनो को डैमन मोड में डब्लूएसजीआई एप्लिकेशन के रूप में चला रहे हैं तो आपको अपनी साइट के लिए wsgi.py को स्पर्श करने की आवश्यकता है और अगली बार अनुरोध होने पर एप्लिकेशन को फिर से लोड करना होगा। (इसलिए किसी विशेष विकल्प की आवश्यकता नहीं है)।

+0

यह मूल प्रश्न का उत्तर नहीं दे सकता है लेकिन इसका उत्तर नहीं दिया गया है मेरा प्रश्न! – teewuane

+0

धन्यवाद +1, wsgi.py स्पर्श करें बहुत मदद करता है। –

0

सर्वर चल के रूप में gunicorn या nginx उपयोग करने का प्रयास ... वे कोड परिवर्तन पर पुनः आरंभ

gunicorn --bind 0.0.0.0:8080 app.wsgi:application

विकास सर्वर के साथ
संबंधित मुद्दे

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