{"title":"Inbyggda vyer","version":"5.2","locale":"sv","docname":"ref/views","url":"/sv/5.2/ref/views/","canonical":"https://djangodocs.dev/sv/5.2/ref/views/","summary":"Flera av Djangos inbyggda vyer finns dokumenterade i Skriva synpunkter samt på andra ställen i dokumentationen. Servering av filer under utveckling Link to this…","html":"<span id=\"built-in-views\"></span><h1>Inbyggda vyer<a class=\"heading-anchor\" href=\"#module-django.views\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Flera av Djangos inbyggda vyer finns dokumenterade i <a class=\"reference internal\" href=\"/sv/5.2/topics/http/views/\"><span class=\"doc\">Skriva synpunkter</span></a> samt på andra ställen i dokumentationen.</p>\n<section id=\"serving-files-in-development\">\n<h2>Servering av filer under utveckling<a class=\"heading-anchor\" href=\"#serving-files-in-development\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.views.static.serve\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">static.</span></span><span class=\"sig-name descname\"><span class=\"pre\">serve</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">path</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">document_root</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">show_indexes</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.static.serve\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Det kan finnas andra filer än ditt projekts statiska tillgångar som du, för enkelhetens skull, vill att Django ska servera åt dig i lokal utveckling. Vyn <a class=\"reference internal\" href=\"#django.views.static.serve\" title=\"django.views.static.serve\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">serve()</span></code></a> kan användas för att servera vilken katalog som helst som du ger den. (Den här vyn är <strong>inte</strong> härdad för produktionsanvändning och bör endast användas som ett utvecklingshjälpmedel; du bör servera dessa filer i produktion med hjälp av en riktig front-end webbserver).</p>\n<p>Det mest troliga exemplet är användaruppladdat innehåll i <a class=\"reference internal\" href=\"/sv/5.2/ref/settings/#std-setting-MEDIA_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MEDIA_ROOT</span></code></a>. <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.staticfiles</span></code> är avsedd för statiska tillgångar och har ingen inbyggd hantering för användaruppladdade filer, men du kan få Django att servera din <a class=\"reference internal\" href=\"/sv/5.2/ref/settings/#std-setting-MEDIA_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MEDIA_ROOT</span></code></a> genom att lägga till något liknande detta till din URLconf:</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.conf</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">settings</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">re_path</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views.static</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">serve</span>\n\n<span class=\"c1\"># ... the rest of your URLconf goes here ...</span>\n\n<span class=\"k\">if</span> <span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">DEBUG</span><span class=\"p\">:</span>\n    <span class=\"n\">urlpatterns</span> <span class=\"o\">+=</span> <span class=\"p\">[</span>\n        <span class=\"n\">re_path</span><span class=\"p\">(</span>\n            <span class=\"sa\">r</span><span class=\"s2\">&quot;^media/(?P&lt;path&gt;.*)$&quot;</span><span class=\"p\">,</span>\n            <span class=\"n\">serve</span><span class=\"p\">,</span>\n            <span class=\"p\">{</span>\n                <span class=\"s2\">&quot;document_root&quot;</span><span class=\"p\">:</span> <span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">MEDIA_ROOT</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>Observera att utdraget förutsätter att din <a class=\"reference internal\" href=\"/sv/5.2/ref/settings/#std-setting-MEDIA_URL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MEDIA_URL</span></code></a> har ett värde på <code class=\"docutils literal notranslate\"><span class=\"pre\">'media/'</span></code>. Detta kommer att anropa vyn <a class=\"reference internal\" href=\"#django.views.static.serve\" title=\"django.views.static.serve\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">serve()</span></code></a> och skicka in sökvägen från URLconf och den (obligatoriska) parametern <code class=\"docutils literal notranslate\"><span class=\"pre\">document_root</span></code>.</p>\n<p>Eftersom det kan bli lite besvärligt att definiera detta URL-mönster, levereras Django med en liten URL-hjälpfunktion <a class=\"reference internal\" href=\"/sv/5.2/ref/urls/#django.conf.urls.static.static\" title=\"django.conf.urls.static.static\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">static()</span></code></a> som tar som parametrar prefixet som <a class=\"reference internal\" href=\"/sv/5.2/ref/settings/#std-setting-MEDIA_URL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MEDIA_URL</span></code></a> och en prickad sökväg till en vy, till exempel <code class=\"docutils literal notranslate\"><span class=\"pre\">'django.views.static.serve'</span></code>. Alla andra funktionsparametrar kommer att skickas transparent till vyn.</p>\n</section>\n<section id=\"error-views\">\n<span id=\"id1\"></span><h2>Visning av fel<a class=\"heading-anchor\" href=\"#error-views\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django levereras med några vyer som standard för hantering av HTTP-fel. För att åsidosätta dessa med dina egna anpassade vyer, se <a class=\"reference internal\" href=\"/sv/5.2/topics/http/views/#customizing-error-views\"><span class=\"std std-ref\">Anpassa felvyer</span></a>.</p>\n<section id=\"the-404-page-not-found-view\">\n<span id=\"http-not-found-view\"></span><h3>404-vyn (sidan hittades inte)<a class=\"heading-anchor\" href=\"#the-404-page-not-found-view\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.views.defaults.page_not_found\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">defaults.</span></span><span class=\"sig-name descname\"><span class=\"pre\">page_not_found</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">exception</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">template_name</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'404.html'</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.defaults.page_not_found\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>När du använder <a class=\"reference internal\" href=\"/sv/5.2/topics/http/views/#django.http.Http404\" title=\"django.http.Http404\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">Http404</span></code></a> från en vy, laddar Django en speciell vy som är avsedd för att hantera 404-fel. Som standard är det vyn <a class=\"reference internal\" href=\"#django.views.defaults.page_not_found\" title=\"django.views.defaults.page_not_found\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.views.defaults.page_not_found()</span></code></a>, som antingen producerar ett ”Not Found”-meddelande eller laddar och renderar mallen <code class=\"docutils literal notranslate\"><span class=\"pre\">404.html</span></code> om du skapade den i din rotmallkatalog.</p>\n<p>Standardvyn 404 skickar två variabler till mallen: <code class=\"docutils literal notranslate\"><span class=\"pre\">request_path</span></code>, som är den URL som resulterade i felet, och <code class=\"docutils literal notranslate\"><span class=\"pre\">exception</span></code>, som är en användbar representation av det undantag som utlöste vyn (t.ex. innehåller alla meddelanden som skickas till en specifik <code class=\"docutils literal notranslate\"><span class=\"pre\">Http404</span></code>-instans).</p>\n<p>Tre saker att notera om 404-vyer:</p>\n<ul class=\"simple\">\n<li><p>404-vyn anropas också om Django inte hittar någon matchning efter att ha kontrollerat alla reguljära uttryck i URLconf.</p></li>\n<li><p>404-vyn får en <a class=\"reference internal\" href=\"/sv/5.2/ref/templates/api/#django.template.RequestContext\" title=\"django.template.RequestContext\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">RequestContext</span></code></a> och kommer att ha tillgång till variabler som tillhandahålls av dina mallkontextprocessorer (t.ex. <code class=\"docutils literal notranslate\"><span class=\"pre\">MEDIA_URL</span></code>).</p></li>\n<li><p>Om <a class=\"reference internal\" href=\"/sv/5.2/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEBUG</span></code></a> är inställd på <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> (i din inställningsmodul), kommer 404-vyn aldrig att användas och URLconf kommer att visas i stället, med viss felsökningsinformation.</p></li>\n</ul>\n</section>\n<section id=\"the-500-server-error-view\">\n<span id=\"http-internal-server-error-view\"></span><h3>Vyn 500 (serverfel)<a class=\"heading-anchor\" href=\"#the-500-server-error-view\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.views.defaults.server_error\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">defaults.</span></span><span class=\"sig-name descname\"><span class=\"pre\">server_error</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">template_name</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'500.html'</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.defaults.server_error\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>På samma sätt utför Django specialfallbeteende i händelse av körtidsfel i visningskoden. Om en vy resulterar i ett undantag kommer Django som standard att anropa vyn <code class=\"docutils literal notranslate\"><span class=\"pre\">django.views.defaults.server_error</span></code>, som antingen producerar ett ”Server Error”-meddelande eller laddar och renderar mallen <code class=\"docutils literal notranslate\"><span class=\"pre\">500.html</span></code> om du skapade den i din rotmallkatalog.</p>\n<p>Standardvyn 500 skickar inga variabler till mallen <code class=\"docutils literal notranslate\"><span class=\"pre\">500.html</span></code> och återges med en tom <code class=\"docutils literal notranslate\"><span class=\"pre\">Context</span></code> för att minska risken för ytterligare fel.</p>\n<p>Om <a class=\"reference internal\" href=\"/sv/5.2/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEBUG</span></code></a> är satt till <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> (i din inställningsmodul), kommer din 500-vy aldrig att användas och traceback visas istället, med viss debuginformation.</p>\n</section>\n<section id=\"the-403-http-forbidden-view\">\n<span id=\"http-forbidden-view\"></span><h3>Vyn 403 (HTTP förbjuden)<a class=\"heading-anchor\" href=\"#the-403-http-forbidden-view\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.views.defaults.permission_denied\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">defaults.</span></span><span class=\"sig-name descname\"><span class=\"pre\">permission_denied</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">exception</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">template_name</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'403.html'</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.defaults.permission_denied\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>På samma sätt som 404- och 500-vyerna har Django en vy för att hantera 403 Forbidden-fel. Om en vy resulterar i ett 403-undantag kommer Django som standard att anropa vyn <code class=\"docutils literal notranslate\"><span class=\"pre\">django.views.defaults.permission_denied</span></code>.</p>\n<p>Den här vyn laddar och renderar mallen <code class=\"docutils literal notranslate\"><span class=\"pre\">403.html</span></code> i din rotmallkatalog, eller om den här filen inte finns, visar den istället texten ”403 Forbidden”, enligt <span class=\"target\" id=\"index-2\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc9110.html#section-15.5.4\"><strong>RFC 9110 Section 15.5.4</strong></a> (HTTP 1.1-specifikationen). Mallkontexten innehåller <code class=\"docutils literal notranslate\"><span class=\"pre\">exception</span></code>, som är strängrepresentationen av det undantag som utlöste vyn.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">django.views.defaults.permission_denied</span></code> utlöses av ett <a class=\"reference internal\" href=\"/sv/5.2/ref/exceptions/#django.core.exceptions.PermissionDenied\" title=\"django.core.exceptions.PermissionDenied\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">PermissionDenied</span></code></a> undantag. För att neka åtkomst i en vy kan du använda kod som denna:</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.core.exceptions</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">PermissionDenied</span>\n\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">edit</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">pk</span><span class=\"p\">):</span>\n    <span class=\"k\">if</span> <span class=\"ow\">not</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">user</span><span class=\"o\">.</span><span class=\"n\">is_staff</span><span class=\"p\">:</span>\n        <span class=\"k\">raise</span> <span class=\"n\">PermissionDenied</span>\n    <span class=\"c1\"># ...</span>\n</code></pre></div>\n</section>\n<section id=\"the-400-bad-request-view\">\n<span id=\"http-bad-request-view\"></span><h3>Vyn 400 (dålig förfrågan)<a class=\"heading-anchor\" href=\"#the-400-bad-request-view\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.views.defaults.bad_request\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">defaults.</span></span><span class=\"sig-name descname\"><span class=\"pre\">bad_request</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">exception</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">template_name</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'400.html'</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.defaults.bad_request\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>När en <a class=\"reference internal\" href=\"/sv/5.2/ref/exceptions/#django.core.exceptions.SuspiciousOperation\" title=\"django.core.exceptions.SuspiciousOperation\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">SuspiciousOperation</span></code></a> uppstår i Django kan den hanteras av en komponent i Django (till exempel återställning av sessionsdata). Om det inte hanteras specifikt kommer Django att betrakta den aktuella begäran som en ”dålig begäran” istället för ett serverfel.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">django.views.defaults.bad_request</span></code>, är annars mycket lik vyn <code class=\"docutils literal notranslate\"><span class=\"pre\">server_error</span></code>, men returnerar med statuskoden 400 som indikerar att feltillståndet var resultatet av en klientoperation. Som standard skickas ingenting som är relaterat till det undantag som utlöste vyn till mallkontexten, eftersom undantagsmeddelandet kan innehålla känslig information som filsystemssökvägar.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">bad_request</span></code>-vyer används också bara när <a class=\"reference internal\" href=\"/sv/5.2/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEBUG</span></code></a> är <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p>\n</section>\n</section>","rootId":"module-django.views","toc":[{"title":"Servering av filer under utveckling","anchor":"serving-files-in-development","children":[]},{"title":"Visning av fel","anchor":"error-views","children":[{"title":"404-vyn (sidan hittades inte)","anchor":"the-404-page-not-found-view","children":[]},{"title":"Vyn 500 (serverfel)","anchor":"the-500-server-error-view","children":[]},{"title":"Vyn 403 (HTTP förbjuden)","anchor":"the-403-http-forbidden-view","children":[]},{"title":"Vyn 400 (dålig förfrågan)","anchor":"the-400-bad-request-view","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"API-referens","url":"/sv/5.2/ref/"}],"prev":{"docname":"ref/validators","title":"Validerare","url":"/sv/5.2/ref/validators/"},"next":{"docname":"misc/index","title":"Metadokumentation och diverse","url":"/sv/5.2/misc/"},"formats":{"html":"/sv/5.2/ref/views/","markdown":"/sv/5.2/ref/views.md","json":"/sv/5.2/ref/views.json"},"source":"https://github.com/django/django/blob/stable/5.2.x/docs/ref/views.txt","official":"https://docs.djangoproject.com/sv/5.2/ref/views/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}