QuickFix
यह मौन करने के लिए केवल जब तुम manage.py
चलाने के लिए, import sys
के बाद इन लाइनों जोड़ें:
# ...
import sys
if not sys.warnoptions:
sys.warnoptions += [None]
# ...
आप भी अपने WSGI सर्वर (यानी अपाचे) से यह मौन करने, अद्यतन your_project/wsgi.py
चाहते हैं और import os
के बाद निम्न पंक्तियां जोड़ें:
# ...
import os
import sys
if not sys.warnoptions:
sys.warnoptions += [None]
# ...
स्पष्टीकरण
कारण यह काम करता है की वजह से कैसे django.utils.log.configure_logging()
यह संभालती है:
def configure_logging(logging_config, logging_settings):
if not sys.warnoptions:
# Route warnings through python logging
logging.captureWarnings(True)
# RemovedInNextVersionWarning is a subclass of DeprecationWarning which
# is hidden by default, hence we force the "default" behavior
warnings.simplefilter("default", RemovedInNextVersionWarning)
# ...
यह जानबूझ कर जल्दी django.setup()
के हिस्से के रूप बूट प्रक्रिया है, जो बताता है कि क्यों त्रुटियों इससे पहले कि आप करने में सक्षम थे उत्सर्जित कर रहे थे में कहा जाता है उन्हें ढेर के नीचे और चुप करो।
sys.warnoptions
पर नया तत्व जोड़ना तर्क को छोड़कर True
पर मूल्यांकन करने के लिए मजबूर करता है। only used during python startupwarnings
मॉड्यूल द्वारा लोड होने पर यह हानिरहित है क्योंकि यह only used during python startup है।
RemovedInNextVersionWarning
RemovedInDjango18Warning
in Django 1.7 के लिए केवल एक उपनाम है। यह RemovedInDjango19Warning
in 1.8 पर सेट है, और इसी तरह भविष्य के संस्करणों के लिए - इस कोड को DeprecationWarning
इस प्रकार के भविष्य के सबूत होना चाहिए।
कमांड लाइन तरीकों
ध्यान दें कि sys.warnoptions
सामान्य रूप से -W
argument पर जब अजगर बुला आधारित अजगर स्टार्टअप के दौरान स्थापित किया जाएगा। इसलिए, जब आप dev सर्वर का उपयोग करते हैं तो चेतावनियों को चुप करने का एक आसान तरीका python -W123 manage.py runserver
है। इसके लिए फाइलों में कोई संशोधन की आवश्यकता नहीं है, लेकिन परिणामस्वरूप 123
के बाद स्टार्टअप पर एक हानिकारक चेतावनी होती है, केवल एक प्लेसहोल्डर है और वैध चेतावनी कार्रवाई नहीं है। हालांकि इस सभीDeprecationWarning
रों अनदेखी करेंगे जो RemovedInDjango18Warning
नहीं हैं ब्याज की संभवतः भी शामिल होते हैं,
एक और तरीका है, python -Wi::DeprecationWarning manage.py runserver
है।
@ एंडी। मुझे लगता है कि यह एक अलग सवाल है। मुझे पता है कि 'चेतावनियों का उपयोग कैसे करें। फिल्टरवार्निंग्स() '। मेरी समस्या समय है: आयात के दौरान बहुत सारे संदेश उत्सर्जित होते हैं। मुझे नहीं पता कि चेतावनियों को कैसे कॉल करें। फिल्टरवार्निंग्स() जल्दी – guettli
[अपने स्वयं के फ़िल्टर लिखें] के बारे में क्या है (https://docs.djangoproject.com/en/1।8/विषयों/लॉगिंग/# आईडी 5) settings.py में? – danihp
@ डैनशिप AFAIK सेटिंग.py लोड होने से पहले चेतावनियां उत्सर्जित हो जाती हैं। Settings.py में एक फ़िल्टर बहुत देर हो जाएगी। – guettli