2009-12-22 10 views
5

मैं एक django उत्पादन सर्वर पर INTERNAL_IPS अनुरोधों के लिए DEBUG को ट्रिगर करने की एक सुरक्षित विधि ढूंढ रहा हूं, बिना सेटिंग्स.py फ़ाइल में परिवर्तन की आवश्यकता के। मुख्य रूप से कुछ डेटा डिजाइनरों के लिए लाइव डेटा/मीडिया पर मुद्दों की जांच करने के लिए टूलबार प्राप्त करने के लिए, लेकिन एक बार समाप्त होने के बाद सेटिंग्स को रीसेट करने के लिए उन पर भरोसा किए बिना।किसी उत्पादन सर्वर पर django DEBUG को घुसपैठ कैसे करें

इस विधि के समान। यह केवल तैनाती सूट तैनाती है।

http://nicksergeant.com/blog/django/automatically-setting-debug-your-django-app-based-server-hostname

php आधारित सिस्टम पर अतीत में

मैं मिला है mydomain.com और एक डेमो mydomaincom.myprodserver.com जहां prodserver डोमेन स्वचालित रूप से $ _SERVER के आधार पर डिबग कोड चला सकते हैं [ 'HOST_NAME'] लेकिन डीजेंगो में आसान सुपरग्लोबल की कमी है। उदाहरण के लिए ब्लॉग उदाहरण होस्टनाम में/etc/hostname vhost नहीं है।

किसी भी विचार की सराहना की।

संपादित करें:

मैं एक तरह के वैकल्पिक हल समाधान है (लेकिन आदर्श मैं एक अधिक पोर्टेबल एक पसंद करते हैं)/to/django_in_debug/mydomaincom.myprodserver की sys.path करने के लिए एक/पथ जोड़कर। कॉम vhost प्रविष्टि। फिर सेटिंग्स.py फ़ाइल

try: 
    from django_in_debug.settings import * 
except: 
    DEBUG = False 

उत्तर

9

जो आप करना चाहते हैं उससे थोड़ा अधिक जटिल है। आप कुछ INTERNAL_IPS के लिए डीबग जानकारी दिखाना चाहते हैं जो अनुरोध-स्तर पर हो रहा है। हालांकि, आप settings.py के बारे में बात कर रहे हैं जो साइट-स्तर पर है।

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

आप 2 WSGI फ़ाइलें:

यहाँ आप के लिए एक विचार है। पहली डब्लूएसजीआई फ़ाइल आपके मुख्य सेटिंग्स.py पर इंगित करती है, और अपाचे www.yourdomain.com से यातायात को निर्देशित करता है .. दूसरी डब्लूएसजीआई फ़ाइल debug_settings.py को इंगित करती है, और apache debug.yourdomain.com से यातायात को रीडायरेक्ट करता है। debug_settinsg.py इस तरह दिखता है:

from settings import * 

DEBUG = True 
TEMPLATE_DEBUG = DEBUG 

यहाँ से आप जाल आने वाले अनुरोधों के लिए एक सरल मिडलवेयर घटक लिखें। अनुरोध आईपी की तुलना सेटिंग्स.INTERNAL_IPS से की जाती है और यदि कोई मिलान मिलता है तो अनुरोध debug.yourdomain.com पर रीडायरेक्ट किया जाता है।

यह आपको साइट की 1 प्रतिलिपि रखने की अनुमति देता है, लेकिन अनुरोध-स्तर मान के आधार पर साइट-स्तरीय सेटिंग बदलता है।

+0

+1 DEBUG को प्राथमिक डोमेन से बाहर रखना विशेष रूप से महत्वपूर्ण है क्योंकि डीजेगो सभी डेटाबेस प्रश्नों को सहेजने के कारण DEBUG = True ... स्मृति को तेज़ करता है। –

+0

चीयर्स, यह एक बेहतर समाधान है – michael

+0

यह जांचने योग्य भी हो सकता है कि अपाचे को मिडलवेयर के बजाय आपके लिए रीडायरेक्ट करना है –

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