Ramverk för systemkontroll¶
Ramverket System Check är en uppsättning statiska kontroller för validering av Django-projekt. Det upptäcker vanliga problem och ger tips om hur man åtgärdar dem. Ramverket är utbyggbart så att du enkelt kan lägga till dina egna kontroller.
För detaljer om hur du lägger till dina egna kontroller och integrerar dem med Djangos systemkontroller, se Systemcheck topic guide.
API-referens¶
CheckMessage¶
De varningar och fel som systemkontroller ger upphov till måste vara instanser av CheckMessage. En instans inkapslar ett enda rapporterbart fel eller en varning. Den innehåller också sammanhang och tips som gäller för meddelandet samt en unik identifierare som används för filtrering.
Konstruktörens argument är:
nivåMeddelandets allvarlighetsgrad. Använd ett av de fördefinierade värdena:
DEBUG,INFO,WARNING,ERROR,CRITICAL. Om nivån är större eller lika medERROR, kommer Django att förhindra att hanteringskommandon utförs. Meddelanden med en lägre nivå änERROR(dvs. varningar) rapporteras till konsolen, men kan tystas ner.msgEn kort (mindre än 80 tecken) sträng som beskriver problemet. Strängen ska inte innehålla nya rader.
hintEn sträng på en rad som ger en ledtråd för att lösa problemet. Om ingen ledtråd kan anges, eller om ledtråden framgår av felmeddelandet, kan ledtråden utelämnas eller värdet
Noneanvändas.objValfritt. Ett objekt som ger sammanhang åt meddelandet (t.ex. den modell där problemet upptäcktes). Objektet bör vara en modell, ett fält eller en manager eller något annat objekt som definierar en
__str__()-metod. Metoden används vid rapportering av alla meddelanden och dess resultat föregår meddelandet.idValfri sträng. En unik identifierare för problemet. Identifierare bör följa mönstret
applabel.X001, därXär en av bokstävernaCEWID, som anger meddelandets allvarlighetsgrad (Cför kritiskt,Eför fel och så vidare). Numret kan tilldelas av applikationen, men bör vara unikt inom den applikationen.
Det finns underklasser för att göra det enklare att skapa meddelanden med gemensamma nivåer. När du använder dem kan du utelämna argumentet level eftersom det är underförstått av klassnamnet.
Kontroller av kärnsystem¶
Asynkront stöd¶
Följande kontroller verifierar din installation för Asynkront stöd:
async.E001: Du bör inte ange miljövariabeln
DJANGO_ALLOW_ASYNC_UNSAFEi distributionen. Detta inaktiverar async safety protection.
Bakåtkompatibilitet¶
Kompatibilitetskontroller varnar för potentiella problem som kan uppstå efter uppgradering av Django.
2_0.W001: Ditt URL-mönster
<pattern>har enroutesom innehåller(?P<, börjar med^, eller slutar med$. Detta var troligen ett förbiseende när vi migrerade frånurl()tillpath().4_0.E001: Från och med Django 4.0 måste värdena i inställningen
CSRF_TRUSTED_ORIGINSbörja med ett schema (vanligtvishttp://ellerhttps://) men hittade<hostname>.
Cacher¶
Följande kontroller verifierar att din CACHES-inställning är korrekt konfigurerad:
caches.E001: Du måste definiera en
'default'cache i dinCACHESinställning.caches.W002: Din konfiguration
<cache>kan exponera din cache eller leda till att dina data skadas eftersom dessLOCATIONmatchar/är inuti/innehållerMEDIA_ROOT/STATIC_ROOT/STATICFILES_DIRS.caches.W003: Din
<cache>cacheLOCATIONär relativ. Använd en absolut sökväg istället.
Databas¶
MySQL och MariaDB¶
Om du använder MySQL eller MariaDB kommer följande kontroller att utföras:
mysql.E001: MySQL/MariaDB tillåter inte unika
CharFieldatt ha enmax_length> 255. Denna kontroll ändrades tillmysql.W003i Django 3.1 eftersom den verkliga maximala storleken beror på många faktorer.mysql.w002: MySQL/MariaDB Strict Mode är inte inställt för databasanslutningen
<alias>. Se även Ställa in sql_mode.mysql.w003: MySQL/MariaDB tillåter kanske inte unika
CharFieldatt ha enmax_length> 255.
Hantera filer¶
Följande kontroller verifierar din inställning för Hantera filer:
files.E001: Inställningen
FILE_UPLOAD_TEMP_DIRhänvisar till den icke-existerande katalogen<path>.
Modellfält¶
fields.E001: Fältnamn får inte sluta med en understreckare.
fields.E002: Fältnamn får inte innehålla
"__".fields.E003:
pkär ett reserverat ord som inte kan användas som fältnamn.fields.E004:
choicesmåste vara en mappning (t.ex. en ordbok) eller en iterabel (t.ex. en lista eller tupel).fields.E005:
choicesmåste vara en mappning av faktiska värden till mänskligt läsbara namn eller en iterabel som innehåller(faktiskt värde, mänskligt läsbart namn)-tupler.fields.E006:
db_indexmåste varaNone,TrueellerFalse.fields.E007: Primärnycklar får inte ha
null=True.fields.E008: Alla
validatorermåste vara anropsbara.fields.E009:
max_lengthär för litet för att passa det längsta värdet ichoices(<count>tecken).fields.E010:
<field>default bör vara en callable istället för en instans så att den inte delas mellan alla fältinstanser.fields.E011:
<database>stöder inte standardvärden för databaser med uttryck (db_default).fields.E012:
<expression>kan inte användas idb_default.fields.E013:
CompositePrimaryKeymåste ha namnetpk.fields.E100:
AutoFieldmåste ange primary_key=True.fields.E110:
BooleanFieldaccepterar inte null-värden. Denna kontroll dök upp innan stöd för null-värden lades till i Django 2.1.fields.E120:
CharFieldmåste definiera ett attribut förmax_length.fields.E121:
max_lengthmåste vara ett positivt heltal.fields.W122:
max_lengthignoreras när det används med<integer field type>.fields.E130:
DecimalFieldmåste definiera ettdecimal_placesattribut.fields.E131:
decimal_placesmåste vara ett icke-negativt heltal.fields.E132:
DecimalFieldmåste definiera ettmax_digitsattribut.fields.E133:
max_digitsmåste vara ett positivt heltal.fields.E134:
max_digitsmåste vara större än eller lika meddecimal_places.fields.E140:
FilePathFieldmåste ha antingenallow_filesellerallow_folderssatt till True.fields.E150:
GenericIPAddressFieldkan inte hablank=Trueomnull=False, eftersom blanka värden lagras som nulls.fields.E160: Alternativen
auto_now,auto_now_addochdefaultär ömsesidigt uteslutande. Endast ett av dessa alternativ kan vara närvarande.fields.W161: Fastställt standardvärde som tillhandahålls.
fields.W162:
<database>stöder inte ett databasindex på<field data type>kolumner.fields.W163:
<database>har inte stöd för kommentarer på kolumner (db_comment).fields.E170:
BinaryField’sdefaultkan inte vara en sträng. Använd bytesinnehåll istället.fields.E180:
<database>har inte stöd förJSONField.fields.E190:
<database>stöder inte en databassortering på ``<field_type>``s.fields.E220:
<database>stöder inte ``GeneratedField``s.fields.E221:
<database>stöder inte icke-persisterade ``GeneratedField``s.fields.E222:
<database>stöder inte persistenta ``GeneratedField``s.fields.E223:
GeneratedField.output_fieldhar fel: …fields.W224:
GeneratedField.output_fieldhar varningar: …fields.E900:
IPAddressFieldhar tagits bort med undantag för stöd i historiska migreringar.fields.W900:
IPAddressFieldhar blivit föråldrad. Stöd för det (förutom i historiska migreringar) kommer att tas bort i Django 1.9. Denna kontroll dök upp i Django 1.7 och 1.8.fields.W901:
CommaSeparatedIntegerFieldhar blivit föråldrad. Stöd för det (förutom i historiska migreringar) kommer att tas bort i Django 2.0. Denna kontroll dök upp i Django 1.10 och 1.11.fields.E901:
CommaSeparatedIntegerFieldtas bort förutom för stöd i historiska migreringar.fields.W902:
FloatRangeFieldär föråldrad och kommer att tas bort i Django 3.1. Denna kontroll dök upp i Django 2.2 och 3.0.fields.W903:
NullBooleanFieldär föråldrad. Stöd för det (utom i historiska migreringar) kommer att tas bort i Django 4.0. Denna kontroll dök upp i Django 3.1 och 3.2.fields.E903:
NullBooleanFieldtas bort förutom för stöd i historiska migreringar.fields.W904:
django.contrib.postgres.fields.JSONFieldär föråldrad. Stöd för det (utom i historiska migreringar) kommer att tas bort i Django 4.0. Denna kontroll dök upp i Django 3.1 och 3.2.fields.E904:
django.contrib.postgres.fields.JSONFieldtas bort förutom för stöd i historiska migreringar.fields.W905:
django.contrib.postgres.fields.CICharFieldär föråldrad. Stöd för det (utom i historiska migreringar) kommer att tas bort i Django 5.1. Denna kontroll dök upp i Django 4.2 och 5.0.fields.E905:
django.contrib.postgres.fields.CICharFieldtas bort förutom för stöd i historiska migreringar.fields.W906:
django.contrib.postgres.fields.CIEmailFieldär föråldrad. Stöd för det (utom i historiska migreringar) kommer att tas bort i Django 5.1. Denna kontroll dök upp i Django 4.2 och 5.0.fields.E906:
django.contrib.postgres.fields.CIEmailFieldtas bort förutom för stöd i historiska migreringar.fields.W907:
django.contrib.postgres.fields.CITextFieldär föråldrad. Stöd för det (utom i historiska migreringar) kommer att tas bort i Django 5.1. Denna kontroll dök upp i Django 4.2 och 5.0.fields.E907:
django.contrib.postgres.fields.CITextFieldtas bort med undantag för stöd för historiska migreringar.
Fält¶
fields.E200:
uniqueär inte ett giltigt argument för enFileField. Denna kontroll är borttagen i Django 1.11.fields.E201:
primary_keyär inte ett giltigt argument för enFileField.fields.E202:
FileField’supload_toargument måste vara en relativ sökväg, inte en absolut sökväg.fields.E210: Det går inte att använda
ImageFieldeftersom Pillow inte är installerat.
Modeller¶
models.E001:
<swappable>är inte av formenapp_label.app_name.models.E002:
<SETTING>refererar till<model>, som inte har installerats, eller är abstrakt.Modeller.E003: Modellen har två identiska many-to-many-relationer genom den mellanliggande modellen
<app_label>.<model>.models.E004:
idkan endast användas som fältnamn om fältet också angerprimary_key=True.models.E005: Fältet
<field name>från överordnad modell<model>krockar med fältet<field name>från överordnad modell<model>.modeller.E006: Fältet
<field name>krockar med fältet<field name>från modellen<model>.models.E007: Fältet
<field name>har kolumnnamnet<column name>som används av ett annat fält.models.E008:
index_togethermåste vara en lista eller tupel. Denna kontroll dök upp före Django 5.1.modeller.E009: Alla
index_togetherelement måste vara listor eller tupler. Denna kontroll dök upp före Django 5.1.models.E010:
unique_togethermåste vara en lista eller tupel.modeller.E011: Alla
unique_togetherelement måste vara listor eller tupler.models.E012:
constraints/indexes/unique_togetherhänvisar till det icke-existerande fältet<field name>.models.E013:
constraints/indexes/unique_togetherhänvisar till enManyToManyField<field name>, menManyToManyFieldstöds inte för det alternativet.models.E014:
orderingmåste vara en tupel eller lista (även om du bara vill beställa efter ett fält).models.E015:
Orderinghänvisar till det icke-existerande fältet, relaterade fältet eller uppslagsordet<field name>.models.E016:
constraints/indexes/unique_togetherhänvisar till fältet<field_name>som inte är lokalt för modellen<model>.models.E017: Proxy-modellen
<model>innehåller modellfält.models.E018: Autogenererat kolumnnamn för långt för fältet
<field>. Maximal längd är<maximum length>för databasen<alias>.models.E019: Autogenererat kolumnnamn för långt för M2M-fältet
<M2M field>. Maximal längd är<maximum length>för databasen<alias>.modeller.E020: Klassmetoden
<model>.check()är för närvarande åsidosatt.models.E021:
Orderingochorder_with_respect_tokan inte användas tillsammans.models.E022:
<function>innehåller en lat referens till<app label>.<model>, men appen<app label>är inte installerad eller tillhandahåller inte modellen<model>.models.E023: Modellnamnet
<model>kan inte börja eller sluta med ett understreck eftersom det kolliderar med frågans uppslagssyntax.models.E024: Modellnamnet
<model>kan inte innehålla dubbla understreck eftersom det kolliderar med frågans uppslagssyntax.models.E025: Egenskapen
<property name>kolliderar med en relaterad fältaccessor.Modeller.E026: Modellen kan inte ha mer än ett fält med
primary_key=True.models.W027:
<database>stöder inte kontrollbegränsningar.modeller.E028:
db_table<db_table>används av flera modeller:<model list>.models.E029: indexnamnet
<index>är inte unikt för modellen<model>.models.E030: indexnamnet
<index>är inte unikt bland modeller:<model list>.models.E031: begränsningsnamnet
<constraint>är inte unikt för modellen<model>.models.E032: begränsningsnamnet
<constraint>är inte unikt bland modeller:<model list>.models.E033: Indexnamnet
<index>kan inte börja med ett understreck eller en siffra.modeller.E034: Indexnamnet
<index>kan inte vara längre än<max_length>tecken.modeller.W035:
db_table<db_table>används av flera modeller:<model list>.models.W036:
<database>stöder inte unika begränsningar med villkor.models.W037:
<database>stöder inte index med villkor.models.W038:
<database>stöder inte deferrable unique constraints.models.W039:
<database>stöder inte unika begränsningar med icke-nyckelkolumner.models.W040:
<database>stöder inte index med kolumner som inte är nycklar.models.E041:
constraintshänvisar till det länkade fältet<field name>.models.E042:
<field name>kan inte ingå i den sammansatta primärnyckeln.models.W042: Automatisk skapad primärnyckel används när man inte definierar en primärnyckeltyp, som standard
django.db.models.AutoField.models.W043:
<database>stöder inte index på uttryck.models.W044:
<database>stöder inte unika begränsningar för uttryck.modeller.W045: Kontrollbegränsningen
<constraint>innehållerRawSQL()uttryck och kommer inte att valideras under modellenfull_clean().models.W046:
<database>stöder inte kommentarer om tabeller (db_table_comment).models.W047:
<database>stöder inte unika begränsningar med nulls distinct.models.E048:
constraints/indexes/unique_togetherhänvisar till enCompositePrimaryKey<field name>, menCompositePrimaryKeystöds inte för det alternativet.
Kommandon för hantering¶
Följande kontroller verifierar att anpassade hanteringskommandon är korrekt konfigurerade:
kommandon.E001: Kommandona
migrateochmakemigrationsmåste ha sammaautodetektor.
Säkerhet¶
Säkerhetskontrollerna gör inte din webbplats säker. De granskar inte kod, upptäcker inte intrång eller gör något särskilt komplext. Snarare hjälper de till att utföra en automatiserad checklista som kan hjälpa dig att förbättra webbplatsens säkerhet.
Vissa av dessa kontroller kanske inte är lämpliga för just din distributionskonfiguration. Om du till exempel gör din HTTP till HTTPS-omdirigering i en lastbalanserare skulle det vara irriterande att ständigt bli varnad om att du inte har aktiverat SECURE_SSL_REDIRECT. Använd SILENCED_SYSTEM_CHECKS för att tysta onödiga kontroller.
Följande kontroller körs om du använder alternativet check --deploy:
security.W001: Du har inte
django.middleware.security.SecurityMiddlewarei dinMIDDLEWAREså inställningarnaSECURE_HSTS_SECONDS,SECURE_CONTENT_TYPE_NOSNIFF,SECURE_REFERRER_POLICY,SECURE_CROSS_ORIGIN_OPENER_POLICYochSECURE_SSL_REDIRECTkommer inte att ha någon effekt.säkerhet.W002: Du har inte
django.middleware.clickjacking.XFrameOptionsMiddlewarei dinMIDDLEWARE, så dina sidor kommer inte att serveras med en'x-frame-options'header. Om det inte finns en god anledning till att din webbplats ska visas i en ram bör du överväga att aktivera det här sidhuvudet för att förhindra clickjacking-attacker.säkerhet.W003: Du verkar inte använda Djangos inbyggda skydd mot förfalskning av begäran på flera webbplatser via middleware (
django.middleware.csrf.CsrfViewMiddlewarefinns inte i dinMIDDLEWARE). Att aktivera middleware är det säkraste tillvägagångssättet för att säkerställa att du inte lämnar några hål.security.W004: Du har inte angett något värde för inställningen
SECURE_HSTS_SECONDS. Om hela din webbplats endast serveras via SSL kan du överväga att ange ett värde och aktivera HTTP Strict Transport Security. Se till att läsa dokumentationen först; om du aktiverar HSTS slarvigt kan det orsaka allvarliga och oåterkalleliga problem.security.W005: Du har inte satt inställningen
SECURE_HSTS_INCLUDE_SUBDOMAINStillTrue. Om du inte gör det är din webbplats potentiellt sårbar för attacker via en osäker anslutning till en underdomän. Ställ endast in detta påTrueom du är säker på att alla underdomäner på din domän ska serveras uteslutande via SSL.säkerhet.W006: Din
SECURE_CONTENT_TYPE_NOSNIFF-inställning är inte inställd påTrue, så dina sidor kommer inte att serveras med en'X-Content-Type-Options: nosniff'-rubrik. Du bör överväga att aktivera detta huvud för att förhindra att webbläsaren identifierar innehållstyper på ett felaktigt sätt.security.W007: Din inställning
SECURE_BROWSER_XSS_FILTERär inte inställd påTrue, så dina sidor kommer inte att serveras med en'X-XSS-Protection: 1; mode=block'rubrik. Du bör överväga att aktivera den här rubriken för att aktivera webbläsarens XSS-filtrering och hjälpa till att förhindra XSS-attacker. Denna kontroll tas bort i Django 3.0 eftersomX-XSS-Protectionheadern inte längre respekteras av moderna webbläsare.security.W008: Din
SECURE_SSL_REDIRECT-inställning är inte inställd påTrue. Om inte din webbplats ska vara tillgänglig via både SSL- och icke-SSL-anslutningar bör du antingen ange inställningenTrueeller konfigurera en lastbalanserare eller reverse-proxy-server för att omdirigera alla anslutningar till HTTPS.security.W009: Din
SECRET_KEYhar mindre än 50 tecken, mindre än 5 unika tecken, eller så är det prefixat med'django-insecure-'vilket indikerar att det genererades automatiskt av Django. Generera ett långt och slumpmässigt värde, annars kommer många av Djangos säkerhetskritiska funktioner att vara sårbara för attacker.security.W010: Du har
django.contrib.sessionsi dinINSTALLED_APPSmen du har inte sattSESSION_COOKIE_SECUREtillTrue. Genom att använda en sessionskaka som endast är säker blir det svårare för sniffare av nätverkstrafik att kapa användarsessioner.säkerhet.W011: Du har
django.contrib.sessions.middleware.SessionMiddlewarei dinMIDDLEWARE, men du har inte sattSESSION_COOKIE_SECUREtillTrue. Om du använder en sessionskaka som endast är säker blir det svårare för sniffare att kapa användarsessioner.security.W012:
SESSION_COOKIE_SECUREär inte satt tillTrue. Om du använder en sessionskaka som bara är säker blir det svårare för sniffare att kapa användarsessioner.säkerhet.W013: Du har
django.contrib.sessionsi dinINSTALLED_APPS, men du har inte sattSESSION_COOKIE_HTTPONLYtillTrue. Genom att använda enHttpOnly-sessionskaka blir det svårare för cross-site scripting-attacker att kapa användarsessioner.säkerhet.W014: Du har
django.contrib.sessions.middleware.SessionMiddlewarei dinMIDDLEWARE, men du har inte sattSESSION_COOKIE_HTTPONLYtillTrue. Om du använder enHttpOnly-sessionskaka blir det svårare för cross-site scripting-attacker att kapa användarsessioner.security.W015:
SESSION_COOKIE_HTTPONLYär inte satt tillTrue. Genom att använda enHttpOnly-sessionskaka blir det svårare för cross-site scripting-attacker att kapa användarsessioner.security.W016:
CSRF_COOKIE_SECUREär inte satt tillTrue. Genom att använda en CSRF-cookie som endast är säker blir det svårare för sniffare av nätverkstrafik att stjäla CSRF-token.security.W017:
CSRF_COOKIE_HTTPONLYär inte satt tillTrue. Genom att använda enHttpOnlyCSRF cookie blir det svårare för cross-site scripting attacker att stjäla CSRF token. Denna kontroll tas bort i Django 1.11 eftersom * :setting:`CSRF_COOKIE_HTTPONLY` *inställningen inte ger någon praktisk fördel.security.W018: Du bör inte ha
DEBUGinställd påTruei distributionen.säkerhet.W019: Du har
django.middleware.clickjacking.XFrameOptionsMiddlewarei dinMIDDLEWARE, menX_FRAME_OPTIONSär inte inställd på'DENY'. Om det inte finns en god anledning till att din webbplats ska visa andra delar av sig själv i en ram, bör du ändra den till'DENY'.security.W020:
ALLOWED_HOSTSfår inte vara tomt i distributionen.security.W021: Du har inte satt inställningen
SECURE_HSTS_PRELOADtillTrue. Om du inte gör det kan din webbplats inte läggas till i webbläsarens lista över förinlästa sidor.säkerhet.W022: Du har inte ställt in inställningen
SECURE_REFERRER_POLICY. Utan denna inställning kommer din webbplats inte att skicka ett Referrer-Policy-huvud. Du bör överväga att aktivera detta huvud för att skydda användarnas integritet.security.E023: Du har satt inställningen
SECURE_REFERRER_POLICYtill ett ogiltigt värde.security.E024: Du har satt inställningen
SECURE_CROSS_ORIGIN_OPENER_POLICYtill ett ogiltigt värde.security.W025: Din
SECRET_KEY_FALLBACKS[n]har mindre än 50 tecken, mindre än 5 unika tecken, eller så är den försedd med'django-insecure-'vilket indikerar att den genererades automatiskt av Django. Generera ett långt och slumpmässigt värde, annars kommer många av Djangos säkerhetskritiska funktioner att vara sårbara för attacker.
Följande kontroller verifierar att dina säkerhetsrelaterade inställningar är korrekt konfigurerade:
security.E100:
DEFAULT_HASHING_ALGORITHMmåste vara'sha1'eller'sha256'. Denna kontroll dök upp i Django 3.1 och 3.2.säkerhet.E101: CSRF-felvyn
'path.to.view'tar inte emot rätt antal argument.säkerhet.E102: CSRF-misslyckandevyn
'path.to.view'kunde inte importeras.
Signaler¶
signals.E001:
<handler>was connected to the<signal>signal with a lazy reference to the sender<app label>.<model>, but app<app label>isn’t installed or does not provide model<model>.
Mallar¶
Följande kontroller verifierar att inställningen TEMPLATES är korrekt konfigurerad:
templates.E001: Du har
'APP_DIRS': Truei dinTEMPLATESmen anger också'loaders'iOPTIONS. Ta antingen bortAPP_DIRSeller ta bort alternativet'loaders. Denna kontroll tas bort i Django 5.1 eftersom systemkontroller nu kan ge * ``ImproperlyConfigured`` *i stället.templates.E002:
string_if_invalidiTEMPLATESOPTIONSmåste vara en sträng men fick:{value}({type}).templates.E003:
<name>används för flera malltaggmoduler:<module list>. Denna kontroll ändrades tilltemplates.W003i Django 4.1.2.templates.W003:
<name>används för flera malltaggmoduler:<module list>.
Översättning¶
Följande kontroller utförs på din översättningskonfiguration:
Översättning.E001: Du har angett ett ogiltigt värde för inställningen
LANGUAGE_CODE:<value>.Översättning.E002: Du har angett en ogiltig språkkod i inställningen
LANGUAGES:<value>.Översättning.E003: Du har angett en ogiltig språkkod i inställningen
LANGUAGES_BIDI:<value>.översättning.E004: Du har angett ett värde för inställningen
LANGUAGE_CODEsom inte finns i inställningenLANGUAGES.
URL:er¶
Följande kontroller utförs på din URL-konfiguration:
urls.W001: Ditt URL-mönster
<pattern>använderinclude()med enroutesom slutar med en$. Ta bort dollarn frånrouteför att undvika problem med att inkludera webbadresser.urls.W002: Ditt URL-mönster
<pattern>har enroutesom börjar med en/. Ta bort detta snedstreck eftersom det är onödigt. Om detta mönster är målet i eninclude(), se till attinclude()-mönstret har en efterföljande/.urls.W003: Ditt URL-mönster
<pattern>har ettnamnsom innehåller en:. Ta bort kolon, för att undvika tvetydiga namnrymdsreferenser.urls.E004: Ditt URL-mönster
<pattern>är ogiltigt. Se till atturlpatternsär en lista medpath()och/ellerre_path()instanser.urls.W005: URL-namnrymden
<namespace>är inte unik. Du kanske inte kan vända alla webbadresser i detta namnområde.urls.E006: Inställningen
MEDIA_URL/STATIC_URLmåste sluta med ett snedstreck.urls.E007: Den anpassade
handlerXXXvyn'path.to.view'tar inte rätt antal argument (…).urls.E008: Den anpassade
handlerXXXvyn'path.to.view'kunde inte importeras.urls.E009: Ditt URL-mönster
<pattern>har en ogiltig vy, skicka<view>.as_view()istället för<view>.urls.W010: Ditt URL-mönster
<pattern>har en omatchad<angle bracket>.
contrib app kontrollerar¶
admin¶
Alla adminkontroller utförs som en del av taggen admin.
Följande kontroller utförs på alla ModelAdmin (eller underklasser) som är registrerade på administratörssidan:
admin.E001: Värdet på
raw_id_fieldsmåste vara en lista eller tupel.admin.E002: Värdet på
raw_id_fields[n]hänvisar till<field name>, som inte är ett fält i<model>.admin.E003: Värdet på
raw_id_fields[n]måste vara en främmande nyckel eller ett många-till-många-fält.admin.E004: Värdet på
fieldsmåste vara en lista eller tupel.admin.E005: Både
fieldsetsochfieldsär specificerade.admin.E006: Värdet av
fieldsinnehåller duplicerade fält.admin.E007: Värdet på
fieldsetsmåste vara en lista eller tupel.admin.E008: Värdet på
fieldsets[n]måste vara en lista eller tupel.admin.E009: Värdet av
fieldsets[n]måste vara av längden 2.admin.E010: Värdet på
fieldsets[n][1]måste vara en ordbok.admin.E011: Värdet av
fieldsets[n][1]måste innehålla nyckelnfields.admin.E012: Det finns duplicerade fält i
fieldsets[n][1].admin.E013: Värdet på
fields[n]/filter_horizontal[n]/filter_vertical[n]/fieldsets[n][m]kan inte inkluderaManyToManyField<field name>, eftersom det fältet manuellt anger en relationsmodell.admin.E014: Värdet på
excludemåste vara en lista eller tupel.admin.E015: Värdet av
excludeinnehåller duplicerade fält.admin.E016: Värdet av
formmåste ärva frånBaseModelForm.admin.E017: Värdet på
filter_verticalmåste vara en lista eller tupel.admin.E018: Värdet på
filter_horizontalmåste vara en lista eller tupel.admin.E019: Värdet på
filter_vertical[n]/filter_horizontal[n]hänvisar till<field name>, som inte är ett fält i<model>.admin.E020: Värdet på
filter_vertical[n]/filter_horizontal[n]måste vara ett många-till-många-fält.admin.E021: Värdet på
radio_fieldsmåste vara en ordbok.admin.E022: Värdet på
radio_fieldshänvisar till<field name>, som inte är ett fält i<model>.admin.E023: Värdet på
radio_fieldsrefererar till<field name>, som inte är en instans avForeignKey, och inte har enchoicesdefinition.admin.E024: Värdet på
radio_fields[<field name>]måste vara antingenadmin.HORIZONTALelleradmin.VERTICAL.admin.E025: Värdet på
view_on_sitemåste vara antingen en callable eller ett boolean-värde.admin.E026: Värdet på
prepopulated_fieldsmåste vara en ordbok.admin.E027: Värdet på
prepopulated_fieldshänvisar till<field name>, som inte är ett fält i<model>.admin.E028: Värdet på
prepopulated_fieldshänvisar till<field name>, som inte får vara ettDateTimeField, ettForeignKey, ettOneToOneFieldeller ettManyToManyFieldfält.admin.E029: Värdet på
prepopulated_fields[<field name>]måste vara en lista eller tupel.admin.E030: Värdet på
prepopulated_fieldshänvisar till<field name>, som inte är ett fält i<model>.admin.E031: Värdet av
orderingmåste vara en lista eller tupel.admin.E032: Värdet av
orderinghar den slumpmässiga ordningsmarkören?, men innehåller även andra fält.admin.E033: Värdet av
orderinghänvisar till<field name>, som inte är ett fält i<model>.admin.E034: Värdet på
readonly_fieldsmåste vara en lista eller tupel.admin.E035: Värdet på
readonly_fields[n]refererar till<field_name>, som inte är en callable, ett attribut till<ModelAdmin class>, eller ett attribut till<model>.admin.E036: Värdet på
autocomplete_fieldsmåste vara en lista eller tupel.admin.E037: Värdet på
autocomplete_fields[n]hänvisar till<field name>, som inte är ett fält i<model>.admin.E038: Värdet på
autocomplete_fields[n]måste vara en främmande nyckel eller ett många-till-många-fält.admin.E039: En admin för modellen
<model>måste vara registrerad för att kunna refereras av<modeladmin>.autocomplete_fields.admin.E040:
<modeladmin>måste definierasearch_fields, eftersom det refereras till av<other_modeladmin>.autocomplete_fields.
ModelAdmin¶
Följande kontroller utförs på alla ModelAdmin som är registrerade på administratörssidan:
admin.E101: Värdet på
save_asmåste vara en boolean.admin.E102: Värdet på
save_on_topmåste vara ett boolean.admin.E103: Värdet på
inlinesmåste vara en lista eller tupel.admin.E104:
<InlineModelAdmin class>måste ärva frånInlineModelAdmin.admin.E105:
<InlineModelAdmin class>måste ha ettmodel-attribut.admin.E106: Värdet av
<InlineModelAdmin class>.modelmåste vara enModel.admin.E107: Värdet på
list_displaymåste vara en lista eller tupel.admin.E108: Värdet på
list_display[n]hänvisar till<label>, som inte är en anropsbar eller attribut för<ModelAdmin class>, eller ett attribut, metod eller fält på<model>.admin.E109: Värdet på
list_display[n]får inte vara ett many-to-many-fält eller en omvänd främmande nyckel.admin.E110: Värdet på
list_display_linksmåste vara en lista, en tupel ellerNone.admin.E111: Värdet på
list_display_links[n]hänvisar till<label>, som inte är definierat ilist_display.admin.E112: Värdet på
list_filtermåste vara en lista eller tupel.admin.E113: Värdet av
list_filter[n]måste ärva frånListFilter.admin.E114: Värdet på
list_filter[n]får inte ärva frånFieldListFilter.admin.E115: Värdet på
list_filter[n][1]måste ärva frånFieldListFilter.admin.E116: Värdet på
list_filter[n]hänvisar till<label>, som inte hänvisar till ett fält.admin.E117: Värdet på
list_select_relatedmåste vara en boolean, tuple eller list.admin.E118: Värdet på
list_per_pagemåste vara ett heltal.admin.E119: Värdet på
list_max_show_allmåste vara ett heltal.admin.E120: Värdet av
list_editablemåste vara en lista eller tupel.admin.E121: Värdet av
list_editable[n]refererar till<label>, som inte är ett fält i<model>.admin.E122: Värdet på
list_editable[n]hänvisar till<label>, som inte finns ilist_display.admin.E123: Värdet i
list_editable[n]kan inte finnas i bådelist_editableochlist_display_links.admin.E124: Värdet på
list_editable[n]hänvisar till det första fältet ilist_display(<label>), som inte kan användas om intelist_display_linksär inställt.admin.E125: Värdet på
list_editable[n]hänvisar till<field name>, som inte kan redigeras via admin.admin.E126: Värdet på
search_fieldsmåste vara en lista eller tupel.admin.E127: Värdet på
date_hierarchyrefererar till<field name>, vilket inte refererar till ett fält.admin.E128: Värdet av
date_hierarchymåste vara enDateFieldellerDateTimeField.admin.E129:
<modeladmin>måste definiera enhas_<foo>_permission()metod för<action>action.admin.E130: attributen
__name__för åtgärder som definieras i<modeladmin>måste vara unika. Namnet<name>är inte unikt.
InlineModelAdmin¶
Följande kontroller utförs på alla InlineModelAdmin som är registrerade som en inline på en ModelAdmin.
admin.E201: Det går inte att utesluta fältet
<field name>, eftersom det är en främmande nyckel till den överordnade modellen<app_label>.<model>.admin.E202:
<model>har ingenForeignKeytill<parent model>./<model>har mer än enForeignKeytill<parent model>. Du måste ange ettfk_name-attribut.admin.E203: Värdet på
extramåste vara ett heltal.admin.E204: Värdet på
max_nummåste vara ett heltal.admin.E205: Värdet på
min_nummåste vara ett heltal.admin.E206: Värdet av
formsetmåste ärva frånBaseModelFormSet.
GenericInlineModelAdmin¶
Följande kontroller utförs på alla GenericInlineModelAdmin som är registrerade som en inline på en ModelAdmin.
admin.E301:
<model>har ingenGenericForeignKey.admin.E302:
'ct_field'refererar till<label>, som inte är ett fält på<model>.admin.E303:
'ct_fk_field'refererar till<label>, som inte är ett fält på<model>.admin.E304:
<model>har ingenGenericForeignKeysom använder innehållstypfältet<field name>och objekt-ID-fältet<field name>.
AdminSite¶
Följande kontroller utförs på standardklassen AdminSite:
admin.E401:
django.contrib.contenttypesmåste finnas iINSTALLED_APPSför att admin-programmet ska kunna användas.admin.E402:
django.contrib.auth.context_processors.authmåste aktiveras iDjangoTemplates(TEMPLATES) om du använder standardbackend för auth för att kunna använda admin-programmet.admin.E403: En instans av
django.template.backends.django.DjangoTemplatesmåste konfigureras iTEMPLATESför att admin-programmet ska kunna användas.admin.E404:
django.contrib.messages.context_processors.messagesmåste vara aktiverat iDjangoTemplates(TEMPLATES) för att kunna använda admin-programmet.admin.E405:
django.contrib.authmåste finnas iINSTALLED_APPSför att admin-programmet ska kunna användas.admin.E406:
django.contrib.messagesmåste finnas iINSTALLED_APPSför att admin-programmet ska kunna användas.admin.E408:
django.contrib.auth.middleware.AuthenticationMiddlewaremåste finnas iMIDDLEWAREför att admin-programmet ska kunna användas.admin.E409:
django.contrib.messages.middleware.MessageMiddlewaremåste finnas iMIDDLEWAREför att admin-programmet ska kunna användas.admin.E410:
django.contrib.sessions.middleware.SessionMiddlewaremåste finnas iMIDDLEWAREför att admin-programmet ska kunna användas.admin.w411:
django.template.context_processors.requestmåste vara aktiverat iDjangoTemplates(TEMPLATES) för att kunna använda sidofältet i admin-navigationen.
auth¶
auth.E001:
REQUIRED_FIELDSmåste vara en lista eller tupel.auth.e002: Fältet som heter
USERNAME_FIELDför en anpassad användarmodell får inte ingå iREQUIRED_FIELDS.auth.E003:
<field>måste vara unik eftersom den är namngiven somUSERNAME_FIELD.auth.w004:
<field>är namngiven somUSERNAME_FIELD, men den är inte unik.auth.E005: Behörigheten med kodnamnet
<codename>krockar med en inbyggd behörighet för modellen<model>.auth.E006: Behörigheten med kodnamnet
<codename>är duplicerad för modellen<model>.auth.e007:
verbose_nameför modellen<model>måste vara högst 244 tecken för att dess inbyggda behörighetsnamn ska vara högst 255 tecken.auth.E008: Behörigheten med namnet
<name>för modellen<model>är längre än 255 tecken.auth.C009:
<User model>.is_anonymousmåste vara ett attribut eller en egenskap snarare än en metod. Att ignorera detta är en säkerhetsfråga eftersom anonyma användare kommer att behandlas som autentiserade!auth.C010:
<User model>.is_authenticatedmåste vara ett attribut eller en egenskap snarare än en metod. Att ignorera detta är en säkerhetsfråga eftersom anonyma användare kommer att behandlas som autentiserade!auth.E011: Namnet på modellen
<model>måste vara högst 93 tecken för att dess inbyggda behörighetsnamn ska vara högst 100 tecken.auth.E012: Behörigheten med kodnamnet
<codename>för modellen<model>är längre än 100 tecken.auth.e013: För att kunna använda
django.contrib.auth.middleware.LoginRequiredMiddlewaremåstedjango.contrib.auth.middleware.AuthenticationMiddlewaredefinieras före den i MIDDLEWARE.
innehållstyper¶
Följande kontroller utförs när en modell innehåller en GenericForeignKey eller GenericRelation:
contenttypes.E001: Objekt-ID:t för
GenericForeignKeyrefererar till det icke-existerande fältet<field>.contenttypes.E002: Innehållstypen
GenericForeignKeyrefererar till det icke existerande fältet<field>.contenttypes.E003:
<field>är inte enForeignKey.contenttypes.E004:
<field>är inte enForeignKeytillcontenttypes.ContentType.innehållstyper.E005: Modellnamn får innehålla högst 100 tecken.
postgres¶
Följande kontroller utförs på django.contrib.postgres modellfält:
postgres.E001: Basfältet för array har fel: …
postgres.E002: Basfältet för en array kan inte vara ett relaterat fält.
postgres.E003:
<field>default bör vara en callable istället för en instans så att den inte delas mellan alla fältinstanser. Denna kontroll ändrades tillfields.E010i Django 3.1.postgres.W004: Basfält för array har varningar: …
webbplatser¶
Följande kontroller utförs på alla modeller som använder en CurrentSiteManager:
sites.E001:
CurrentSiteManagerkunde inte hitta ett fält med namnet<field name>.sites.E002:
CurrentSiteManagerkan inte använda<field>eftersom det inte är en främmande nyckel eller ett många-till-många-fält.
Följande kontroller verifierar att django.contrib.sites är korrekt konfigurerad:
sites.E101: Inställningen
SITE_IDmåste vara ett heltal.
statiska filer¶
Följande kontroller verifierar att django.contrib.staticfiles är korrekt konfigurerad:
staticfiles.E001: Inställningen
STATICFILES_DIRSär inte en tupel eller lista.staticfiles.E002: Inställningen
STATICFILES_DIRSbör inte innehålla inställningenSTATIC_ROOT.staticfiles.E003: Prefixet
<prefix>i inställningenSTATICFILES_DIRSfår inte sluta med ett snedstreck.staticfiles.W004: Katalogen
<directory>iSTATICFILES_DIRSfinns inte.staticfiles.E005: Inställningen
STORAGESmåste definiera en lagringsplats förstaticfiles.