{"title":"Sobrescrevendo templates","version":"2.1","locale":"pt-br","docname":"howto/overriding-templates","url":"/pt-br/2.1/howto/overriding-templates/","canonical":"https://djangodocs.dev/pt-br/2.1/howto/overriding-templates/","summary":"No seu projeto, você pode querer sobrescrever um template em outra aplicação Django, seja ela uma aplicação de terceiros ou uma aplicação contrib, como…","html":"<h1>Sobrescrevendo templates<a class=\"heading-anchor\" href=\"#overriding-templates\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>No seu projeto, você pode querer sobrescrever um template em outra aplicação Django, seja ela uma aplicação de terceiros ou uma aplicação contrib, como <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.admin</span></code> Você pode colocar os templates sobrescritos no seu diretório de templates ou em um diretório de templates de aplicação.</p>\n<p>If you have app and project templates directories that both contain overrides,\nthe default Django template loader will try to load the template from the\nproject-level directory first. In other words, <a class=\"reference internal\" href=\"/pt-br/2.1/ref/settings/#std-setting-TEMPLATES-DIRS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DIRS</span></code></a>\nis searched before <a class=\"reference internal\" href=\"/pt-br/2.1/ref/settings/#std-setting-TEMPLATES-APP_DIRS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">APP_DIRS</span></code></a>.</p>\n<aside class=\"admonition admonition-seealso\">\n<p class=\"admonition-title\">Ver também</p>\n<p>Leia <a class=\"reference internal\" href=\"/pt-br/2.1/ref/forms/renderers/#overriding-built-in-widget-templates\"><span class=\"std std-ref\">Overriding built-in widget templates</span></a> se você estiver procurando fazer isso.</p>\n</aside>\n<section id=\"overriding-from-the-project-s-templates-directory\">\n<h2>Sobrescrevendo do diretório de templates do projeto.<a class=\"heading-anchor\" href=\"#overriding-from-the-project-s-templates-directory\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Primeiro, iremos explorar a sobrescrita de templates criando templates de substituição no seu diretório de templates do projeto.</p>\n<p>Vamos dizer que você esteja tentado sobrescrever os templates de uma aplicação de terceiros chamada <code class=\"docutils literal notranslate\"><span class=\"pre\">blog</span></code>, que provê os templates <code class=\"docutils literal notranslate\"><span class=\"pre\">blog/post.html</span></code> e <code class=\"docutils literal notranslate\"><span class=\"pre\">blog/list.html</span></code>. As configurações relevantes do seu projeto irão parecer com:</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\">import</span><span class=\"w\"> </span><span class=\"nn\">os</span>\n\n<span class=\"n\">BASE_DIR</span> <span class=\"o\">=</span> <span class=\"n\">os</span><span class=\"o\">.</span><span class=\"n\">path</span><span class=\"o\">.</span><span class=\"n\">dirname</span><span class=\"p\">(</span><span class=\"n\">os</span><span class=\"o\">.</span><span class=\"n\">path</span><span class=\"o\">.</span><span class=\"n\">dirname</span><span class=\"p\">(</span><span class=\"n\">os</span><span class=\"o\">.</span><span class=\"n\">path</span><span class=\"o\">.</span><span class=\"n\">abspath</span><span class=\"p\">(</span><span class=\"vm\">__file__</span><span class=\"p\">)))</span>\n\n<span class=\"n\">INSTALLED_APPS</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"o\">...</span><span class=\"p\">,</span>\n    <span class=\"s1\">&#39;blog&#39;</span><span class=\"p\">,</span>\n    <span class=\"o\">...</span><span class=\"p\">,</span>\n<span class=\"p\">]</span>\n\n<span class=\"n\">TEMPLATES</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"p\">{</span>\n        <span class=\"s1\">&#39;BACKEND&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;django.template.backends.django.DjangoTemplates&#39;</span><span class=\"p\">,</span>\n        <span class=\"s1\">&#39;DIRS&#39;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"n\">os</span><span class=\"o\">.</span><span class=\"n\">path</span><span class=\"o\">.</span><span class=\"n\">join</span><span class=\"p\">(</span><span class=\"n\">BASE_DIR</span><span class=\"p\">,</span> <span class=\"s1\">&#39;templates&#39;</span><span class=\"p\">)],</span>\n        <span class=\"s1\">&#39;APP_DIRS&#39;</span><span class=\"p\">:</span> <span class=\"kc\">True</span><span class=\"p\">,</span>\n        <span class=\"o\">...</span>\n    <span class=\"p\">},</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>A configuração <a class=\"reference internal\" href=\"/pt-br/2.1/ref/settings/#std-setting-TEMPLATES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TEMPLATES</span></code></a> e <code class=\"docutils literal notranslate\"><span class=\"pre\">BASE_DIR</span></code> irá existir se você tiver criado o seu projeto usando o template padrão de projeto. A configuração que precisa ser modificada é <code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DIRS</span></code>.</p>\n<p>Essas configurações assumem que você tenha um diretório <code class=\"docutils literal notranslate\"><span class=\"pre\">templates</span></code> na raiz do seu projeto. Para sobrescrever os templates para a aplicação <code class=\"docutils literal notranslate\"><span class=\"pre\">blog</span></code>, crie um diretório no diretório <code class=\"docutils literal notranslate\"><span class=\"pre\">templates</span></code>, e adicione os arquivos de template nessa pasta recém criada.</p>\n<div class=\"code-block\" data-language=\"none\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">None</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=\"None code\"><code>templates/\n    blog/\n        list.html\n        post.html\n</code></pre></div>\n<p>O carregador de template primeiro procura por templates no diretório <code class=\"docutils literal notranslate\"><span class=\"pre\">DIRS</span></code>. Quando as views na aplicação <code class=\"docutils literal notranslate\"><span class=\"pre\">blog</span></code> pedirem pelos templates <code class=\"docutils literal notranslate\"><span class=\"pre\">blog.post.html```e</span> <span class=\"pre\">``blog.list.html</span></code>, o carregador irá retornar os arquivos que você acabou de criar.</p>\n</section>\n<section id=\"overriding-from-an-app-s-template-directory\">\n<h2>Sobrescrevendo de um diretório de template de aplicação.<a class=\"heading-anchor\" href=\"#overriding-from-an-app-s-template-directory\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Since you’re overriding templates located outside of one of your project’s\napps, it’s more common to use the first method and put template overrides in a\nproject’s templates folder. If you prefer, however, it’s also possible to put\nthe overrides in an app’s template directory.</p>\n<p>Primeiro, tenha certeza que as suas configurações de template estão verificando dentro dos diretórios de aplicação:</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\">TEMPLATES</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"p\">{</span>\n        <span class=\"o\">...</span><span class=\"p\">,</span>\n        <span class=\"s1\">&#39;APP_DIRS&#39;</span><span class=\"p\">:</span> <span class=\"kc\">True</span><span class=\"p\">,</span>\n        <span class=\"o\">...</span>\n    <span class=\"p\">},</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>If you want to put the template overrides in an app called <code class=\"docutils literal notranslate\"><span class=\"pre\">myapp</span></code> and the\ntemplates to override are named <code class=\"docutils literal notranslate\"><span class=\"pre\">blog/list.html</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">blog/post.html</span></code>,\nthen your directory structure will look like:</p>\n<div class=\"code-block\" data-language=\"none\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">None</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=\"None code\"><code>myapp/\n    templates/\n        blog/\n            list.html\n            post.html\n</code></pre></div>\n<p>Com a configuração <code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">APP_DIRS</span></code> definida como <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, o carregador de templates irá procurar no diretório de templates de aplicação e encontrar os templates.</p>\n</section>","rootId":"overriding-templates","toc":[{"title":"Sobrescrevendo do diretório de templates do projeto.","anchor":"overriding-from-the-project-s-templates-directory","children":[]},{"title":"Sobrescrevendo de um diretório de template de aplicação.","anchor":"overriding-from-an-app-s-template-directory","children":[]}],"breadcrumbs":[{"docname":"howto/index","title":"Guias de “como fazer”","url":"/pt-br/2.1/howto/"}],"prev":{"docname":"howto/outputting-pdf","title":"Gerando PDFs com o Django","url":"/pt-br/2.1/howto/outputting-pdf/"},"next":{"docname":"howto/static-files/index","title":"Gerenciamento de arquivos estáticos (ex.: imagens, JavaScript, CSS)","url":"/pt-br/2.1/howto/static-files/"},"formats":{"html":"/pt-br/2.1/howto/overriding-templates/","markdown":"/pt-br/2.1/howto/overriding-templates.md","json":"/pt-br/2.1/howto/overriding-templates.json"},"source":"https://github.com/django/django/blob/stable/2.1.x/docs/howto/overriding-templates.txt","official":"https://docs.djangoproject.com/pt-br/2.1/howto/overriding-templates/","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"],"inLocales":["en","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}