Django 2.1 - System check framework

सिस्टम चेक फ्रेमवर्क




django

सिस्टम चेक फ्रेमवर्क

सिस्टम चेक फ्रेमवर्क Django परियोजनाओं को मान्य करने के लिए स्थैतिक चेक का एक सेट है। यह आम समस्याओं का पता लगाता है और उन्हें ठीक करने के लिए संकेत प्रदान करता है। ढांचा विस्तृत है, ताकि आप आसानी से अपनी जांच जोड़ सकें।

अपने स्वयं के चेक को जोड़ने और Django के सिस्टम चेक के साथ एकीकृत करने के तरीके के विवरण के लिए, सिस्टम चेक विषय गाइड देखें

एपीआई संदर्भ

CheckMessage

class CheckMessage(level, msg, hint=None, obj=None, id=None) [source]

सिस्टम चेकों द्वारा दी गई चेतावनियाँ और त्रुटियाँ CheckMessage उदाहरण हैं। एक उदाहरण एकल रिपोर्ट करने योग्य त्रुटि या चेतावनी को एन्क्रिप्ट करता है। यह संदेश पर लागू संदर्भ और संकेत भी प्रदान करता है, और एक विशिष्ट पहचानकर्ता जिसका उपयोग फ़िल्टरिंग उद्देश्यों के लिए किया जाता है।

कंस्ट्रक्टर तर्क हैं:

level
संदेश की गंभीरता। पूर्वनिर्धारित मूल्यों में से एक का उपयोग करें: DEBUG , INFO , WARNING , ERROR , CRITICAL । यदि स्तर ERROR से अधिक या बराबर है, तो Django प्रबंधन आदेशों को निष्पादित करने से रोक देगा। ERROR (यानी चेतावनियों) से कम स्तर के संदेश कंसोल को सूचित किए जाते हैं, लेकिन उन्हें चुप कराया जा सकता है।
msg
समस्या का वर्णन करने वाला एक छोटा (80 से कम अक्षर) स्ट्रिंग। स्ट्रिंग में newlines नहीं होना चाहिए।
hint
एक सिंगल-लाइन स्ट्रिंग समस्या को ठीक करने के लिए एक संकेत प्रदान करता है। यदि कोई संकेत नहीं दिया जा सकता है, या संकेत त्रुटि संदेश से स्व-स्पष्ट है, तो संकेत छोड़ा जा सकता है, या कोई भी मूल्य का उपयोग None जा सकता है।
obj
वैकल्पिक। संदेश के लिए एक संदर्भ प्रदान करने वाली वस्तु (उदाहरण के लिए, मॉडल जहां समस्या की खोज की गई थी)। ऑब्जेक्ट एक मॉडल, फ़ील्ड, या प्रबंधक या कोई अन्य ऑब्जेक्ट होना चाहिए जो एक __str__() विधि को परिभाषित करता है। सभी संदेशों की रिपोर्टिंग करते समय विधि का उपयोग किया जाता है और इसका परिणाम संदेश से पहले होता है।
id
वैकल्पिक स्ट्रिंग। इस मुद्दे के लिए एक विशिष्ट पहचानकर्ता। पहचानकर्ताओं को पैटर्न applabel.X001 का पालन करना चाहिए, जहां X अक्षर CEWID से एक है, जो संदेश की गंभीरता (महत्वपूर्ण के लिए C , त्रुटियों के लिए E और इत्यादि) को दर्शाता है। संख्या को आवेदन द्वारा आवंटित किया जा सकता है, लेकिन उस आवेदन के भीतर अद्वितीय होना चाहिए।

सामान्य स्तरों के साथ संदेश बनाने के लिए उपवर्ग हैं जो आसान हैं। उनका उपयोग करते समय आप level तर्क को छोड़ सकते हैं क्योंकि यह वर्ग नाम से निहित है।

class Debug(msg, hint=None, obj=None, id=None) [source]
class Info(msg, hint=None, obj=None, id=None) [source]
class Warning(msg, hint=None obj=None, id=None) [source]
class Error(msg, hint=None, obj=None, id=None) [source]
class Critical(msg, hint=None, obj=None, id=None) [source]

बिलिन टैग

Django के सिस्टम चेक निम्नलिखित टैग का उपयोग करके आयोजित किए जाते हैं:

  • admin : किसी भी व्यवस्थापक साइट घोषणाओं के चेक।
  • caches : कैश संबंधित कॉन्फ़िगरेशन की जाँच करता है।
  • compatibility : संस्करण अपग्रेड के साथ संभावित समस्याएं।
  • database : डेटाबेस से संबंधित कॉन्फ़िगरेशन समस्याओं की जाँच करता है। डेटाबेस चेक डिफ़ॉल्ट रूप से नहीं चलते हैं क्योंकि वे स्थिर कोड विश्लेषण से अधिक करते हैं जैसा कि नियमित चेक करते हैं। वे केवल migrate कमांड द्वारा चलाए migrate या यदि आप check कमांड को कॉल करते समय database टैग निर्दिष्ट करते हैं।
  • models : मॉडल, फ़ील्ड और प्रबंधक परिभाषाओं की जाँच।
  • security : सुरक्षा संबंधी कॉन्फ़िगरेशन की जाँच करता है।
  • signals : सिग्नल घोषणाओं और हैंडलर पंजीकरण पर जाँच।
  • staticfiles : django.contrib.staticfiles कॉन्फ़िगरेशन की जाँच django.contrib.staticfiles है।
  • templates : टेम्पलेट संबंधित कॉन्फ़िगरेशन की जाँच करता है।
  • urls : URL कॉन्फ़िगरेशन की जाँच करता है।

