{"title":"Designfilosofier","version":"6.0","locale":"sv","docname":"misc/design-philosophies","url":"/sv/6.0/misc/design-philosophies/","canonical":"https://djangodocs.dev/sv/6.0/misc/design-philosophies/","summary":"Detta dokument förklarar några av de grundläggande filosofier som Djangos utvecklare har använt för att skapa ramverket. Dess mål är att förklara det förflutna och…","html":"<h1>Designfilosofier<a class=\"heading-anchor\" href=\"#design-philosophies\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Detta dokument förklarar några av de grundläggande filosofier som Djangos utvecklare har använt för att skapa ramverket. Dess mål är att förklara det förflutna och vägleda framtiden.</p>\n<section id=\"overall\">\n<h2>Övergripande<a class=\"heading-anchor\" href=\"#overall\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"loose-coupling\">\n<span id=\"id1\"></span><h3>Lösa kopplingar<a class=\"heading-anchor\" href=\"#loose-coupling\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p id=\"index-0\">Ett grundläggande mål för Djangos stack är <a class=\"reference external\" href=\"https://wiki.c2.com/?CouplingAndCohesion\">lös koppling och tät sammanhållning</a>. De olika lagren i ramverket ska inte ”veta” om varandra om det inte är absolut nödvändigt.</p>\n<p>Mallsystemet vet t.ex. ingenting om webbförfrågningar, databaslagret vet ingenting om datavisning och visningssystemet bryr sig inte om vilket mallsystem en programmerare använder.</p>\n<p>Även om Django levereras med en komplett stack för enkelhetens skull, är delarna av stacken oberoende av varandra där det är möjligt.</p>\n</section>\n<section id=\"less-code\">\n<span id=\"id2\"></span><h3>Mindre kod<a class=\"heading-anchor\" href=\"#less-code\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Django-appar ska använda så lite kod som möjligt; de ska sakna boilerplate. Django bör dra full nytta av Pythons dynamiska funktioner, till exempel introspektion.</p>\n</section>\n<section id=\"quick-development\">\n<span id=\"id3\"></span><h3>Snabb utveckling<a class=\"heading-anchor\" href=\"#quick-development\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Poängen med ett webbramverk på 2000-talet är att göra de tråkiga aspekterna av webbutveckling snabba. Django bör möjliggöra otroligt snabb webbutveckling.</p>\n</section>\n<section id=\"don-t-repeat-yourself-dry\">\n<span id=\"dry\"></span><h3>Upprepa inte dig själv (DRY)<a class=\"heading-anchor\" href=\"#don-t-repeat-yourself-dry\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p id=\"index-1\">Varje distinkt begrepp och/eller uppgift bör finnas på en och endast en plats. Redundans är dåligt. Normalisering är bra.</p>\n<p>Ramverket bör, inom rimliga gränser, härleda så mycket som möjligt från så lite som möjligt.</p>\n<aside class=\"admonition admonition-seealso\">\n<p class=\"admonition-title\">Se även</p>\n<p>Diskussionen om DRY på Portland Pattern Repository</p>\n</aside>\n</section>\n<section id=\"explicit-is-better-than-implicit\">\n<span id=\"id5\"></span><h3>Explicit är bättre än implicit<a class=\"heading-anchor\" href=\"#explicit-is-better-than-implicit\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Detta är en grundläggande Python-princip som listas i <span class=\"target\" id=\"index-6\"></span><a class=\"pep reference external\" href=\"https://peps.python.org/pep-0020/\"><strong>PEP 20</strong></a>, och det innebär att Django inte ska göra för mycket ”magi” Magi bör inte hända om det inte finns en riktigt bra anledning till det. Magi är värt att använda endast om det skapar en enorm bekvämlighet som inte kan uppnås på andra sätt, och det implementeras inte på ett sätt som förvirrar utvecklare som försöker lära sig hur man använder funktionen.</p>\n</section>\n<section id=\"consistency\">\n<span id=\"id6\"></span><h3>Samstämmighet<a class=\"heading-anchor\" href=\"#consistency\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Ramverket bör vara konsekvent på alla nivåer. Konsistens gäller allt från låg nivå (den Python-kodningsstil som används) till hög nivå (”upplevelsen” av att använda Django).</p>\n</section>\n</section>\n<section id=\"models\">\n<h2>Modeller<a class=\"heading-anchor\" href=\"#models\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"id7\">\n<h3>Explicit är bättre än implicit<a class=\"heading-anchor\" href=\"#id7\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Fält bör inte anta vissa beteenden enbart baserat på fältets namn. Detta kräver för mycket kunskap om systemet och är felbenäget. Istället bör beteenden baseras på nyckelordsargument och, i vissa fall, på fältets typ.</p>\n</section>\n<section id=\"include-all-relevant-domain-logic\">\n<h3>Inkludera all relevant domänlogik<a class=\"heading-anchor\" href=\"#include-all-relevant-domain-logic\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Modeller ska kapsla in alla aspekter av ett ”objekt”, enligt Martin Fowlers designmönster <a class=\"reference external\" href=\"https://www.martinfowler.com/eaaCatalog/activeRecord.html\">Active Record</a>.</p>\n<p>Det är därför som både de data som representeras av en modell och information om den (dess mänskligt läsbara namn, alternativ som standardordning etc.) definieras i modellklassen; all information som behövs för att förstå en viss modell bör lagras <em>i</em> modellen.</p>\n</section>\n</section>\n<section id=\"database-api\">\n<h2>Databas-API<a class=\"heading-anchor\" href=\"#database-api\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>De viktigaste målen för databas-API:et är:</p>\n<section id=\"sql-efficiency\">\n<h3>SQL-effektivitet<a class=\"heading-anchor\" href=\"#sql-efficiency\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Den ska exekvera SQL-satser så få gånger som möjligt och den ska optimera satserna internt.</p>\n<p>Det är därför som utvecklare måste anropa <code class=\"docutils literal notranslate\"><span class=\"pre\">save()</span></code> explicit, i stället för att ramverket sparar saker bakom kulisserna i tysthet.</p>\n<p>Det är också därför som metoden <code class=\"docutils literal notranslate\"><span class=\"pre\">select_related()</span> <span class=\"pre\">``</span> <span class=\"pre\">``QuerySet</span></code> finns. Det är en valfri prestandaförstärkare för det vanliga fallet att välja ”varje relaterat objekt”</p>\n</section>\n<section id=\"terse-powerful-syntax\">\n<h3>Kortfattad, kraftfull syntax<a class=\"heading-anchor\" href=\"#terse-powerful-syntax\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Databas-API:et bör tillåta omfattande, uttrycksfulla uttalanden med så lite syntax som möjligt. Det ska inte vara beroende av import av andra moduler eller hjälpobjekt.</p>\n<p>Sammanfogningar bör utföras automatiskt, bakom kulisserna, när det behövs.</p>\n<p>Varje objekt bör kunna komma åt alla relaterade objekt i hela systemet. Denna åtkomst bör fungera åt båda hållen.</p>\n</section>\n<section id=\"option-to-drop-into-raw-sql-easily-when-needed\">\n<h3>Möjlighet att enkelt gå över till raw SQL när det behövs<a class=\"heading-anchor\" href=\"#option-to-drop-into-raw-sql-easily-when-needed\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Databas-API:et bör inse att det är en genväg, men inte nödvändigtvis en universallösning. Ramverket bör göra det enkelt att skriva anpassad SQL - hela uttalanden eller bara anpassade <code class=\"docutils literal notranslate\"><span class=\"pre\">WHERE</span></code>-klausuler som anpassade parametrar till API-anrop.</p>\n</section>\n</section>\n<section id=\"url-design\">\n<h2>URL-design<a class=\"heading-anchor\" href=\"#url-design\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"id8\">\n<h3>Lösa kopplingar<a class=\"heading-anchor\" href=\"#id8\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>URL:er i en Django-app ska inte kopplas till den underliggande Python-koden. Att binda webbadresser till Python-funktionsnamn är en dålig och ful sak.</p>\n<p>I linje med detta bör Djangos URL-system tillåta att URL:er för samma app kan vara olika i olika sammanhang. Till exempel kan en webbplats lägga berättelser på <code class=\"docutils literal notranslate\"><span class=\"pre\">/stories/</span></code>, medan en annan kan använda <code class=\"docutils literal notranslate\"><span class=\"pre\">/news/</span></code>.</p>\n</section>\n<section id=\"infinite-flexibility\">\n<h3>Oändlig flexibilitet<a class=\"heading-anchor\" href=\"#infinite-flexibility\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>URL:er bör vara så flexibla som möjligt. Alla tänkbara utformningar av webbadresser bör tillåtas.</p>\n</section>\n<section id=\"encourage-best-practices\">\n<h3>Uppmuntra bästa praxis<a class=\"heading-anchor\" href=\"#encourage-best-practices\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Ramverket bör göra det lika enkelt (eller till och med enklare) för en utvecklare att skapa snygga webbadresser som fula.</p>\n<p>Filtillägg i webbsidors URL:er bör undvikas.</p>\n<p>Vignettliknande kommatecken i webbadresser förtjänar stränga straff.</p>\n</section>\n<section id=\"definitive-urls\">\n<span id=\"id9\"></span><h3>Definitiva webbadresser<a class=\"heading-anchor\" href=\"#definitive-urls\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p id=\"index-3\">Tekniskt sett är <code class=\"docutils literal notranslate\"><span class=\"pre\">foo.com/bar</span></code> och <code class=\"docutils literal notranslate\"><span class=\"pre\">foo.com/bar/</span></code> två olika webbadresser, och sökmotorrobotar (och vissa verktyg för analys av webbtrafik) skulle behandla dem som separata sidor. Django bör anstränga sig för att ”normalisera” webbadresser så att sökmotorrobotar inte blir förvirrade.</p>\n<p>Detta är resonemanget bakom inställningen <a class=\"reference internal\" href=\"/sv/6.0/ref/settings/#std-setting-APPEND_SLASH\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">APPEND_SLASH</span></code></a>.</p>\n</section>\n</section>\n<section id=\"template-system\">\n<h2>Mallsystem<a class=\"heading-anchor\" href=\"#template-system\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"separate-logic-from-presentation\">\n<span id=\"separation-of-logic-and-presentation\"></span><h3>Skilj logik från presentation<a class=\"heading-anchor\" href=\"#separate-logic-from-presentation\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Vi ser ett mallsystem som ett verktyg som kontrollerar presentation och presentationsrelaterad logik - och det är allt. Mallsystemet bör inte stödja funktionalitet som går utöver detta grundläggande mål.</p>\n</section>\n<section id=\"discourage-redundancy\">\n<h3>Motverka redundans<a class=\"heading-anchor\" href=\"#discourage-redundancy\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>De flesta dynamiska webbplatser använder någon form av gemensam design för hela webbplatsen - en gemensam sidhuvud, sidfot, navigeringsfält osv. Djangos mallsystem bör göra det enkelt att lagra dessa element på ett enda ställe, vilket eliminerar dubbel kod.</p>\n<p>Detta är filosofin bakom <a class=\"reference internal\" href=\"/sv/6.0/ref/templates/language/#template-inheritance\"><span class=\"std std-ref\">template inheritance</span></a>.</p>\n</section>\n<section id=\"be-decoupled-from-html\">\n<h3>Kopplas bort från HTML<a class=\"heading-anchor\" href=\"#be-decoupled-from-html\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Mallsystemet bör inte vara utformat så att det bara genererar HTML. Det bör vara lika bra på att generera andra textbaserade format, eller bara vanlig text.</p>\n</section>\n<section id=\"xml-should-not-be-used-for-template-languages\">\n<h3>XML bör inte användas för mallspråk<a class=\"heading-anchor\" href=\"#xml-should-not-be-used-for-template-languages\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p id=\"index-4\">Att använda en XML-motor för att analysera mallar innebär en helt ny värld av mänskliga fel vid redigering av mallar - och en oacceptabel nivå av overhead vid mallbearbetning.</p>\n</section>\n<section id=\"assume-designer-competence\">\n<h3>Utgå från designerns kompetens<a class=\"heading-anchor\" href=\"#assume-designer-competence\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Mallsystemet bör inte utformas så att mallar nödvändigtvis visas snyggt i WYSIWYG-editorer som Dreamweaver. Det är en alltför allvarlig begränsning och skulle inte tillåta syntaxen att vara så fin som den är. Django förväntar sig att mallförfattare är bekväma med att redigera HTML direkt.</p>\n</section>\n<section id=\"treat-whitespace-obviously\">\n<h3>Behandla blanksteg på ett självklart sätt<a class=\"heading-anchor\" href=\"#treat-whitespace-obviously\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Mallsystemet bör inte göra magiska saker med blanksteg. Om en mall innehåller blanksteg bör systemet behandla blanksteget som text - bara visa det. Alla blanksteg som inte finns i en malltagg ska visas.</p>\n</section>\n<section id=\"don-t-invent-a-programming-language\">\n<h3>Uppfinn inte ett programmeringsspråk<a class=\"heading-anchor\" href=\"#don-t-invent-a-programming-language\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Målet är inte att uppfinna ett programmeringsspråk. Målet är att erbjuda precis tillräckligt med programmeringsliknande funktionalitet, såsom förgrening och looping, som är nödvändig för att fatta presentationsrelaterade beslut. <a class=\"reference internal\" href=\"/sv/6.0/topics/templates/#template-language-intro\"><span class=\"std std-ref\">Django Template Language (DTL)</span></a> syftar till att undvika avancerad logik.</p>\n</section>\n<section id=\"safety-and-security\">\n<h3>Trygghet och säkerhet<a class=\"heading-anchor\" href=\"#safety-and-security\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Mallsystemet bör i utgångsläget förbjuda införandet av skadlig kod - till exempel kommandon som raderar databasposter.</p>\n<p>Detta är ytterligare ett skäl till att mallsystemet inte tillåter godtycklig Python-kod.</p>\n</section>\n<section id=\"extensibility\">\n<h3>Utökad tillgänglighet<a class=\"heading-anchor\" href=\"#extensibility\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Mallsystemet bör vara medvetet om att avancerade mallförfattare kan vilja utöka dess teknik.</p>\n<p>Detta är filosofin bakom anpassade malltaggar och filter.</p>\n</section>\n</section>\n<section id=\"views\">\n<h2>Vyer<a class=\"heading-anchor\" href=\"#views\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"simplicity\">\n<h3>Enkelhet<a class=\"heading-anchor\" href=\"#simplicity\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Att skriva en vy borde vara lika enkelt som att skriva en Python-funktion. Utvecklare ska inte behöva instansiera en klass när det räcker med en funktion.</p>\n</section>\n<section id=\"use-request-objects\">\n<h3>Använda förfrågningsobjekt<a class=\"heading-anchor\" href=\"#use-request-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Vyer bör ha tillgång till ett request-objekt - ett objekt som lagrar metadata om den aktuella förfrågan. Objektet bör skickas direkt till en vyfunktion, i stället för att vyfunktionen måste komma åt förfrågningsdata från en global variabel. Detta gör det lätt, rent och enkelt att testa vyer genom att skicka in ”falska” request-objekt.</p>\n</section>\n<section id=\"id10\">\n<h3>Lösa kopplingar<a class=\"heading-anchor\" href=\"#id10\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>En vy bör inte bry sig om vilket mallsystem utvecklaren använder - eller ens om ett mallsystem används överhuvudtaget.</p>\n</section>\n<section id=\"differentiate-between-get-and-post\">\n<h3>Skillnad mellan GET och POST<a class=\"heading-anchor\" href=\"#differentiate-between-get-and-post\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>GET och POST är olika; utvecklare bör uttryckligen använda det ena eller det andra. Ramverket bör göra det lätt att skilja mellan GET- och POST-data.</p>\n</section>\n</section>\n<section id=\"cache-framework\">\n<span id=\"cache-design-philosophy\"></span><h2>Cache-ramverk<a class=\"heading-anchor\" href=\"#cache-framework\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>De centrala målen för Djangos <a class=\"reference internal\" href=\"/sv/6.0/topics/cache/\"><span class=\"doc\">cache-ramverk</span></a> är:</p>\n<section id=\"id11\">\n<h3>Mindre kod<a class=\"heading-anchor\" href=\"#id11\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>A cache should be as fast as possible. Hence, all framework code surrounding\nthe cache backend should be kept to the absolute minimum, especially for\n<code class=\"docutils literal notranslate\"><span class=\"pre\">get()</span></code> operations.</p>\n</section>\n<section id=\"id12\">\n<h3>Samstämmighet<a class=\"heading-anchor\" href=\"#id12\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Cache-API:et bör tillhandahålla ett konsekvent gränssnitt för de olika cache-backends.</p>\n</section>\n<section id=\"id13\">\n<h3>Utökad tillgänglighet<a class=\"heading-anchor\" href=\"#id13\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Cache-API:t bör vara utbyggbart på applikationsnivå baserat på utvecklarens behov (se t.ex. <a class=\"reference internal\" href=\"/sv/6.0/topics/cache/#cache-key-transformation\"><span class=\"std std-ref\">Transformation av cache-nyckel</span></a>).</p>\n</section>\n</section>","rootId":"design-philosophies","toc":[{"title":"Övergripande","anchor":"overall","children":[{"title":"Lösa kopplingar","anchor":"loose-coupling","children":[]},{"title":"Mindre kod","anchor":"less-code","children":[]},{"title":"Snabb utveckling","anchor":"quick-development","children":[]},{"title":"Upprepa inte dig själv (DRY)","anchor":"don-t-repeat-yourself-dry","children":[]},{"title":"Explicit är bättre än implicit","anchor":"explicit-is-better-than-implicit","children":[]},{"title":"Samstämmighet","anchor":"consistency","children":[]}]},{"title":"Modeller","anchor":"models","children":[{"title":"Explicit är bättre än implicit","anchor":"id7","children":[]},{"title":"Inkludera all relevant domänlogik","anchor":"include-all-relevant-domain-logic","children":[]}]},{"title":"Databas-API","anchor":"database-api","children":[{"title":"SQL-effektivitet","anchor":"sql-efficiency","children":[]},{"title":"Kortfattad, kraftfull syntax","anchor":"terse-powerful-syntax","children":[]},{"title":"Möjlighet att enkelt gå över till raw SQL när det behövs","anchor":"option-to-drop-into-raw-sql-easily-when-needed","children":[]}]},{"title":"URL-design","anchor":"url-design","children":[{"title":"Lösa kopplingar","anchor":"id8","children":[]},{"title":"Oändlig flexibilitet","anchor":"infinite-flexibility","children":[]},{"title":"Uppmuntra bästa praxis","anchor":"encourage-best-practices","children":[]},{"title":"Definitiva webbadresser","anchor":"definitive-urls","children":[]}]},{"title":"Mallsystem","anchor":"template-system","children":[{"title":"Skilj logik från presentation","anchor":"separate-logic-from-presentation","children":[]},{"title":"Motverka redundans","anchor":"discourage-redundancy","children":[]},{"title":"Kopplas bort från HTML","anchor":"be-decoupled-from-html","children":[]},{"title":"XML bör inte användas för mallspråk","anchor":"xml-should-not-be-used-for-template-languages","children":[]},{"title":"Utgå från designerns kompetens","anchor":"assume-designer-competence","children":[]},{"title":"Behandla blanksteg på ett självklart sätt","anchor":"treat-whitespace-obviously","children":[]},{"title":"Uppfinn inte ett programmeringsspråk","anchor":"don-t-invent-a-programming-language","children":[]},{"title":"Trygghet och säkerhet","anchor":"safety-and-security","children":[]},{"title":"Utökad tillgänglighet","anchor":"extensibility","children":[]}]},{"title":"Vyer","anchor":"views","children":[{"title":"Enkelhet","anchor":"simplicity","children":[]},{"title":"Använda förfrågningsobjekt","anchor":"use-request-objects","children":[]},{"title":"Lösa kopplingar","anchor":"id10","children":[]},{"title":"Skillnad mellan GET och POST","anchor":"differentiate-between-get-and-post","children":[]}]},{"title":"Cache-ramverk","anchor":"cache-framework","children":[{"title":"Mindre kod","anchor":"id11","children":[]},{"title":"Samstämmighet","anchor":"id12","children":[]},{"title":"Utökad tillgänglighet","anchor":"id13","children":[]}]}],"breadcrumbs":[{"docname":"misc/index","title":"Metadokumentation och diverse","url":"/sv/6.0/misc/"}],"prev":{"docname":"misc/api-stability","title":"API-stabilitet","url":"/sv/6.0/misc/api-stability/"},"next":{"docname":"misc/distributions","title":"Tredjepartsdistributioner av Django","url":"/sv/6.0/misc/distributions/"},"formats":{"html":"/sv/6.0/misc/design-philosophies/","markdown":"/sv/6.0/misc/design-philosophies.md","json":"/sv/6.0/misc/design-philosophies.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/misc/design-philosophies.txt","official":"https://docs.djangoproject.com/sv/6.0/misc/design-philosophies/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}