2009-08-20 15 views
5

http://www.djangobook.com/en/beta/chapter10/Django टेम्पलेट परिवर्तन व्यवहार silent_variable_failure को = झूठी

"नोट django.core.exceptions.ObjectDoesNotExist है, जो सभी के लिए Django डेटाबेस API DoesNotExist अपवाद के लिए आधार वर्ग है, silent_variable_failure = सच है। तो अगर आप कर रहे हैं Django मॉडल ऑब्जेक्ट्स के साथ Django टेम्पलेट्स का उपयोग करके, किसी भी DoNotExist अपवाद चुपचाप विफल हो जाएगा। "

जब भी मैं विकास कर रहा हूं मैं इस व्यवहार को उलटना चाहता हूं, यानी silent_variable_failure = गलत। Django के तहत विकास करते समय मैं इस परिवर्तन को स्थायी कैसे बना सकता हूं?

धन्यवाद, निक

उत्तर

4

settings.py में मैं जोड़ा TEMPLATE_STRING_IF_INVALID = "अवैध स्ट्रिंग '% s'" अधिक जानकारी के लिए http://docs.djangoproject.com/en/dev/ref/templates/api/#invalid-template-variables देखें।

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

+0

चला रहा हूँ django 1.8 में 'TEMPLATE_STRING_IF_INVALID' [बदल गया है] (http://stackoverflow.com/a/33750585/1888983)। [डॉक्स] देखें (https://docs.djangoproject.com/en/1.8/ref/templates/upgrading/#the-templates-settings)। – jozxyqk

0

Django टेम्पलेट प्रणाली किसी भी अपवाद की एक विशेषता के रूप में silent_variable_failure के लिए लग रहा है।

इसका मतलब है कि आपने उस विशेषता के साथ False पर अपना अपवाद परिभाषित किया है।

ओआरएम द्वारा उत्पन्न मानक ObjectDoesNotExist अपवाद के लिए, सबसे सरल समाधान आपके विकास बॉक्स (डीजेंगो/कोर/अपवाद END_SPAN) पर Django स्रोतकोड को संशोधित करना होगा।

यदि ऐसा कुछ था जिसे आपको उत्पादन प्रणाली में बदलने की आवश्यकता थी तो आपको 1) अपनी खुद की अपवाद कक्षा को परिभाषित करने की आवश्यकता होगी, 2) अपने मॉडल पर एक प्रबंधक डालें जिसे टेम्पलेट से कहा जाता है (ओआरएम विधियों का उपयोग करने के बजाय), और उसके बाद 3) अपने प्रबंधक में DoNotExist को पकड़ें और अपनी कक्षा के साथ अपवाद को फिर से उठाएं।

+0

अच्छी जानकारी के लिए धन्यवाद। मैंने /usr/share/python-support/python-django/django/core/exceptions.py संपादित किया और silent_variable_failure = गलत में बदल दिया लेकिन मुझे व्यवहार बदलने के लिए नहीं मिला। निश्चित नहीं है कि मुझे .pyc फ़ाइल को पुन: उत्पन्न करने की आवश्यकता है। मैंने निराशा में /var/lib/python-support/python2.6/django/core/exceptions.pyc हटा दिया लेकिन इसका कोई फायदा नहीं हुआ। मुझे लगता है कि TEMPLATE_STRING_IF_INVALID जो मैं चाहता हूं वह करूँगा, शायद व्यवहार django के बाद के संस्करण में अलग है। मैं Django संस्करण 1.0.2 अंतिम –

0

एक और सेटिंग, TEMPLATE_DEBUG, इस व्यवहार को बदलने के लिए settings.py में True पर सेट किया जा सकता है।

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