{"title":"Formtillgångar (klassen ”Media”)","version":"6.0","locale":"sv","docname":"topics/forms/media","url":"/sv/6.0/topics/forms/media/","canonical":"https://djangodocs.dev/sv/6.0/topics/forms/media/","summary":"För att skapa ett attraktivt och lättanvänt webbformulär krävs mer än bara HTML - det krävs också CSS-stilmallar, och om du vill använda snygga widgetar kan du…","html":"<h1>Formtillgångar (klassen ”Media”)<a class=\"heading-anchor\" href=\"#form-assets-the-media-class\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>För att skapa ett attraktivt och lättanvänt webbformulär krävs mer än bara HTML - det krävs också CSS-stilmallar, och om du vill använda snygga widgetar kan du också behöva inkludera lite JavaScript på varje sida. Den exakta kombinationen av CSS och JavaScript som krävs för en viss sida beror på vilka widgetar som används på den sidan.</p>\n<p>Det är här tillgångsdefinitioner kommer in i bilden. Django låter dig associera olika filer - som stilmallar och skript - med de formulär och widgetar som kräver dessa tillgångar. Om du till exempel vill använda en kalender för att rendera DateFields kan du definiera en anpassad Calendar-widget. Denna widget kan sedan associeras med den CSS och JavaScript som krävs för att rendera kalendern. När kalenderwidgeten används i ett formulär kan Django identifiera de CSS- och JavaScript-filer som krävs och tillhandahålla listan med filnamn i ett formulär som är lämpligt att inkludera på din webbsida.</p>\n<aside class=\"admonition-assets-and-django-admin admonition\">\n<p class=\"admonition-title\">Tillgångar och Django Admin</p>\n<p>Programmet Django Admin definierar ett antal anpassade widgetar för kalendrar, filtrerade val och så vidare. Dessa widgetar definierar tillgångskrav och Django Admin använder de anpassade widgetarna i stället för Djangos standardinställningar. Admin-mallarna innehåller endast de filer som krävs för att rendera widgetarna på en viss sida.</p>\n<p>Om du gillar widgetarna som Django Admin-applikationen använder, känn dig fri att använda dem i din egen applikation! De är alla lagrade i <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.admin.widgets</span></code>.</p>\n</aside>\n<aside class=\"admonition-which-javascript-toolkit admonition\">\n<p class=\"admonition-title\">Vilken JavaScript-verktygslåda?</p>\n<p>Det finns många JavaScript-verktygslådor och många av dem innehåller widgets (t.ex. kalenderwidgets) som kan användas för att förbättra din applikation. Django har medvetet undvikit att välsigna någon JavaScript-verktygssats. Varje verktygslåda har sina egna relativa styrkor och svagheter - använd den verktygslåda som passar dina krav. Django kan integreras med vilken JavaScript-verktygslåda som helst.</p>\n</aside>\n<section id=\"assets-as-a-static-definition\">\n<span id=\"id1\"></span><h2>Tillgångar som en statisk definition<a class=\"heading-anchor\" href=\"#assets-as-a-static-definition\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Det enklaste sättet att definiera tillgångar är som en statisk definition. Med den här metoden är deklarationen en inre klass av typen <code class=\"docutils literal notranslate\"><span class=\"pre\">Media</span></code>. Egenskaperna för den inre klassen definierar kraven.</p>\n<p>Här är ett exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">forms</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">CalendarWidget</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">TextInput</span><span class=\"p\">):</span>\n    <span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Media</span><span class=\"p\">:</span>\n        <span class=\"n\">css</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n            <span class=\"s2\">&quot;all&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s2\">&quot;pretty.css&quot;</span><span class=\"p\">],</span>\n        <span class=\"p\">}</span>\n        <span class=\"n\">js</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;animations.js&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;actions.js&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>Denna kod definierar en <code class=\"docutils literal notranslate\"><span class=\"pre\">CalendarWidget</span></code>, som kommer att baseras på <code class=\"docutils literal notranslate\"><span class=\"pre\">TextInput</span></code>. Varje gång CalendarWidget används i ett formulär kommer formuläret att instrueras att inkludera CSS-filen <code class=\"docutils literal notranslate\"><span class=\"pre\">pretty.css</span></code> och JavaScript-filerna <code class=\"docutils literal notranslate\"><span class=\"pre\">animations.js</span></code> och <code class=\"docutils literal notranslate\"><span class=\"pre\">actions.js</span></code>.</p>\n<p>Denna statiska definition omvandlas vid körning till en widgetegenskap med namnet <code class=\"docutils literal notranslate\"><span class=\"pre\">media</span></code>. Listan över tillgångar för en <code class=\"docutils literal notranslate\"><span class=\"pre\">CalendarWidget</span></code>-instans kan hämtas via den här egenskapen:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">w</span> <span class=\"o\">=</span> <span class=\"n\">CalendarWidget</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">w</span><span class=\"o\">.</span><span class=\"n\">media</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;link href=&quot;https://static.example.com/pretty.css&quot; media=&quot;all&quot; rel=&quot;stylesheet&quot;&gt;</span>\n<span class=\"go\">&lt;script src=&quot;https://static.example.com/animations.js&quot;&gt;&lt;/script&gt;</span>\n<span class=\"go\">&lt;script src=&quot;https://static.example.com/actions.js&quot;&gt;&lt;/script&gt;</span>\n</code></pre></div>\n<p>Här är en lista över alla möjliga <code class=\"docutils literal notranslate\"><span class=\"pre\">Media</span></code>-alternativ. Det finns inga obligatoriska alternativ.</p>\n<section id=\"css\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">css</span></code><a class=\"heading-anchor\" href=\"#css\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>En ordbok som beskriver de CSS-filer som krävs för olika typer av utdatamedia.</p>\n<p>Värdena i ordlistan bör vara en tupel/lista med filnamn. Se <a class=\"reference internal\" href=\"#form-asset-paths\"><span class=\"std std-ref\">avsnittet om sökvägar</span></a> för information om hur du anger sökvägar till dessa filer.</p>\n<p>Nycklarna i ordlistan är mediatyperna för utdata. Dessa är samma typer som accepteras av CSS-filer i mediedeklarationer: ’all’, ’aural’, ’braille’, ’embossed’, ’handheld’, ’print’, ’projection’, ’screen’, ’tty’ och ’tv’. Om du behöver ha olika stilmallar för olika medietyper ska du ange en lista med CSS-filer för varje utdatamedium. Följande exempel skulle ge två CSS-alternativ - ett för skärmen och ett för utskrift:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Media</span><span class=\"p\">:</span>\n    <span class=\"n\">css</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n        <span class=\"s2\">&quot;screen&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s2\">&quot;pretty.css&quot;</span><span class=\"p\">],</span>\n        <span class=\"s2\">&quot;print&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s2\">&quot;newspaper.css&quot;</span><span class=\"p\">],</span>\n    <span class=\"p\">}</span>\n</code></pre></div>\n<p>Om en grupp CSS-filer är lämpliga för flera olika typer av utdatamedier kan ordboksnyckeln vara en kommaseparerad lista över typerna av utdatamedier. I följande exempel kommer TV-apparater och projektorer att ha samma mediekrav:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Media</span><span class=\"p\">:</span>\n    <span class=\"n\">css</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n        <span class=\"s2\">&quot;screen&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s2\">&quot;pretty.css&quot;</span><span class=\"p\">],</span>\n        <span class=\"s2\">&quot;tv,projector&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s2\">&quot;lo_res.css&quot;</span><span class=\"p\">],</span>\n        <span class=\"s2\">&quot;print&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s2\">&quot;newspaper.css&quot;</span><span class=\"p\">],</span>\n    <span class=\"p\">}</span>\n</code></pre></div>\n<p>Om denna sista CSS-definition skulle renderas skulle den bli följande HTML:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">link</span> <span class=\"na\">href</span><span class=\"o\">=</span><span class=\"s\">&quot;https://static.example.com/pretty.css&quot;</span> <span class=\"na\">media</span><span class=\"o\">=</span><span class=\"s\">&quot;screen&quot;</span> <span class=\"na\">rel</span><span class=\"o\">=</span><span class=\"s\">&quot;stylesheet&quot;</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">link</span> <span class=\"na\">href</span><span class=\"o\">=</span><span class=\"s\">&quot;https://static.example.com/lo_res.css&quot;</span> <span class=\"na\">media</span><span class=\"o\">=</span><span class=\"s\">&quot;tv,projector&quot;</span> <span class=\"na\">rel</span><span class=\"o\">=</span><span class=\"s\">&quot;stylesheet&quot;</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">link</span> <span class=\"na\">href</span><span class=\"o\">=</span><span class=\"s\">&quot;https://static.example.com/newspaper.css&quot;</span> <span class=\"na\">media</span><span class=\"o\">=</span><span class=\"s\">&quot;print&quot;</span> <span class=\"na\">rel</span><span class=\"o\">=</span><span class=\"s\">&quot;stylesheet&quot;</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n</section>\n<section id=\"js\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">js</span></code><a class=\"heading-anchor\" href=\"#js\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>En tupel som beskriver de JavaScript-filer som krävs. Se <a class=\"reference internal\" href=\"#form-asset-paths\"><span class=\"std std-ref\">avsnittet om sökvägar</span></a> för information om hur du anger sökvägar till dessa filer.</p>\n<section id=\"script-objects\">\n<h4><code class=\"docutils literal notranslate\"><span class=\"pre\">Script</span></code>-objekt<a class=\"heading-anchor\" href=\"#script-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<aside class=\"version-note version-added\" data-version=\"5.2\">\n<p class=\"version-note-title\">New in Django 5.2</p></aside>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Script\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">Script</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">src</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">attributes</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.Script\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Representerar en skriptfil.</p>\n<p>Den första parametern, <code class=\"docutils literal notranslate\"><span class=\"pre\">src</span></code>, är strängsökvägen till skriptfilen. Se <a class=\"reference internal\" href=\"#form-asset-paths\"><span class=\"std std-ref\">avsnittet om sökvägar</span></a> för mer information om hur du anger sökvägar till dessa filer.</p>\n<p>De valfria nyckelordsargumenten, <code class=\"docutils literal notranslate\"><span class=\"pre\">**attributes</span></code>, är HTML-attribut som ställs in på den återgivna <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;script&gt;</span></code>-taggen.</p>\n<p>Se <a class=\"reference internal\" href=\"#form-media-asset-objects\"><span class=\"std std-ref\">Banor som objekt</span></a> för användningsexempel.</p>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"extend\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">förlänga</span></code><a class=\"heading-anchor\" href=\"#extend\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>En boolean som definierar arvsbeteendet för <code class=\"docutils literal notranslate\"><span class=\"pre\">Media</span></code>-deklarationer.</p>\n<p>Som standard kommer alla objekt som använder en statisk <code class=\"docutils literal notranslate\"><span class=\"pre\">Media</span></code>-definition att ärva alla tillgångar som är associerade med den överordnade widgeten. Detta sker oavsett hur den överordnade widgeten definierar sina egna krav. Till exempel, om vi skulle utöka vår grundläggande kalenderwidget från exemplet ovan:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">FancyCalendarWidget</span><span class=\"p\">(</span><span class=\"n\">CalendarWidget</span><span class=\"p\">):</span>\n<span class=\"gp\">... </span>    <span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Media</span><span class=\"p\">:</span>\n<span class=\"gp\">... </span>        <span class=\"n\">css</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n<span class=\"gp\">... </span>            <span class=\"s2\">&quot;all&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s2\">&quot;fancy.css&quot;</span><span class=\"p\">],</span>\n<span class=\"gp\">... </span>        <span class=\"p\">}</span>\n<span class=\"gp\">... </span>        <span class=\"n\">js</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;whizbang.js&quot;</span><span class=\"p\">]</span>\n<span class=\"gp\">...</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">w</span> <span class=\"o\">=</span> <span class=\"n\">FancyCalendarWidget</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">w</span><span class=\"o\">.</span><span class=\"n\">media</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;link href=&quot;https://static.example.com/pretty.css&quot; media=&quot;all&quot; rel=&quot;stylesheet&quot;&gt;</span>\n<span class=\"go\">&lt;link href=&quot;https://static.example.com/fancy.css&quot; media=&quot;all&quot; rel=&quot;stylesheet&quot;&gt;</span>\n<span class=\"go\">&lt;script src=&quot;https://static.example.com/animations.js&quot;&gt;&lt;/script&gt;</span>\n<span class=\"go\">&lt;script src=&quot;https://static.example.com/actions.js&quot;&gt;&lt;/script&gt;</span>\n<span class=\"go\">&lt;script src=&quot;https://static.example.com/whizbang.js&quot;&gt;&lt;/script&gt;</span>\n</code></pre></div>\n<p>FancyCalendar-widgeten ärver alla tillgångar från sin föräldrawidget. Om du inte vill att <code class=\"docutils literal notranslate\"><span class=\"pre\">Media</span></code> ska ärvas på detta sätt lägger du till en <code class=\"docutils literal notranslate\"><span class=\"pre\">extend=False</span></code>-deklaration i <code class=\"docutils literal notranslate\"><span class=\"pre\">Media</span></code>-deklarationen:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">FancyCalendarWidget</span><span class=\"p\">(</span><span class=\"n\">CalendarWidget</span><span class=\"p\">):</span>\n<span class=\"gp\">... </span>    <span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Media</span><span class=\"p\">:</span>\n<span class=\"gp\">... </span>        <span class=\"n\">extend</span> <span class=\"o\">=</span> <span class=\"kc\">False</span>\n<span class=\"gp\">... </span>        <span class=\"n\">css</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n<span class=\"gp\">... </span>            <span class=\"s2\">&quot;all&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s2\">&quot;fancy.css&quot;</span><span class=\"p\">],</span>\n<span class=\"gp\">... </span>        <span class=\"p\">}</span>\n<span class=\"gp\">... </span>        <span class=\"n\">js</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;whizbang.js&quot;</span><span class=\"p\">]</span>\n<span class=\"gp\">...</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">w</span> <span class=\"o\">=</span> <span class=\"n\">FancyCalendarWidget</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">w</span><span class=\"o\">.</span><span class=\"n\">media</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;link href=&quot;https://static.example.com/fancy.css&quot; media=&quot;all&quot; rel=&quot;stylesheet&quot;&gt;</span>\n<span class=\"go\">&lt;script src=&quot;https://static.example.com/whizbang.js&quot;&gt;&lt;/script&gt;</span>\n</code></pre></div>\n<p>Om du vill ha ännu mer kontroll över arvet kan du definiera dina tillgångar med hjälp av en <a class=\"reference internal\" href=\"#dynamic-property\"><span class=\"std std-ref\">dynamisk egenskap</span></a>. Dynamiska egenskaper ger dig fullständig kontroll över vilka filer som ärvs och vilka som inte ärvs.</p>\n</section>\n</section>\n<section id=\"media-as-a-dynamic-property\">\n<span id=\"dynamic-property\"></span><h2><code class=\"docutils literal notranslate\"><span class=\"pre\">Media</span></code> som en dynamisk egenskap<a class=\"heading-anchor\" href=\"#media-as-a-dynamic-property\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>If you need to perform some more sophisticated manipulation of asset\nrequirements, you can define the <code class=\"docutils literal notranslate\"><span class=\"pre\">media</span></code> property directly. This is\ndone by defining a widget property that returns an instance of\n<code class=\"docutils literal notranslate\"><span class=\"pre\">forms.Media</span></code>. The constructor for <code class=\"docutils literal notranslate\"><span class=\"pre\">forms.Media</span></code> accepts <code class=\"docutils literal notranslate\"><span class=\"pre\">css</span></code>\nand <code class=\"docutils literal notranslate\"><span class=\"pre\">js</span></code> keyword arguments in the same format as that used in a\nstatic media definition.</p>\n<p>Till exempel kan den statiska definitionen för vår Calendar Widget också definieras på ett dynamiskt sätt:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">CalendarWidget</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">TextInput</span><span class=\"p\">):</span>\n    <span class=\"nd\">@property</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">media</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">Media</span><span class=\"p\">(</span>\n            <span class=\"n\">css</span><span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;all&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s2\">&quot;pretty.css&quot;</span><span class=\"p\">]},</span> <span class=\"n\">js</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s2\">&quot;animations.js&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;actions.js&quot;</span><span class=\"p\">]</span>\n        <span class=\"p\">)</span>\n</code></pre></div>\n<p>Se avsnittet om <a class=\"reference internal\" href=\"#media-objects\">Mediaobjekt</a> för mer information om hur man konstruerar returvärden för dynamiska <code class=\"docutils literal notranslate\"><span class=\"pre\">media</span></code>-egenskaper.</p>\n</section>\n<section id=\"paths-in-asset-definitions\">\n<span id=\"form-asset-paths\"></span><h2>Vägar i tillgångsdefinitioner<a class=\"heading-anchor\" href=\"#paths-in-asset-definitions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"paths-as-strings\">\n<h3>Banor som strängar<a class=\"heading-anchor\" href=\"#paths-as-strings\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Strängsökvägar som används för att ange tillgångar kan vara antingen relativa eller absoluta. Om en sökväg börjar med <code class=\"docutils literal notranslate\"><span class=\"pre\">/</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">http://</span></code> eller <code class=\"docutils literal notranslate\"><span class=\"pre\">https://</span></code> kommer den att tolkas som en absolut sökväg och lämnas som den är. Alla andra sökvägar kommer att föregås av värdet på lämpligt prefix. Om appen <a class=\"reference internal\" href=\"/sv/6.0/ref/contrib/staticfiles/#module-django.contrib.staticfiles\" title=\"django.contrib.staticfiles: An app for handling static files.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.staticfiles</span></code></a> är installerad kommer den att användas för att servera tillgångar.</p>\n<p>Oavsett om du använder <a class=\"reference internal\" href=\"/sv/6.0/ref/contrib/staticfiles/#module-django.contrib.staticfiles\" title=\"django.contrib.staticfiles: An app for handling static files.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.staticfiles</span></code></a> eller inte, krävs inställningarna <a class=\"reference internal\" href=\"/sv/6.0/ref/settings/#std-setting-STATIC_URL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATIC_URL</span></code></a> och <a class=\"reference internal\" href=\"/sv/6.0/ref/settings/#std-setting-STATIC_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATIC_ROOT</span></code></a> för att rendera en komplett webbsida.</p>\n<p>För att hitta det lämpliga prefixet att använda kommer Django att kontrollera om inställningen <a class=\"reference internal\" href=\"/sv/6.0/ref/settings/#std-setting-STATIC_URL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATIC_URL</span></code></a> inte är <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> och automatiskt falla tillbaka till att använda <a class=\"reference internal\" href=\"/sv/6.0/ref/settings/#std-setting-MEDIA_URL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MEDIA_URL</span></code></a>. Till exempel, om <a class=\"reference internal\" href=\"/sv/6.0/ref/settings/#std-setting-MEDIA_URL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MEDIA_URL</span></code></a> för din webbplats var <code class=\"docutils literal notranslate\"><span class=\"pre\">'https://uploads.example.com/'</span></code> och <a class=\"reference internal\" href=\"/sv/6.0/ref/settings/#std-setting-STATIC_URL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATIC_URL</span></code></a> var <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">forms</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">CalendarWidget</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">TextInput</span><span class=\"p\">):</span>\n<span class=\"gp\">... </span>    <span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Media</span><span class=\"p\">:</span>\n<span class=\"gp\">... </span>        <span class=\"n\">css</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n<span class=\"gp\">... </span>            <span class=\"s2\">&quot;all&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s2\">&quot;/css/pretty.css&quot;</span><span class=\"p\">],</span>\n<span class=\"gp\">... </span>        <span class=\"p\">}</span>\n<span class=\"gp\">... </span>        <span class=\"n\">js</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;animations.js&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;https://othersite.com/actions.js&quot;</span><span class=\"p\">]</span>\n<span class=\"gp\">...</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">w</span> <span class=\"o\">=</span> <span class=\"n\">CalendarWidget</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">w</span><span class=\"o\">.</span><span class=\"n\">media</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;link href=&quot;/css/pretty.css&quot; media=&quot;all&quot; rel=&quot;stylesheet&quot;&gt;</span>\n<span class=\"go\">&lt;script src=&quot;https://uploads.example.com/animations.js&quot;&gt;&lt;/script&gt;</span>\n<span class=\"go\">&lt;script src=&quot;https://othersite.com/actions.js&quot;&gt;&lt;/script&gt;</span>\n</code></pre></div>\n<p>Men om <a class=\"reference internal\" href=\"/sv/6.0/ref/settings/#std-setting-STATIC_URL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATIC_URL</span></code></a> är <code class=\"docutils literal notranslate\"><span class=\"pre\">'https://static.example.com/'</span></code>:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">w</span> <span class=\"o\">=</span> <span class=\"n\">CalendarWidget</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">w</span><span class=\"o\">.</span><span class=\"n\">media</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;link href=&quot;/css/pretty.css&quot; media=&quot;all&quot; rel=&quot;stylesheet&quot;&gt;</span>\n<span class=\"go\">&lt;script src=&quot;https://static.example.com/animations.js&quot;&gt;&lt;/script&gt;</span>\n<span class=\"go\">&lt;script src=&quot;https://othersite.com/actions.js&quot;&gt;&lt;/script&gt;</span>\n</code></pre></div>\n<p>Eller om <a class=\"reference internal\" href=\"/sv/6.0/ref/contrib/staticfiles/#module-django.contrib.staticfiles\" title=\"django.contrib.staticfiles: An app for handling static files.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">staticfiles</span></code></a> konfigureras med hjälp av <a class=\"reference internal\" href=\"/sv/6.0/ref/contrib/staticfiles/#django.contrib.staticfiles.storage.ManifestStaticFilesStorage\" title=\"django.contrib.staticfiles.storage.ManifestStaticFilesStorage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ManifestStaticFilesStorage</span></code></a>:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">w</span> <span class=\"o\">=</span> <span class=\"n\">CalendarWidget</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">w</span><span class=\"o\">.</span><span class=\"n\">media</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;link href=&quot;/css/pretty.css&quot; media=&quot;all&quot; rel=&quot;stylesheet&quot;&gt;</span>\n<span class=\"go\">&lt;script src=&quot;https://static.example.com/animations.27e20196a850.js&quot;&gt;&lt;/script&gt;</span>\n<span class=\"go\">&lt;script src=&quot;https://othersite.com/actions.js&quot;&gt;&lt;/script&gt;</span>\n</code></pre></div>\n</section>\n<section id=\"paths-as-objects\">\n<span id=\"form-media-asset-objects\"></span><h3>Banor som objekt<a class=\"heading-anchor\" href=\"#paths-as-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Tillgångar kan också vara objektbaserade, med <a class=\"reference internal\" href=\"#django.forms.Script\" title=\"django.forms.Script\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Script</span></code></a>. Dessutom tillåter dessa att du skickar anpassade HTML-attribut:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Media</span><span class=\"p\">:</span>\n    <span class=\"n\">js</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n        <span class=\"n\">Script</span><span class=\"p\">(</span>\n            <span class=\"s2\">&quot;https://cdn.example.com/something.min.js&quot;</span><span class=\"p\">,</span>\n            <span class=\"o\">**</span><span class=\"p\">{</span>\n                <span class=\"s2\">&quot;crossorigin&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;anonymous&quot;</span><span class=\"p\">,</span>\n                <span class=\"s2\">&quot;async&quot;</span><span class=\"p\">:</span> <span class=\"kc\">True</span><span class=\"p\">,</span>\n            <span class=\"p\">},</span>\n        <span class=\"p\">),</span>\n    <span class=\"p\">]</span>\n</code></pre></div>\n<p>Om denna Media-definition skulle renderas, skulle den bli följande HTML:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">script</span> <span class=\"na\">src</span><span class=\"o\">=</span><span class=\"s\">&quot;https://cdn.example.com/something.min.js&quot;</span>\n        <span class=\"na\">crossorigin</span><span class=\"o\">=</span><span class=\"s\">&quot;anonymous&quot;</span>\n        <span class=\"na\">async</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">script</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<aside class=\"version-note version-changed\" data-version=\"5.2\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>Objektklassen <code class=\"docutils literal notranslate\"><span class=\"pre\">Script</span></code> lades till.</p>\n</aside>\n</section>\n</section>\n<section id=\"media-objects\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">Media</span></code> objekt<a class=\"heading-anchor\" href=\"#media-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>När du frågar efter <code class=\"docutils literal notranslate\"><span class=\"pre\">media</span></code>-attributet för en widget eller ett formulär, returneras ett <code class=\"docutils literal notranslate\"><span class=\"pre\">forms.Media</span></code>-objekt. Som vi redan har sett är strängrepresentationen av ett <code class=\"docutils literal notranslate\"><span class=\"pre\">Media</span></code>-objekt den HTML som krävs för att inkludera de relevanta filerna i <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;head&gt;</span></code>-blocket på din HTML-sida.</p>\n<p>Objekt av typen <code class=\"docutils literal notranslate\"><span class=\"pre\">Media</span></code> har dock några andra intressanta egenskaper.</p>\n<section id=\"subsets-of-assets\">\n<h3>Delmängder av tillgångar<a class=\"heading-anchor\" href=\"#subsets-of-assets\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Om du bara vill ha filer av en viss typ kan du använda operatorn subscript för att filtrera ut ett medium av intresse. Till exempel:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">w</span> <span class=\"o\">=</span> <span class=\"n\">CalendarWidget</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">w</span><span class=\"o\">.</span><span class=\"n\">media</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;link href=&quot;https://static.example.com/pretty.css&quot; media=&quot;all&quot; rel=&quot;stylesheet&quot;&gt;</span>\n<span class=\"go\">&lt;script src=&quot;https://static.example.com/animations.js&quot;&gt;&lt;/script&gt;</span>\n<span class=\"go\">&lt;script src=&quot;https://static.example.com/actions.js&quot;&gt;&lt;/script&gt;</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">w</span><span class=\"o\">.</span><span class=\"n\">media</span><span class=\"p\">[</span><span class=\"s2\">&quot;css&quot;</span><span class=\"p\">])</span>\n<span class=\"go\">&lt;link href=&quot;https://static.example.com/pretty.css&quot; media=&quot;all&quot; rel=&quot;stylesheet&quot;&gt;</span>\n</code></pre></div>\n<p>När du använder subscript-operatorn returneras ett nytt <code class=\"docutils literal notranslate\"><span class=\"pre\">Media</span></code>-objekt - men ett som bara innehåller de medier som är av intresse.</p>\n</section>\n<section id=\"combining-media-objects\">\n<h3>Kombinera <code class=\"docutils literal notranslate\"><span class=\"pre\">Media</span></code>-objekt<a class=\"heading-anchor\" href=\"#combining-media-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">Media</span></code>-objekt kan också läggas till tillsammans. När två <code class=\"docutils literal notranslate\"><span class=\"pre\">Media</span></code>-objekt läggs till innehåller det resulterande <code class=\"docutils literal notranslate\"><span class=\"pre\">Media</span></code>-objektet en sammanslagning av de tillgångar som anges av båda:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">forms</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">CalendarWidget</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">TextInput</span><span class=\"p\">):</span>\n<span class=\"gp\">... </span>    <span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Media</span><span class=\"p\">:</span>\n<span class=\"gp\">... </span>        <span class=\"n\">css</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n<span class=\"gp\">... </span>            <span class=\"s2\">&quot;all&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s2\">&quot;pretty.css&quot;</span><span class=\"p\">],</span>\n<span class=\"gp\">... </span>        <span class=\"p\">}</span>\n<span class=\"gp\">... </span>        <span class=\"n\">js</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;animations.js&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;actions.js&quot;</span><span class=\"p\">]</span>\n<span class=\"gp\">...</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">OtherWidget</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">TextInput</span><span class=\"p\">):</span>\n<span class=\"gp\">... </span>    <span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Media</span><span class=\"p\">:</span>\n<span class=\"gp\">... </span>        <span class=\"n\">js</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;whizbang.js&quot;</span><span class=\"p\">]</span>\n<span class=\"gp\">...</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">w1</span> <span class=\"o\">=</span> <span class=\"n\">CalendarWidget</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">w2</span> <span class=\"o\">=</span> <span class=\"n\">OtherWidget</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">w1</span><span class=\"o\">.</span><span class=\"n\">media</span> <span class=\"o\">+</span> <span class=\"n\">w2</span><span class=\"o\">.</span><span class=\"n\">media</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;link href=&quot;https://static.example.com/pretty.css&quot; media=&quot;all&quot; rel=&quot;stylesheet&quot;&gt;</span>\n<span class=\"go\">&lt;script src=&quot;https://static.example.com/animations.js&quot;&gt;&lt;/script&gt;</span>\n<span class=\"go\">&lt;script src=&quot;https://static.example.com/actions.js&quot;&gt;&lt;/script&gt;</span>\n<span class=\"go\">&lt;script src=&quot;https://static.example.com/whizbang.js&quot;&gt;&lt;/script&gt;</span>\n</code></pre></div>\n</section>\n<section id=\"order-of-assets\">\n<span id=\"form-media-asset-order\"></span><h3>Tillgångarnas ordningsföljd<a class=\"heading-anchor\" href=\"#order-of-assets\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Den ordning i vilken tillgångar infogas i DOM är ofta viktig. Du kan t.ex. ha ett skript som är beroende av jQuery. Genom att kombinera <code class=\"docutils literal notranslate\"><span class=\"pre\">Media</span></code>-objekt försöker man därför bevara den relativa ordning i vilken tillgångarna definieras i varje <code class=\"docutils literal notranslate\"><span class=\"pre\">Media</span></code>-klass.</p>\n<p>Till exempel:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">forms</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">CalendarWidget</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">TextInput</span><span class=\"p\">):</span>\n<span class=\"gp\">... </span>    <span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Media</span><span class=\"p\">:</span>\n<span class=\"gp\">... </span>        <span class=\"n\">js</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;jQuery.js&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;calendar.js&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;noConflict.js&quot;</span><span class=\"p\">]</span>\n<span class=\"gp\">...</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">TimeWidget</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">TextInput</span><span class=\"p\">):</span>\n<span class=\"gp\">... </span>    <span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Media</span><span class=\"p\">:</span>\n<span class=\"gp\">... </span>        <span class=\"n\">js</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;jQuery.js&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;time.js&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;noConflict.js&quot;</span><span class=\"p\">]</span>\n<span class=\"gp\">...</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">w1</span> <span class=\"o\">=</span> <span class=\"n\">CalendarWidget</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">w2</span> <span class=\"o\">=</span> <span class=\"n\">TimeWidget</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">w1</span><span class=\"o\">.</span><span class=\"n\">media</span> <span class=\"o\">+</span> <span class=\"n\">w2</span><span class=\"o\">.</span><span class=\"n\">media</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;script src=&quot;https://static.example.com/jQuery.js&quot;&gt;&lt;/script&gt;</span>\n<span class=\"go\">&lt;script src=&quot;https://static.example.com/calendar.js&quot;&gt;&lt;/script&gt;</span>\n<span class=\"go\">&lt;script src=&quot;https://static.example.com/time.js&quot;&gt;&lt;/script&gt;</span>\n<span class=\"go\">&lt;script src=&quot;https://static.example.com/noConflict.js&quot;&gt;&lt;/script&gt;</span>\n</code></pre></div>\n<p>Om du kombinerar <code class=\"docutils literal notranslate\"><span class=\"pre\">Media</span></code>-objekt med tillgångar i en motstridig ordning resulterar det i en <code class=\"docutils literal notranslate\"><span class=\"pre\">MediaOrderConflictWarning</span></code>.</p>\n</section>\n</section>\n<section id=\"media-on-forms\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">Media</span></code> på formulär<a class=\"heading-anchor\" href=\"#media-on-forms\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Widgets är inte de enda objekt som kan ha <code class=\"docutils literal notranslate\"><span class=\"pre\">media</span></code>-definitioner - även formulär kan definiera <code class=\"docutils literal notranslate\"><span class=\"pre\">media</span></code>. Reglerna för <code class=\"docutils literal notranslate\"><span class=\"pre\">media</span></code>-definitioner på formulär är desamma som för widgets: deklarationer kan vara statiska eller dynamiska; sökvägs- och arvsreglerna för dessa deklarationer är exakt desamma.</p>\n<p>Oavsett om du definierar en <code class=\"docutils literal notranslate\"><span class=\"pre\">media</span></code>-deklaration har <em>alla</em> formulärobjekt en <code class=\"docutils literal notranslate\"><span class=\"pre\">media</span></code>-egenskap. Standardvärdet för den här egenskapen är resultatet av att lägga till <code class=\"docutils literal notranslate\"><span class=\"pre\">media</span></code>-definitionerna för alla widgetar som ingår i formuläret:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">forms</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ContactForm</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">Form</span><span class=\"p\">):</span>\n<span class=\"gp\">... </span>    <span class=\"n\">date</span> <span class=\"o\">=</span> <span class=\"n\">DateField</span><span class=\"p\">(</span><span class=\"n\">widget</span><span class=\"o\">=</span><span class=\"n\">CalendarWidget</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>    <span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">40</span><span class=\"p\">,</span> <span class=\"n\">widget</span><span class=\"o\">=</span><span class=\"n\">OtherWidget</span><span class=\"p\">)</span>\n<span class=\"gp\">...</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span> <span class=\"o\">=</span> <span class=\"n\">ContactForm</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">media</span>\n<span class=\"go\">&lt;link href=&quot;https://static.example.com/pretty.css&quot; media=&quot;all&quot; rel=&quot;stylesheet&quot;&gt;</span>\n<span class=\"go\">&lt;script src=&quot;https://static.example.com/animations.js&quot;&gt;&lt;/script&gt;</span>\n<span class=\"go\">&lt;script src=&quot;https://static.example.com/actions.js&quot;&gt;&lt;/script&gt;</span>\n<span class=\"go\">&lt;script src=&quot;https://static.example.com/whizbang.js&quot;&gt;&lt;/script&gt;</span>\n</code></pre></div>\n<p>Om du vill koppla ytterligare tillgångar till ett formulär, t.ex. CSS för formulärlayout, kan du lägga till en <code class=\"docutils literal notranslate\"><span class=\"pre\">Media</span></code>-deklaration i formuläret:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ContactForm</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">Form</span><span class=\"p\">):</span>\n<span class=\"gp\">... </span>    <span class=\"n\">date</span> <span class=\"o\">=</span> <span class=\"n\">DateField</span><span class=\"p\">(</span><span class=\"n\">widget</span><span class=\"o\">=</span><span class=\"n\">CalendarWidget</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>    <span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">40</span><span class=\"p\">,</span> <span class=\"n\">widget</span><span class=\"o\">=</span><span class=\"n\">OtherWidget</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>    <span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Media</span><span class=\"p\">:</span>\n<span class=\"gp\">... </span>        <span class=\"n\">css</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n<span class=\"gp\">... </span>            <span class=\"s2\">&quot;all&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s2\">&quot;layout.css&quot;</span><span class=\"p\">],</span>\n<span class=\"gp\">... </span>        <span class=\"p\">}</span>\n<span class=\"gp\">...</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span> <span class=\"o\">=</span> <span class=\"n\">ContactForm</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">media</span>\n<span class=\"go\">&lt;link href=&quot;https://static.example.com/pretty.css&quot; media=&quot;all&quot; rel=&quot;stylesheet&quot;&gt;</span>\n<span class=\"go\">&lt;link href=&quot;https://static.example.com/layout.css&quot; media=&quot;all&quot; rel=&quot;stylesheet&quot;&gt;</span>\n<span class=\"go\">&lt;script src=&quot;https://static.example.com/animations.js&quot;&gt;&lt;/script&gt;</span>\n<span class=\"go\">&lt;script src=&quot;https://static.example.com/actions.js&quot;&gt;&lt;/script&gt;</span>\n<span class=\"go\">&lt;script src=&quot;https://static.example.com/whizbang.js&quot;&gt;&lt;/script&gt;</span>\n</code></pre></div>\n</section>","rootId":"form-assets-the-media-class","toc":[{"title":"Tillgångar som en statisk definition","anchor":"assets-as-a-static-definition","children":[{"title":"css","anchor":"css","children":[]},{"title":"js","anchor":"js","children":[{"title":"Script-objekt","anchor":"script-objects","children":[]}]},{"title":"förlänga","anchor":"extend","children":[]}]},{"title":"Media som en dynamisk egenskap","anchor":"media-as-a-dynamic-property","children":[]},{"title":"Vägar i tillgångsdefinitioner","anchor":"paths-in-asset-definitions","children":[{"title":"Banor som strängar","anchor":"paths-as-strings","children":[]},{"title":"Banor som objekt","anchor":"paths-as-objects","children":[]}]},{"title":"Media objekt","anchor":"media-objects","children":[{"title":"Delmängder av tillgångar","anchor":"subsets-of-assets","children":[]},{"title":"Kombinera Media-objekt","anchor":"combining-media-objects","children":[]},{"title":"Tillgångarnas ordningsföljd","anchor":"order-of-assets","children":[]}]},{"title":"Media på formulär","anchor":"media-on-forms","children":[]}],"breadcrumbs":[{"docname":"topics/index","title":"Använda Django","url":"/sv/6.0/topics/"},{"docname":"topics/forms/index","title":"Arbeta med formulär","url":"/sv/6.0/topics/forms/"}],"prev":{"docname":"topics/forms/modelforms","title":"Skapa formulär från modeller","url":"/sv/6.0/topics/forms/modelforms/"},"next":{"docname":"topics/templates","title":"Mallar","url":"/sv/6.0/topics/templates/"},"formats":{"html":"/sv/6.0/topics/forms/media/","markdown":"/sv/6.0/topics/forms/media.md","json":"/sv/6.0/topics/forms/media.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/topics/forms/media.txt","official":"https://docs.djangoproject.com/sv/6.0/topics/forms/media/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}