{"title":"Inbyggda vyer","version":"6.0","locale":"sv","docname":"ref/views","url":"/sv/6.0/ref/views/","canonical":"https://djangodocs.dev/sv/6.0/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/6.0/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/6.0/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/6.0/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/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> 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/6.0/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/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> 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/6.0/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/6.0/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/6.0/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/6.0/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/6.0/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/6.0/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>Similarly, Django has a view to handle 400 Bad Request errors.</p>\n<p>This view either produces a ”Bad Request” message or loads and renders the\ntemplate <code class=\"docutils literal notranslate\"><span class=\"pre\">400.html</span></code> if you created it in your root template directory.\nIt returns with status code 400 indicating that the error condition was the\nresult of a client operation. By default, nothing related to the exception that\ntriggered the view is passed to the template context, as the exception message\nmight contain sensitive information like filesystem paths.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">django.views.defaults.bad_request</span></code> is triggered by a\n<a class=\"reference internal\" href=\"/sv/6.0/ref/exceptions/#django.core.exceptions.BadRequest\" title=\"django.core.exceptions.BadRequest\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">BadRequest</span></code></a> exception. Also, when a\n<a class=\"reference internal\" href=\"/sv/6.0/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> is raised in Django,\nit may be handled by a component of Django (for example resetting the session\ndata). If not specifically handled, Django will consider the current request a\n’bad request’ instead of a server error, and handle it with <code class=\"docutils literal notranslate\"><span class=\"pre\">bad_request</span></code>.</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/6.0/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/6.0/ref/"}],"prev":{"docname":"ref/validators","title":"Validerare","url":"/sv/6.0/ref/validators/"},"next":{"docname":"misc/index","title":"Metadokumentation och diverse","url":"/sv/6.0/misc/"},"formats":{"html":"/sv/6.0/ref/views/","markdown":"/sv/6.0/ref/views.md","json":"/sv/6.0/ref/views.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/ref/views.txt","official":"https://docs.djangoproject.com/sv/6.0/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"]}