{"title":"Funções de atalho do Django","version":"4.1","locale":"pt-br","docname":"topics/http/shortcuts","url":"/pt-br/4.1/topics/http/shortcuts/","canonical":"https://djangodocs.dev/pt-br/4.1/topics/http/shortcuts/","summary":"O pacote django.shortcuts agrega funções e classes auxiliares que “abrangem” múltiplos níveis do MVC. Em outras palavras, essas funções/classes introduzem uma…","html":"<span id=\"django-shortcut-functions\"></span><h1>Funções de atalho do Django<a class=\"heading-anchor\" href=\"#module-django.shortcuts\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h1>\n<p id=\"index-0\">O pacote <code class=\"docutils literal notranslate\"><span class=\"pre\">django.shortcuts</span></code> agrega funções e classes auxiliares que “abrangem” múltiplos níveis do MVC. Em outras palavras, essas funções/classes introduzem uma composição controlada por uma questão de conveniência.</p>\n<section id=\"render\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">render()</span></code><a class=\"heading-anchor\" href=\"#render\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.shortcuts.render\">\n<span class=\"sig-name descname\"><span class=\"pre\">render</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></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">context</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">content_type</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">status</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">using</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.shortcuts.render\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Combina uma dado template com um dado dicionário de dados e retorna um objeto <a class=\"reference internal\" href=\"/pt-br/4.1/ref/request-response/#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> com aquele texto renderizado.</p>\n<p>O Django não fornece um atalho de função o qual retorna uma <a class=\"reference internal\" href=\"/pt-br/4.1/ref/template-response/#django.template.response.TemplateResponse\" title=\"django.template.response.TemplateResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code></a> porque o construtor da <a class=\"reference internal\" href=\"/pt-br/4.1/ref/template-response/#django.template.response.TemplateResponse\" title=\"django.template.response.TemplateResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code></a> oferece o mesmo nível de facilidade que o <a class=\"reference internal\" href=\"#django.shortcuts.render\" title=\"django.shortcuts.render\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">render()</span></code></a>.</p>\n</dd></dl>\n\n<section id=\"required-arguments\">\n<h3>Argumentos requeridos<a class=\"heading-anchor\" href=\"#required-arguments\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"simple\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code></dt><dd><p>O objeto de requisição usado para gerar esta resposta.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">template_name</span></code></dt><dd><p>O nome completo do template a ser usado ou uma sequência de nomes de templates. Se uma sequência é dada, o primeiro template que existir será usado. Veja a <a class=\"reference internal\" href=\"/pt-br/4.1/topics/templates/#template-loading\"><span class=\"std std-ref\">documentação de carga de templates</span></a> para maiores informações de como os templates são encontrados.</p>\n</dd>\n</dl>\n</section>\n<section id=\"optional-arguments\">\n<h3>Argumentos opcionais<a class=\"heading-anchor\" href=\"#optional-arguments\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"simple\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">context</span></code></dt><dd><p>Um dicionário de valores que são adicionados ao contexto do template. Por padrao, é um dicionário vazio. Se um valor neste dicionário é um executável, a “view” irá executá-lo logo antes de renderizar o template.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">content_type</span></code></dt><dd><p>The MIME type to use for the resulting document. Defaults to\n<code class=\"docutils literal notranslate\"><span class=\"pre\">'text/html'</span></code>.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">status</span></code></dt><dd><p>O código de status da resposta. Padrão é <code class=\"docutils literal notranslate\"><span class=\"pre\">200</span></code>.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">using</span></code></dt><dd><p>O  <a class=\"reference internal\" href=\"/pt-br/4.1/ref/settings/#std-setting-TEMPLATES-NAME\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">NAME</span></code></a> do mecanismo de template a ser usado para a carga do template.</p>\n</dd>\n</dl>\n</section>\n<section id=\"example\">\n<h3>Exemplo<a class=\"heading-anchor\" href=\"#example\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>O exemplo seguinte renderiza o template <code class=\"docutils literal notranslate\"><span class=\"pre\">myapp/index.html</span></code> com o tipo MIME <em class=\"mimetype\">application/xhtml+xml</em>:</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.shortcuts</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">render</span>\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"c1\"># View code here...</span>\n    <span class=\"k\">return</span> <span class=\"n\">render</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"s1\">&#39;myapp/index.html&#39;</span><span class=\"p\">,</span> <span class=\"p\">{</span>\n        <span class=\"s1\">&#39;foo&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;bar&#39;</span><span class=\"p\">,</span>\n    <span class=\"p\">},</span> <span class=\"n\">content_type</span><span class=\"o\">=</span><span class=\"s1\">&#39;application/xhtml+xml&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Este exemplo é equivalente a:</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.http</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">HttpResponse</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.template</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">loader</span>\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"c1\"># View code here...</span>\n    <span class=\"n\">t</span> <span class=\"o\">=</span> <span class=\"n\">loader</span><span class=\"o\">.</span><span class=\"n\">get_template</span><span class=\"p\">(</span><span class=\"s1\">&#39;myapp/index.html&#39;</span><span class=\"p\">)</span>\n    <span class=\"n\">c</span> <span class=\"o\">=</span> <span class=\"p\">{</span><span class=\"s1\">&#39;foo&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;bar&#39;</span><span class=\"p\">}</span>\n    <span class=\"k\">return</span> <span class=\"n\">HttpResponse</span><span class=\"p\">(</span><span class=\"n\">t</span><span class=\"o\">.</span><span class=\"n\">render</span><span class=\"p\">(</span><span class=\"n\">c</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">),</span> <span class=\"n\">content_type</span><span class=\"o\">=</span><span class=\"s1\">&#39;application/xhtml+xml&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"redirect\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">redirect()</span></code><a class=\"heading-anchor\" href=\"#redirect\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.shortcuts.redirect\">\n<span class=\"sig-name descname\"><span class=\"pre\">redirect</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">to</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">permanent</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.shortcuts.redirect\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Retorna uma <a class=\"reference internal\" href=\"/pt-br/4.1/ref/request-response/#django.http.HttpResponseRedirect\" title=\"django.http.HttpResponseRedirect\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponseRedirect</span></code></a> para a URL apropriada de acordo com os argumentos passados.</p>\n<p>Os argumentos podem ser:</p>\n<ul class=\"simple\">\n<li><p>Um modelo: a função <a class=\"reference internal\" href=\"/pt-br/4.1/ref/models/instances/#django.db.models.Model.get_absolute_url\" title=\"django.db.models.Model.get_absolute_url\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_absolute_url()</span></code></a> do modelo será chamada.</p></li>\n<li><p>Um nome de uma “view”, possivelmente com argumentos: a <a class=\"reference internal\" href=\"/pt-br/4.1/ref/urlresolvers/#django.urls.reverse\" title=\"django.urls.reverse\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">reverse()</span></code></a>  será usada para resolver inversamente o nome</p></li>\n<li><p>Uma URL absoluta ou relativa, a qual será usada como tal para o local do redirecionamento.</p></li>\n</ul>\n<p>Emiti por padrão um redirecionamento temporário, passe <code class=\"docutils literal notranslate\"><span class=\"pre\">permanent=True</span></code> para ter um redirecionamento permanente.</p>\n</dd></dl>\n\n<section id=\"examples\">\n<h3>Exemplos<a class=\"heading-anchor\" href=\"#examples\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Você pode usar a função <a class=\"reference internal\" href=\"#django.shortcuts.redirect\" title=\"django.shortcuts.redirect\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">redirect()</span></code></a> de várias maneiras.</p>\n<ol class=\"arabic\">\n<li><p>Passando algum objeto; o método <a class=\"reference internal\" href=\"/pt-br/4.1/ref/models/instances/#django.db.models.Model.get_absolute_url\" title=\"django.db.models.Model.get_absolute_url\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_absolute_url()</span></code></a> daquele objeto será chamado para descobrir a URL de redirecionamento:</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.shortcuts</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">redirect</span>\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"o\">...</span>\n    <span class=\"n\">obj</span> <span class=\"o\">=</span> <span class=\"n\">MyModel</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"o\">...</span><span class=\"p\">)</span>\n    <span class=\"k\">return</span> <span class=\"n\">redirect</span><span class=\"p\">(</span><span class=\"n\">obj</span><span class=\"p\">)</span>\n</code></pre></div>\n</li>\n<li><p>Passando o nome de uma “view” e opcionalmente algum argumento posicional ou nomeado; a URL será inversamente resolvida usando o método <a class=\"reference internal\" href=\"/pt-br/4.1/ref/urlresolvers/#django.urls.reverse\" title=\"django.urls.reverse\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">reverse()</span></code></a></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\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"o\">...</span>\n    <span class=\"k\">return</span> <span class=\"n\">redirect</span><span class=\"p\">(</span><span class=\"s1\">&#39;some-view-name&#39;</span><span class=\"p\">,</span> <span class=\"n\">foo</span><span class=\"o\">=</span><span class=\"s1\">&#39;bar&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n</li>\n<li><p>Passando uma URL diretamente no código para redirecionamento:</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\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"o\">...</span>\n    <span class=\"k\">return</span> <span class=\"n\">redirect</span><span class=\"p\">(</span><span class=\"s1\">&#39;/some/url/&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Isso também funciona com URLs não relativas:</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\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"o\">...</span>\n    <span class=\"k\">return</span> <span class=\"n\">redirect</span><span class=\"p\">(</span><span class=\"s1\">&#39;https://example.com/&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n</li>\n</ol>\n<p>Por padrão, a <a class=\"reference internal\" href=\"#django.shortcuts.redirect\" title=\"django.shortcuts.redirect\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">redirect()</span></code></a> retorna um redirecionamento temporário. Todas as formas acima aceitam um argumento chamado <code class=\"docutils literal notranslate\"><span class=\"pre\">permanent</span></code>; se definido como <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> um redirecionamento permanente será retornado:</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\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"o\">...</span>\n    <span class=\"n\">obj</span> <span class=\"o\">=</span> <span class=\"n\">MyModel</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"o\">...</span><span class=\"p\">)</span>\n    <span class=\"k\">return</span> <span class=\"n\">redirect</span><span class=\"p\">(</span><span class=\"n\">obj</span><span class=\"p\">,</span> <span class=\"n\">permanent</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"get-object-or-404\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">get_object_or_404()</span></code><a class=\"heading-anchor\" href=\"#get-object-or-404\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.shortcuts.get_object_or_404\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_object_or_404</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">klass</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.shortcuts.get_object_or_404\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Chama o <a class=\"reference internal\" href=\"/pt-br/4.1/ref/models/querysets/#django.db.models.query.QuerySet.get\" title=\"django.db.models.query.QuerySet.get\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get()</span></code></a>  de um dado “manager” de modelo, mas  emiti um <a class=\"reference internal\" href=\"/pt-br/4.1/topics/http/views/#django.http.Http404\" title=\"django.http.Http404\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Http404</span></code></a> no lugar de uma exceção <a class=\"reference internal\" href=\"/pt-br/4.1/ref/models/class/#django.db.models.Model.DoesNotExist\" title=\"django.db.models.Model.DoesNotExist\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">DoesNotExist</span></code></a> do modelo.</p>\n</dd></dl>\n\n<section id=\"arguments\">\n<h3>Arguments<a class=\"heading-anchor\" href=\"#arguments\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"simple\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">klass</span></code></dt><dd><p>Uma classe <a class=\"reference internal\" href=\"/pt-br/4.1/ref/models/instances/#django.db.models.Model\" title=\"django.db.models.Model\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Model</span></code></a>, um <a class=\"reference internal\" href=\"/pt-br/4.1/topics/db/managers/#django.db.models.Manager\" title=\"django.db.models.Manager\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Manager</span></code></a>, ou uma instância de <a class=\"reference internal\" href=\"/pt-br/4.1/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">QuerySet</span></code></a> da qual pegar o objeto.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">*args</span></code></dt><dd><p><a class=\"reference internal\" href=\"/pt-br/4.1/ref/models/querysets/#django.db.models.Q\" title=\"django.db.models.Q\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Q</span> <span class=\"pre\">objects</span></code></a>.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">**kwargs</span></code></dt><dd><p>Parâmetros de filtro, o quais devem estar no mesmo formato que os aceito por <code class=\"docutils literal notranslate\"><span class=\"pre\">get()</span></code> e <code class=\"docutils literal notranslate\"><span class=\"pre\">filter()</span></code>.</p>\n</dd>\n</dl>\n</section>\n<section id=\"id1\">\n<h3>Exemplo<a class=\"heading-anchor\" href=\"#id1\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>O exemplo seguinte pega o objeto do modelo <code class=\"docutils literal notranslate\"><span class=\"pre\">MyModel</span></code> e com chave-primária igual a 1:</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.shortcuts</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">get_object_or_404</span>\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"n\">obj</span> <span class=\"o\">=</span> <span class=\"n\">get_object_or_404</span><span class=\"p\">(</span><span class=\"n\">MyModel</span><span class=\"p\">,</span> <span class=\"n\">pk</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Este exemplo é equivalente a:</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.http</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Http404</span>\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"k\">try</span><span class=\"p\">:</span>\n        <span class=\"n\">obj</span> <span class=\"o\">=</span> <span class=\"n\">MyModel</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"n\">pk</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n    <span class=\"k\">except</span> <span class=\"n\">MyModel</span><span class=\"o\">.</span><span class=\"n\">DoesNotExist</span><span class=\"p\">:</span>\n        <span class=\"k\">raise</span> <span class=\"n\">Http404</span><span class=\"p\">(</span><span class=\"s2\">&quot;No MyModel matches the given query.&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>O caso de uso mais comum é passar uma <a class=\"reference internal\" href=\"/pt-br/4.1/ref/models/instances/#django.db.models.Model\" title=\"django.db.models.Model\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Model</span></code></a>, como mostrado acima. Porém, você pode também passar uma instância de  <a class=\"reference internal\" href=\"/pt-br/4.1/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">QuerySet</span></code></a>:</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=\"n\">queryset</span> <span class=\"o\">=</span> <span class=\"n\">Book</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">title__startswith</span><span class=\"o\">=</span><span class=\"s1\">&#39;M&#39;</span><span class=\"p\">)</span>\n<span class=\"n\">get_object_or_404</span><span class=\"p\">(</span><span class=\"n\">queryset</span><span class=\"p\">,</span> <span class=\"n\">pk</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>O exemplo acima é um pouco exagerado já que é equivalente a fazer:</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=\"n\">get_object_or_404</span><span class=\"p\">(</span><span class=\"n\">Book</span><span class=\"p\">,</span> <span class=\"n\">title__startswith</span><span class=\"o\">=</span><span class=\"s1\">&#39;M&#39;</span><span class=\"p\">,</span> <span class=\"n\">pk</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>mas pode ser útil se você estiver passando uma varável <code class=\"docutils literal notranslate\"><span class=\"pre\">queryset</span></code> vinda de algum outro lugar.</p>\n<p>E fInalmente, você pode usar uma <a class=\"reference internal\" href=\"/pt-br/4.1/topics/db/managers/#django.db.models.Manager\" title=\"django.db.models.Manager\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Manager</span></code></a>. Isso é útil por exemplo quando você tem uma <a class=\"reference internal\" href=\"/pt-br/4.1/topics/db/managers/#custom-managers\"><span class=\"std std-ref\">custom manager</span></a>:</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=\"n\">get_object_or_404</span><span class=\"p\">(</span><span class=\"n\">Book</span><span class=\"o\">.</span><span class=\"n\">dahl_objects</span><span class=\"p\">,</span> <span class=\"n\">title</span><span class=\"o\">=</span><span class=\"s1\">&#39;Matilda&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Você pode usar também uma  <a class=\"reference internal\" href=\"/pt-br/4.1/ref/models/relations/#django.db.models.fields.related.RelatedManager\" title=\"django.db.models.fields.related.RelatedManager\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">&quot;Manager&quot;/s</span> <span class=\"pre\">relacionados</span></code></a>:</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=\"n\">author</span> <span class=\"o\">=</span> <span class=\"n\">Author</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s1\">&#39;Roald Dahl&#39;</span><span class=\"p\">)</span>\n<span class=\"n\">get_object_or_404</span><span class=\"p\">(</span><span class=\"n\">author</span><span class=\"o\">.</span><span class=\"n\">book_set</span><span class=\"p\">,</span> <span class=\"n\">title</span><span class=\"o\">=</span><span class=\"s1\">&#39;Matilda&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Nota: Assimcomo o <code class=\"docutils literal notranslate\"><span class=\"pre\">get()</span></code>, uma exceção do tipo <a class=\"reference internal\" href=\"/pt-br/4.1/ref/exceptions/#django.core.exceptions.MultipleObjectsReturned\" title=\"django.core.exceptions.MultipleObjectsReturned\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">MultipleObjectsReturned</span></code></a> será emitida se mais de um objeto for encontrado..</p>\n</section>\n</section>\n<section id=\"get-list-or-404\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">get_list_or_404()</span></code><a class=\"heading-anchor\" href=\"#get-list-or-404\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.shortcuts.get_list_or_404\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_list_or_404</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">klass</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.shortcuts.get_list_or_404\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Retorna o resultado de <a class=\"reference internal\" href=\"/pt-br/4.1/ref/models/querysets/#django.db.models.query.QuerySet.filter\" title=\"django.db.models.query.QuerySet.filter\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">filter()</span></code></a> de um dado “manager” de modelo como uma lista (cast), emitindo um <a class=\"reference internal\" href=\"/pt-br/4.1/topics/http/views/#django.http.Http404\" title=\"django.http.Http404\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Http404</span></code></a> se a lista estiver vazia.</p>\n</dd></dl>\n\n<section id=\"id2\">\n<h3>Arguments<a class=\"heading-anchor\" href=\"#id2\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"simple\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">klass</span></code></dt><dd><p>Uma instância <a class=\"reference internal\" href=\"/pt-br/4.1/ref/models/instances/#django.db.models.Model\" title=\"django.db.models.Model\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Model</span></code></a>, <a class=\"reference internal\" href=\"/pt-br/4.1/topics/db/managers/#django.db.models.Manager\" title=\"django.db.models.Manager\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Manager</span></code></a> ou de <a class=\"reference internal\" href=\"/pt-br/4.1/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">QuerySet</span></code></a> da qual ler a lista.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">*args</span></code></dt><dd><p><a class=\"reference internal\" href=\"/pt-br/4.1/ref/models/querysets/#django.db.models.Q\" title=\"django.db.models.Q\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Q</span> <span class=\"pre\">objects</span></code></a>.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">**kwargs</span></code></dt><dd><p>Parâmetros de filtro, o quais devem estar no mesmo formato que os aceito por <code class=\"docutils literal notranslate\"><span class=\"pre\">get()</span></code> e <code class=\"docutils literal notranslate\"><span class=\"pre\">filter()</span></code>.</p>\n</dd>\n</dl>\n</section>\n<section id=\"id3\">\n<h3>Exemplo<a class=\"heading-anchor\" href=\"#id3\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>O exemplo seguinte pega todos os objetos publicados do <code class=\"docutils literal notranslate\"><span class=\"pre\">MyModel</span></code>:</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.shortcuts</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">get_list_or_404</span>\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"n\">my_objects</span> <span class=\"o\">=</span> <span class=\"n\">get_list_or_404</span><span class=\"p\">(</span><span class=\"n\">MyModel</span><span class=\"p\">,</span> <span class=\"n\">published</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Este exemplo é equivalente a:</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.http</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Http404</span>\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"n\">my_objects</span> <span class=\"o\">=</span> <span class=\"nb\">list</span><span class=\"p\">(</span><span class=\"n\">MyModel</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">published</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">))</span>\n    <span class=\"k\">if</span> <span class=\"ow\">not</span> <span class=\"n\">my_objects</span><span class=\"p\">:</span>\n        <span class=\"k\">raise</span> <span class=\"n\">Http404</span><span class=\"p\">(</span><span class=\"s2\">&quot;No MyModel matches the given query.&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n</section>","rootId":"module-django.shortcuts","toc":[{"title":"render()","anchor":"render","children":[{"title":"Argumentos requeridos","anchor":"required-arguments","children":[]},{"title":"Argumentos opcionais","anchor":"optional-arguments","children":[]},{"title":"Exemplo","anchor":"example","children":[]}]},{"title":"redirect()","anchor":"redirect","children":[{"title":"Exemplos","anchor":"examples","children":[]}]},{"title":"get_object_or_404()","anchor":"get-object-or-404","children":[{"title":"Arguments","anchor":"arguments","children":[]},{"title":"Exemplo","anchor":"id1","children":[]}]},{"title":"get_list_or_404()","anchor":"get-list-or-404","children":[{"title":"Arguments","anchor":"id2","children":[]},{"title":"Exemplo","anchor":"id3","children":[]}]}],"breadcrumbs":[{"docname":"topics/index","title":"Usando o Django","url":"/pt-br/4.1/topics/"},{"docname":"topics/http/index","title":"Tratando requisições HTTP","url":"/pt-br/4.1/topics/http/"}],"prev":{"docname":"topics/http/file-uploads","title":"“Upload” de arquivos","url":"/pt-br/4.1/topics/http/file-uploads/"},"next":{"docname":"topics/http/generic-views","title":"“Views” genéricas","url":"/pt-br/4.1/topics/http/generic-views/"},"formats":{"html":"/pt-br/4.1/topics/http/shortcuts/","markdown":"/pt-br/4.1/topics/http/shortcuts.md","json":"/pt-br/4.1/topics/http/shortcuts.json"},"source":"https://github.com/django/django/blob/stable/4.1.x/docs/topics/http/shortcuts.txt","official":"https://docs.djangoproject.com/pt-br/4.1/topics/http/shortcuts/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}