कुछ चेक कई टैग के साथ पंजीकृत हो सकते हैं।

कोर सिस्टम की जाँच

पिछेड़ी संगतता

अनुकूलता उन संभावित समस्याओं की चेतावनी देती है जो Django को अपग्रेड करने के बाद हो सकती हैं।

  • 2_0.W001 : आपके URL पैटर्न <pattern> में एक route है, जिसमें (?P< , ^ साथ शुरू होता है, या $ साथ। यह url() से path() माइग्रेट करते समय एक संभावना थी।

कैश

निम्न जाँच सत्यापित करते हैं कि आपकी CACHES सेटिंग सही ढंग से कॉन्फ़िगर की गई है:

  • caches.E001 : आपको अपनी CACHES सेटिंग में 'default' कैश को परिभाषित करना होगा।

डेटाबेस

माई एसक्यूएल

यदि आप MySQL का उपयोग कर रहे हैं, तो निम्नलिखित जांच की जाएगी:

  • mysql.E001 : MySQL अद्वितीय CharField s को CharField > 255 करने की अनुमति नहीं देता है।
  • mysql.W002 : MySQL स्ट्रिक्ट मोड डेटाबेस कनेक्शन '<alias>' के लिए सेट नहीं है। Sql_mode सेटिंग भी देखें।

मॉडल फ़ील्ड

  • फ़ील्ड। E001 : फ़ील्ड नाम किसी अंडरस्कोर के साथ समाप्त नहीं होने चाहिए।
  • फ़ील्ड .E002 : फ़ील्ड नामों में "__" नहीं होना चाहिए।
  • field.E003 : pk एक आरक्षित शब्द है जिसे फ़ील्ड नाम के रूप में उपयोग नहीं किया जा सकता है।
  • फ़ील्ड। E004 : choices एक चलने योग्य होना चाहिए (जैसे, एक सूची या टपल)।
  • फ़ील्ड। E005 : choices एक पुन : चलने योग्य रिटर्न (actual value, human readable name) ट्यूपल्स होना चाहिए।
  • फ़ील्ड .E006 : db_index None , True या False होना चाहिए।
  • फ़ील्ड। E007 : प्राथमिक कुंजियों में null=True नहीं होना चाहिए।
  • फ़ील्ड। E008 : सभी validators को कॉल करने योग्य होना चाहिए।
  • फ़ील्ड.ई 100 : AutoField को प्राथमिक_की = सही सेट करना चाहिए।
  • फ़ील्ड .E110 : BooleanField नल मानों को स्वीकार नहीं करता है। यह चेक Django 2.1 में शून्य मानों के लिए समर्थन से पहले दिखाई दिया था।
  • फ़ील्ड .E120 : CharField एस को एक CharField विशेषता को परिभाषित करना चाहिए।
  • फ़ील्ड .E121 : max_length एक सकारात्मक पूर्णांक होनी चाहिए।
  • IntegerField : जब IntegerField साथ उपयोग किया जाता है तो IntegerField ध्यान नहीं दिया जाता है।
  • फ़ील्ड .E130 : DecimalField को decimal_places विशेषता को परिभाषित करना चाहिए।
  • फ़ील्ड .E131 : decimal_places एक गैर-नकारात्मक पूर्णांक होना चाहिए।
  • फ़ील्ड .E132 : DecimalField s को एक max_digits विशेषता को परिभाषित करना चाहिए।
  • फ़ील्ड .E133 : max_digits एक गैर-नकारात्मक पूर्णांक होना चाहिए।
  • फ़ील्ड .E134 : max_digits से अधिक या बराबर होने decimal_places
  • field.E140 : FilePathField s में True के लिए allow_files या allow_folders होने चाहिए।
  • फ़ील्ड .E150 : GenericIPAddressField रिक्त मान स्वीकार नहीं कर सकता है यदि शून्य मान की अनुमति नहीं है, क्योंकि रिक्त मान नल के रूप में संग्रहीत हैं।
  • field.E160 : विकल्प auto_now , auto_now_add , और default परस्पर अनन्य हैं। इनमें से केवल एक विकल्प मौजूद हो सकता है।
  • फ़ील्ड .161 : निश्चित डिफ़ॉल्ट मान प्रदान किया गया।
  • <field data type> .162 : <database> <field data type> कॉलम पर डेटाबेस इंडेक्स का समर्थन नहीं करता है।
  • फ़ील्ड .E900 : IPAddressField को ऐतिहासिक पलायन में समर्थन को छोड़कर हटा दिया गया है।
  • फ़ील्ड .900 : IPAddressField को हटा दिया गया है। Django 1.9 में इसके लिए समर्थन (ऐतिहासिक पलायन को छोड़कर) हटाया जाएगा। यह चेक Django 1.7 और 1.8 में दिखाई दिया
  • CommaSeparatedIntegerField : CommaSeparatedIntegerField को हटा दिया गया है। Django 2.0 में इसके लिए समर्थन (ऐतिहासिक पलायन को छोड़कर) हटाया जाएगा। यह चेक Django 1.10 और 1.11 में दिखाई दिया
  • फ़ील्ड .E901 : CommaSeparatedIntegerField को ऐतिहासिक पलायन में समर्थन को छोड़कर हटा दिया गया है।

फ़ाइल फ़ील्ड्स

  • फ़ील्ड.ई 200 : unique फाइलफिल्ड के लिए मान्य तर्क नहीं है। यह चेक Django 1.11 में हटा दिया गया है
  • field.E201 : primary_key लिए मान्य तर्क नहीं है।
  • फ़ील्ड। E202 : FileField का upload_to तर्क एक सापेक्ष पथ होना चाहिए, न कि पूर्ण पथ।
  • फ़ील्ड .E210 : पिलो स्थापित नहीं होने के कारण ImageField उपयोग नहीं कर सकता।

मॉडल के

  • model.E001 : <swappable> फॉर्म का नहीं है app_label.app_name
  • model.E002 : <SETTING> संदर्भ <model> , जो स्थापित नहीं किया गया है, या सार है।
  • model.E003 : मॉडल के मध्यवर्ती मॉडल <app_label>.<model> माध्यम से दो कई-से-कई संबंध हैं।
  • model.E004 : id उपयोग केवल फ़ील्ड नाम के रूप में किया जा सकता है यदि फ़ील्ड primary_key=True भी सेट करता है।
  • model.E005 : क्षेत्र <field name> मूल मॉडल से <model> क्षेत्र के साथ संघर्ष <field name> मूल मॉडल / <model>
  • model.E006 : क्षेत्र <field name> मॉडल <model> के साथ फ़ील्ड क्लैश होता है
  • model.E007 : फ़ील्ड <field name> कॉलम नाम <column name> जो किसी अन्य फ़ील्ड द्वारा उपयोग किया जाता है।
  • model.E008 : index_together पूरी तरह से एक सूची या टपल होना चाहिए।
  • model.E009 : सभी index_together तत्वों को सूचियाँ या index_together होना चाहिए।
  • model.E010 : unique_together पूरी तरह से एक सूची या टपल होना चाहिए।
  • model.E011 : सभी unique_together तत्वों को सूची या unique_together होना चाहिए।
  • model.E012 : indexes/index_together/unique_together पूरी तरह से कोई नहीं फ़ील्ड <field name> को संदर्भित करता है।
  • model.E013 : indexes/index_together/unique_together से एक indexes/index_together/unique_together <field name> को संदर्भित करता है, लेकिन ManyToManyField s उस विकल्प के लिए समर्थित नहीं हैं।
  • model.E014 : ordering एक ट्यूपल या सूची (भले ही आप केवल एक फ़ील्ड द्वारा ऑर्डर करना चाहते हों) होनी चाहिए।
  • model.E015 : ordering कोई भी संबंधित फ़ील्ड <field name>
  • model.E016 : indexes/index_together/unique_together से फ़ील्ड को संदर्भित करता है <field_name> indexes/index_together/unique_together <field_name> जो मॉडल <model> लिए स्थानीय नहीं है।
  • model.E017 : प्रॉक्सी मॉडल <model> में मॉडल फ़ील्ड शामिल हैं।
  • model.E018 : क्षेत्र <field> लिए बहुत लंबे समय तक स्वचालित नाम जोड़ा गया है । अधिकतम लंबाई <maximum length> डेटाबेस के लिए <alias>
  • model.E019 : M2M फ़ील्ड <M2M field> लिए बहुत लंबे समय तक स्वचालित कॉलम नाम। अधिकतम लंबाई <maximum length> डेटाबेस के लिए <alias>
  • model.E020 : <model>.check() वर्ग विधि वर्तमान में ओवरराइड है।
  • model.E021 : ordering और order_with_respect_to एक साथ उपयोग नहीं किया जा सकता है।
  • model.E022 : <function> में <app label>.<model> लिए एक आलसी संदर्भ है, लेकिन ऐप <app label> स्थापित नहीं है या मॉडल <model> प्रदान नहीं करता है।
  • model.E023 : मॉडल नाम <model> क्वेरी लुकअप सिंटैक्स के साथ टकराते ही किसी अंडरस्कोर के साथ शुरू या समाप्त नहीं हो सकता है।
  • model.E024 : मॉडल का नाम <model> में दोहरे अंडरस्कोर नहीं हो सकते क्योंकि यह क्वेरी लुकअप सिंटैक्स से टकराता है।
  • model.E025 : संपत्ति <property name> संबंधित फ़ील्ड एक्सेसर के साथ टकराव होता है।
  • model.E026 : मॉडल में primary_key=True साथ एक से अधिक फ़ील्ड नहीं हो सकते।

सुरक्षा

सुरक्षा जांच आपकी साइट को सुरक्षित नहीं बनाती है। वे कोड का ऑडिट नहीं करते हैं, घुसपैठ का पता लगाते हैं, या विशेष रूप से कुछ भी जटिल करते हैं। बल्कि, वे एक स्वचालित, कम-लटकने वाले फल चेकलिस्ट प्रदर्शन करने में मदद करते हैं। वे आपको उन सरल चीजों को याद रखने में मदद करते हैं जो आपकी साइट की सुरक्षा को बेहतर बनाती हैं।

इनमें से कुछ चेक आपके विशेष परिनियोजन कॉन्फ़िगरेशन के लिए उपयुक्त नहीं हो सकते हैं। उदाहरण के लिए, यदि आप अपने HTTP को लोड बैलेंसर में HTTPS पुनर्निर्देशन करते हैं, तो यह SECURE_SSL_REDIRECT सक्षम नहीं होने के बारे में लगातार चेतावनी दी SECURE_SSL_REDIRECT । अनावश्यक जाँच को शांत करने के लिए SILENCED_SYSTEM_CHECKS का उपयोग करें।

यदि आप check --deploy उपयोग करते हैं, तो निम्नलिखित चेक चलाए जाते हैं - विकल्प विकल्प:

  • सुरक्षा django.middleware.security.SecurityMiddleware : आपके पास अपने MIDDLEWARE में SECURE_HSTS_SECONDS , इसलिए SECURE_HSTS_SECONDS , SECURE_CONTENT_TYPE_NOSNIFF , SECURE_BROWSER_XSS_FILTER , और SECURE_SSL_REDIRECT सेटिंग्स सेट नहीं होंगी।
  • security.W002 : आपके django.middleware.clickjacking.XFrameOptionsMiddleware में django.middleware.clickjacking.XFrameOptionsMiddleware नहीं है, इसलिए आपके पृष्ठ 'x-frame-options' हैडर के साथ नहीं परोसे जाएंगे। जब तक आपकी साइट को फ्रेम में परोसे जाने का एक अच्छा कारण नहीं है, तब तक आपको क्लिक करने के हमलों को रोकने में मदद करने के लिए इस हेडर को सक्षम करने पर विचार करना चाहिए।
  • सुरक्षा django.middleware.csrf.CsrfViewMiddleware मिडलवेयर ( django.middleware.csrf.CsrfViewMiddleware आपके MIDDLEWARE में नहीं है) के माध्यम से Django के अंतर्निहित क्रॉस-साइट अनुरोध जालसाजी संरक्षण का उपयोग करते दिखाई नहीं देते हैं। मिडलवेयर को सक्षम करना यह सुनिश्चित करने के लिए सबसे सुरक्षित तरीका है कि आप कोई छेद न छोड़ें।
  • Security.W004 : आपने SECURE_HSTS_SECONDS सेटिंग के लिए कोई मान सेट नहीं किया है। यदि आपकी पूरी साइट केवल एसएसएल पर ही दी जाती है, तो आप मूल्य निर्धारित करने और HTTP सख्त परिवहन सुरक्षा को सक्षम करने पर विचार कर सकते हैं। पहले प्रलेखन को पढ़ना सुनिश्चित करें; एचएसटीएस को लापरवाही से सक्षम करने से गंभीर, अपरिवर्तनीय समस्याएं हो सकती हैं।
  • security.W005 : आपने SECURE_HSTS_INCLUDE_SUBDOMAINS सेटिंग को True सेट नहीं किया है। इसके बिना, आपकी साइट संभावित रूप से एक उप-डोमेन के असुरक्षित कनेक्शन के माध्यम से हमला करने के लिए असुरक्षित है। इसे केवल True सेट करें यदि आप निश्चित हैं कि आपके डोमेन के सभी उप डोमेन को विशेष रूप से SSL के माध्यम से परोसा जाना चाहिए।
  • सुरक्षा SECURE_CONTENT_TYPE_NOSNIFF : आपकी SECURE_CONTENT_TYPE_NOSNIFF सेटिंग True सेट नहीं है, इसलिए आपके पृष्ठ 'x-content-type-options: nosniff' हेडर के साथ नहीं परोसे जाएंगे। आपको ब्राउज़र को सामग्री प्रकारों की गलत तरीके से पहचान करने से रोकने के लिए इस हेडर को सक्षम करने पर विचार करना चाहिए।
  • सुरक्षा SECURE_BROWSER_XSS_FILTER : आपकी SECURE_BROWSER_XSS_FILTER सेटिंग True सेट नहीं है, इसलिए आपके पृष्ठों को 'x-xss-protection: 1; mode=block' साथ नहीं परोसा जाएगा 'x-xss-protection: 1; mode=block' 'x-xss-protection: 1; mode=block' हैडर। आपको ब्राउज़र के XSS फ़िल्टरिंग को सक्रिय करने और XSS हमलों को रोकने में मदद करने के लिए इस शीर्ष लेख को सक्षम करने पर विचार करना चाहिए।
  • सुरक्षा SECURE_SSL_REDIRECT : आपकी SECURE_SSL_REDIRECT सेटिंग True सेट नहीं है। जब तक आपकी साइट एसएसएल और गैर-एसएसएल दोनों कनेक्शनों पर उपलब्ध नहीं होनी चाहिए, आप चाहें तो इस सेटिंग को True सेट कर सकते हैं या लोड बैलेंसर या रिवर्स-प्रॉक्सी सर्वर को HTTPS में सभी कनेक्शनों को रीडायरेक्ट करने के लिए कॉन्फ़िगर कर सकते हैं।
  • सुरक्षा SECRET_KEY : आपके SECRET_KEY में 50 से कम वर्ण या 5 से कम अद्वितीय वर्ण हैं। कृपया एक लंबा और यादृच्छिक SECRET_KEY उत्पन्न करें, अन्यथा Django की कई सुरक्षा-महत्वपूर्ण विशेषताएं हमले के लिए असुरक्षित होंगी।
  • सुरक्षा django.contrib.sessions : आपके पास अपने INSTALLED_APPS में django.contrib.sessions , लेकिन आपने SESSION_COOKIE_SECURE को True सेट नहीं किया है। केवल-सुरक्षित सत्र कुकी का उपयोग करने से नेटवर्क ट्रैफ़िक स्निफ़र्स के लिए उपयोगकर्ता सत्रों को हाईजैक करना अधिक कठिन हो जाता है।
  • सुरक्षा django.contrib.sessions.middleware.SessionMiddleware : आपके पास अपने django.contrib.sessions.middleware.SessionMiddleware में MIDDLEWARE , लेकिन आपने SESSION_COOKIE_SECURE को True सेट नहीं किया है। केवल-सुरक्षित सत्र कुकी का उपयोग करने से नेटवर्क ट्रैफ़िक स्निफ़र्स के लिए उपयोगकर्ता सत्रों को हाईजैक करना अधिक कठिन हो जाता है।
  • सुरक्षा SESSION_COOKIE_SECURE : SESSION_COOKIE_SECURE True सेट नहीं है। केवल-सुरक्षित सत्र कुकी का उपयोग करने से नेटवर्क ट्रैफ़िक स्निफ़र्स के लिए उपयोगकर्ता सत्रों को हाईजैक करना अधिक कठिन हो जाता है।
  • सुरक्षा django.contrib.sessions : आपके पास अपने INSTALLED_APPS में django.contrib.sessions है, लेकिन आपने SESSION_COOKIE_HTTPONLY को True सेट नहीं किया है। HttpOnly सत्र कुकी का उपयोग करना उपयोगकर्ता सत्रों को हाईजैक करने के लिए क्रॉस-साइट स्क्रिप्टिंग हमलों के लिए और अधिक कठिन बना देता है।
  • सुरक्षा django.contrib.sessions.middleware.SessionMiddleware : आपके पास अपने django.contrib.sessions.middleware.SessionMiddleware में MIDDLEWARE , लेकिन आपने SESSION_COOKIE_HTTPONLY को True सेट नहीं किया है। HttpOnly सत्र कुकी का उपयोग करना उपयोगकर्ता सत्रों को हाईजैक करने के लिए क्रॉस-साइट स्क्रिप्टिंग हमलों के लिए और अधिक कठिन बना देता है।
  • सुरक्षा SESSION_COOKIE_HTTPONLY : SESSION_COOKIE_HTTPONLY True सेट नहीं है। HttpOnly सत्र कुकी का उपयोग करना उपयोगकर्ता सत्रों को हाईजैक करने के लिए क्रॉस-साइट स्क्रिप्टिंग हमलों के लिए और अधिक कठिन बना देता है।
  • सुरक्षा CSRF_COOKIE_SECURE : CSRF_COOKIE_SECURE True सेट नहीं है। एक सुरक्षित-केवल CSRF कुकी का उपयोग करना CSRF टोकन चोरी करने के लिए नेटवर्क ट्रैफ़िक स्नीफ़र्स के लिए अधिक कठिन बनाता है।
  • सुरक्षा CSRF_COOKIE_HTTPONLY : CSRF_COOKIE_HTTPONLY True सेट नहीं है। HttpOnly CSRF कुकी का उपयोग करना CSRF टोकन को चुराने के लिए क्रॉस-साइट स्क्रिप्टिंग हमलों के लिए और अधिक कठिन बना देता है। इस चेक को Django 1.11 में हटा दिया गया है क्योंकि CSRF_COOKIE_HTTPONLY सेटिंग कोई CSRF_COOKIE_HTTPONLY लाभ नहीं देती है।
  • सुरक्षा DEBUG : आपके पास तैनाती में True लिए DEBUG सेट नहीं होना चाहिए।
  • सुरक्षा django.middleware.clickjacking.XFrameOptionsMiddleware : आपके पास अपने django.middleware.clickjacking.XFrameOptionsMiddleware में MIDDLEWARE , लेकिन X_FRAME_OPTIONS 'DENY' सेट नहीं है। डिफ़ॉल्ट 'SAMEORIGIN' , लेकिन जब तक आपकी साइट के लिए एक फ्रेम में खुद के अन्य हिस्सों की सेवा करने का कोई अच्छा कारण नहीं है, आपको इसे 'DENY' बदल देना चाहिए।
  • सुरक्षा ALLOWED_HOSTS : ALLOWED_HOSTS परिनियोजन में खाली नहीं होना चाहिए।
  • Security.W021 : आपने SECURE_HSTS_PRELOAD सेटिंग को True सेट नहीं किया है। इसके बिना, आपकी साइट को ब्राउज़र प्रीलोड सूची में जमा नहीं किया जा सकता है।

सिग्नल

  • signal.E001 : <handler> प्रेषक <app label>.<model> लिए एक आलसी संदर्भ के साथ <signal> सिग्नल से जुड़ा था, लेकिन ऐप <app label> स्थापित नहीं है या मॉडल <model> प्रदान नहीं करता है। ।

टेम्पलेट्स

निम्न जाँच सत्यापित करते हैं कि आपकी TEMPLATES सेटिंग सही ढंग से कॉन्फ़िगर की गई है:

  • templates.E001 : आपके पास 'APP_DIRS': True अपने TEMPLATES में 'APP_DIRS': True , लेकिन 'APP_DIRS': True में 'loaders' भी निर्दिष्ट करें। या तो APP_DIRS निकालें या 'loaders' विकल्प को हटा दें।
  • templates.E002 : string_if_invalid TEMPLATES string_if_invalid में एक स्ट्रिंग होना चाहिए, लेकिन मिला: {value} ( {type} )।

यूआरएल

आपके URL कॉन्फ़िगरेशन पर निम्न चेक किए गए हैं:

  • urls.W001 : आपका URL पैटर्न <pattern> उपयोगों include() $ साथ समाप्त होने वाले route साथ। URL सहित समस्याओं से बचने के लिए route से डॉलर निकालें।
  • urls.W002 : आपके URL पैटर्न <pattern> में route / साथ शुरुआत है। इस स्लैश को हटा दें क्योंकि यह अनावश्यक है। यदि यह पैटर्न किसी include() में लक्षित है, तो सुनिश्चित करें कि include() पैटर्न में एक अनुगामी /
  • urls.W003 : आपके URL पैटर्न <pattern> में a : सहित एक name । अस्पष्ट नामस्थान संदर्भों से बचने के लिए बृहदान्त्र निकालें।
  • urls.E004 : आपका URL पैटर्न <pattern> अमान्य है। सुनिश्चित करें कि urlpatterns path() और / या re_path() उदाहरणों की एक सूची है।
  • urls.W005 : URL नामस्थान <namespace> अद्वितीय नहीं है। आप इस नाम स्थान के सभी URL को उलटने में सक्षम नहीं हो सकते हैं।
  • urls.E006 : MEDIA_URL / STATIC_URL सेटिंग को स्लैश के साथ समाप्त होना चाहिए।

contrib एप्लिकेशन चेक

admin

व्यवस्थापक जाँच सभी को admin टैग के भाग के रूप में किया जाता है।

निम्नलिखित चेक किसी भी ModelAdmin (या उपवर्ग) पर किए जाते हैं जो व्यवस्थापक साइट के साथ पंजीकृत है:

  • admin.E001 : raw_id_fields का मान एक सूची या टपल होना चाहिए।
  • admin.E002 : raw_id_fields[n] का मान <field name> को संदर्भित करता है, जो <model> की विशेषता नहीं है।
  • admin.E003 : raw_id_fields[n] का मान एक विदेशी कुंजी या कई-से-कई फ़ील्ड होना चाहिए।
  • admin.E004 : fields का मान एक सूची या टपल होना चाहिए।
  • admin.E005 : fields और fields दोनों निर्दिष्ट हैं।
  • admin.E006 : fields मान में डुप्लिकेट फ़ील्ड (ओं) को शामिल किया गया है।
  • admin.E007 : फ़ील्डसेट का मान एक सूची या टपल होना चाहिए।
  • admin.E008 : फ़ील्डसेट का मान fieldsets[n] एक सूची या टपल होना चाहिए।
  • admin.E009 : फ़ील्डसेट का मान fieldsets[n] लंबाई 2 का होना चाहिए।
  • admin.E010 : फ़ील्डसेट का मान fieldsets[n][1] एक शब्दकोश होना चाहिए।
  • admin.E011 : फ़ील्डसेट का मान fieldsets[n][1] में प्रमुख fields होना चाहिए।
  • admin.E012 : फ़ील्ड्स में डुप्लिकेट फ़ील्ड (ओं) fieldsets[n][1]
  • admin.E013 : fields[n]/fieldsets[n][m] में ManyToManyField <field name> शामिल नहीं किया जा सकता, क्योंकि यह फ़ील्ड मैन्युअल रूप से एक संबंध मॉडल निर्दिष्ट करती है।
  • admin.E014 : exclude का मूल्य एक सूची या टपल होना चाहिए।
  • admin.E015 : exclude मूल्य में डुप्लिकेट फ़ील्ड (ओं) को शामिल किया गया है।
  • admin.E016 : form का मूल्य BaseModelForm से प्राप्त होना चाहिए।
  • admin.E017 : फ़िल्टर_वर्टिकल का मान एक सूची या टपल होना चाहिए।
  • admin.E018 : फ़िल्टर_होरबल का मान एक सूची या टपल होना चाहिए।
  • admin.E019 : filter_vertical[n]/filter_vertical[n] का मान <field name> को संदर्भित करता है, जो <model> की विशेषता नहीं है।
  • admin.E020 : filter_vertical[n]/filter_vertical[n] का मान कई-से-कई फ़ील्ड होना चाहिए।
  • admin.E021 : Radio_fields का मान एक शब्दकोश होना चाहिए।
  • admin.E022 : Radio_fields का मान <field name> को संदर्भित करता है, जो <model> की विशेषता नहीं है।
  • admin.E023 : Radio_fields का मान <field name> को संदर्भित करता है, जो कि कोई radio_fields नहीं है, और इसकी कोई choices परिभाषा नहीं है।
  • admin.E024 : Radio_fields का मूल्य radio_fields[<field name>] या तो admin.HORIZONTAL या admin.VERTICAL होना चाहिए।
  • admin.E025 : view_on_site का मान या तो view_on_site योग्य या बूलियन मान होना चाहिए।
  • admin.E026 : prepopulated_fields का मान एक शब्दकोश होना चाहिए।
  • admin.E027 : prepopulated_fields का मान <field name> को संदर्भित करता है, जो <model> की विशेषता नहीं है।
  • admin.E028 : prepopulated_fields का मान <field name> को संदर्भित करता है, जो एक DateTimeField , एक ForeignKey , OneToOneField या एक OneToOneField फ़ील्ड नहीं होना चाहिए।
  • admin.E029 : prepopulated_fields[<field name>] का मूल्य prepopulated_fields[<field name>] एक सूची या टपल होना चाहिए।
  • admin.E030 : prepopulated_fields का मान <field name> को संदर्भित करता है, जो <model> की विशेषता नहीं है।
  • admin.E031 : ordering का मूल्य एक सूची या तुच्छ होना चाहिए।
  • admin.E032 : ordering मूल्य में यादृच्छिक ऑर्डर मार्कर है ? , लेकिन अन्य क्षेत्रों में भी शामिल है।
  • admin.E033 : ordering करने का मूल्य <field name> को संदर्भित करता है, जो <model> की विशेषता नहीं है।
  • admin.E034 : readonly_fields का मान एक सूची या टपल होना चाहिए।
  • admin.E035 : readonly_fields[n] का मूल्य readonly_fields[n] एक <ModelAdmin class> योग्य नहीं है, <ModelAdmin class> एक गुण, या <model> का एक गुण।
  • admin.E036 : autocomplete_fields : पूर्ण_ फ़ील्ड्स का मान एक सूची या टपल होना चाहिए।
  • admin.E037 : autocomplete_fields[n] का मान <field name> को संदर्भित करता है, जो <model> की विशेषता नहीं है।
  • admin.E038 : autocomplete_fields[n] का मूल्य autocomplete_fields[n] एक विदेशी कुंजी या कई-से-कई फ़ील्ड होना चाहिए।
  • admin.E039 : मॉडल के लिए एक व्यवस्थापक <model> को <modeladmin>.autocomplete_fields द्वारा संदर्भित होने के लिए पंजीकृत होना चाहिए।
  • admin.E040 : <modeladmin> को search_fields को परिभाषित करना चाहिए, क्योंकि यह <other_modeladmin>.autocomplete_fields द्वारा संदर्भित है।

ModelAdmin

निम्न जांच किसी भी ModelAdmin पर की ModelAdmin जो व्यवस्थापक साइट के साथ पंजीकृत है:

  • admin.E101 : save_as का मूल्य एक बूलियन होना चाहिए।
  • admin.E102 : save_on_top का मूल्य एक बूलियन होना चाहिए।
  • admin.E103 : इनलाइनों का मूल्य एक सूची या तुच्छ होना चाहिए।
  • admin.E104 : <InlineModelAdmin class> InlineModelAdmin से वारिस होना चाहिए।
  • admin.E105 : <InlineModelAdmin class> में एक model विशेषता होनी चाहिए।
  • admin.E106 : <InlineModelAdmin class>.model का मान एक <InlineModelAdmin class>.model होना चाहिए।
  • admin.E107 : list_display का मान एक सूची या टपल होना चाहिए।
  • admin.E108 : list_display[n] का मान <label> को संदर्भित करता है, जो list_display[n] करने योग्य नहीं है, <ModelAdmin class> एक गुण, या <model> पर एक विशेषता या विधि।
  • admin.E109 : list_display[n] का मान एक list_display[n] फ़ील्ड नहीं होना चाहिए।
  • admin.E110 : list_display_links का मान एक सूची, एक ट्यूपल या None होना चाहिए।
  • admin.E111 : list_display_links का मूल्य list_display_links[n] <label> को संदर्भित करता है, जो list_display में परिभाषित नहीं है।
  • admin.E112 : list_filter का मान एक सूची या टपल होना चाहिए।
  • admin.E113 : list_filter[n] का मान list_filter[n] से प्राप्त होना चाहिए।
  • admin.E114 : list_filter का मूल्य list_filter[n] को FieldListFilter से विरासत में नहीं मिलना चाहिए।
  • admin.E115 : list_filter का मूल्य list_filter[n][1] को FieldListFilter से विरासत में प्राप्त करना चाहिए।
  • admin.E116 : list_filter[n] का मान <label> को संदर्भित करता है, जो किसी फ़ील्ड को संदर्भित नहीं करता है।
  • admin.E117 : list_select_related का मान एक बूलियन, ट्यूपल या सूची होना चाहिए।
  • admin.E118 : list_per_page का मान पूर्णांक होना चाहिए।
  • admin.E119 : list_max_show_all का मान पूर्णांक होना चाहिए।
  • admin.E120 : list_editable का मान एक सूची या टपल होना चाहिए।
  • admin.E121 : list_editable[n] का मान <label> को संदर्भित करता है, जो <model> की विशेषता नहीं है।
  • admin.E122 : list_editable[n] का मान <label> को संदर्भित करता है, जो list_display में समाहित नहीं है।
  • admin.E123 : list_editable[n] का मान list_editable और list_display_links दोनों में नहीं हो सकता।
  • admin.E124 : list_editable[n] का मान list_display ( <label> ) में पहले फ़ील्ड को संदर्भित करता है, जिसका उपयोग तब तक नहीं किया जा सकता जब तक कि list_display_links सेट न हो जाए।
  • admin.E125 : list_editable[n] का मान <field name> को संदर्भित करता है, जो व्यवस्थापक के माध्यम से संपादन योग्य नहीं है।
  • admin.E126 : search_fields का मान एक सूची या टपल होना चाहिए।
  • admin.E127 : date_hierarchy का मान <field name> को संदर्भित करता है, जो किसी फ़ील्ड को संदर्भित नहीं करता है।
  • admin.E128 : date_hierarchy का मान DateField या DateTimeField होना चाहिए।
  • admin.E129 : <modeladmin> को <action> कार्रवाई के लिए has_<foo>_permission() विधि को परिभाषित करना चाहिए।

InlineModelAdmin

निम्न जाँच किसी भी InlineModelAdmin पर की InlineModelAdmin जो कि किसी InlineModelAdmin पर इनलाइन के रूप में पंजीकृत है।

  • admin.E201 : फ़ील्ड <field name> बाहर नहीं कर सकता, क्योंकि यह मूल मॉडल <app_label>.<model> लिए विदेशी कुंजी है।
  • admin.E202 : <model> पास कोई विदेशीकेई नहीं है <parent model> ./ <model> पास एक से अधिक ForeignKey से <parent model>
  • admin.E203 : extra का मान पूर्णांक होना चाहिए।
  • admin.E204 : max_num का मान पूर्णांक होना चाहिए।
  • admin.E205 : min_num का मान पूर्णांक होना चाहिए।
  • admin.E206 : फॉरमेट का मान BaseModelFormSet से प्राप्त होना चाहिए।

GenericInlineModelAdmin

निम्न जाँच किसी भी ModelAdmin पर की जाती है जो कि किसी ModelAdmin पर इनलाइन के रूप में पंजीकृत है।

  • admin.E301 : 'ct_field' संदर्भ <label> , जो <model> पर फ़ील्ड नहीं है।
  • admin.E302 : 'ct_fk_field' संदर्भ <label> , जो <model> पर फ़ील्ड नहीं है।
  • admin.E303 : <model> में कोई GenericForeignKey नहीं है।
  • admin.E304 : <model> में सामग्री प्रकार फ़ील्ड <field name> और ऑब्जेक्ट ID फ़ील्ड <field name> फ़ील्ड <field name> का उपयोग करके कोई GenericForeignKey नहीं है।

AdminSite

निम्न जाँच डिफ़ॉल्ट AdminSite पर की AdminSite :

auth

  • OR.E001 : REQUIRED_FIELDS एक सूची या टपल होनी चाहिए।
  • Pers.E002 : कस्टम उपयोगकर्ता मॉडल के लिए USERNAME_FIELD रूप में नामित फ़ील्ड को REQUIRED_FIELDS में शामिल नहीं किया जाना चाहिए।
  • OR.E003 : <field> अद्वितीय होना चाहिए क्योंकि इसका नाम USERNAME_FIELD
  • विशेषाधिकार .004 : <field> को USERNAME_FIELD रूप में नामित किया गया है, लेकिन यह अद्वितीय नहीं है।
  • OR.E005 : अनुमति कोडनाम <codename> मॉडल <model> लिए बिलिन की अनुमति के साथ टकराता है
  • OR.E006 : अनुमति कोडनाम <codename> मॉडल <model> लिए डुप्लिकेट है।
  • OR.E007 : मॉडल का verbose_name <model> अपने बिल्ट अनुमति के नामों के लिए अधिकतम 255 वर्णों पर 244 वर्णों का होना चाहिए।
  • OR.E008 : मॉडल के <model> <name> <model> की अनुमति 255 वर्णों से अधिक लंबी है।
  • विशेषाधिकार। C009 : <User model>.is_anonymous एक विधि के बजाय एक विशेषता या गुण होना चाहिए। इसे अनदेखा करना एक सुरक्षा मुद्दा है क्योंकि अनाम उपयोगकर्ताओं को प्रमाणित माना जाएगा!
  • विशेषाधिकार। C010 : <User model>.is_authenticated एक विधि के बजाय एक विशेषता या गुण होना चाहिए। इसे अनदेखा करना एक सुरक्षा मुद्दा है क्योंकि अनाम उपयोगकर्ताओं को प्रमाणित माना जाएगा!

contenttypes

जब किसी मॉडल में GenericForeignKey या GenericRelation होता है, तो निम्नलिखित जांच की जाती है:

  • contenttypes.E001 : GenericForeignKey ऑब्जेक्ट आईडी कोई भी फ़ील्ड <field>
  • contenttypes.E002 : GenericForeignKey सामग्री प्रकार किसी भी संबंधित फ़ील्ड <field> संदर्भित करता है।
  • contenttypes.E003 : <field> ForeignKey नहीं है।
  • contenttypes.E004 : <field> contenttypes.ContentType लिए कोई ForeignKey नहीं है।
  • contenttypes.E005 : मॉडल के नाम अधिकतम 100 वर्णों के होने चाहिए।

postgres

निम्नलिखित जाँच django.contrib.postgres मॉडल फ़ील्ड पर की django.contrib.postgres :

  • postgres.E001 : सरणी के लिए आधार क्षेत्र में त्रुटियां हैं:…
  • postgres.E002 : सरणी के लिए आधार क्षेत्र संबंधित क्षेत्र नहीं हो सकता है।
  • postgres.E003 : <field> डिफ़ॉल्ट को उदाहरण के बजाय एक कॉल करने योग्य होना चाहिए ताकि यह सभी फ़ील्ड इंस्टेंस के बीच साझा न हो।

sites

एक CurrentSiteManager का उपयोग करके किसी भी मॉडल पर निम्नलिखित जांच की जाती है:

  • sites.E001 : CurrentSiteManager को <field name> फ़ील्ड नहीं मिला।
  • sites.E002 : CurrentSiteManager <field> उपयोग नहीं कर सकता क्योंकि यह एक विदेशी कुंजी या कई-से-कई फ़ील्ड नहीं है।

staticfiles

निम्न जाँचें सत्यापित करती हैं कि django.contrib.staticfiles ठीक से कॉन्फ़िगर किया गया है:

Original text