{"title":"Menimpa cetakan","version":"3.2","locale":"id","docname":"howto/overriding-templates","url":"/id/3.2/howto/overriding-templates/","canonical":"https://djangodocs.dev/id/3.2/howto/overriding-templates/","summary":"Dalam proyek anda, anda mungkin ingin menimpa sebuah cetakan dalam aplikasi Django lain, apakai itu berupa aplikasi pihak-ketiga atau aplikasi bantuan…","html":"<h1>Menimpa cetakan<a class=\"heading-anchor\" href=\"#overriding-templates\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Dalam proyek anda, anda mungkin ingin menimpa sebuah cetakan dalam aplikasi Django lain, apakai itu berupa aplikasi pihak-ketiga atau aplikasi bantuan seperti <code class=\"docutils literal notranslate\">django.contrib.admin</code>. Anda dapat antara menaruh cetakan menimpa dalam direktori cetakan proyek anda atau dalam sebuah direktori cetakan aplikasi.</p>\n<p>Jika anda mempunyai aplikasi dan direktori cetakan proyek yang kedua kandungan menimpa, pemuat cetakan Django awalan akan mencoba memuat cetakan dari direktori tingkat-proyek dahulu. Dengan kata lain, <code class=\"xref std std-setting docutils literal notranslate\">DIRS 1</code> dicari sebelum <code class=\"xref std std-setting docutils literal notranslate\">APP_DIRS 2</code>.</p>\n<aside class=\"admonition admonition-seealso\" role=\"note\">\n<p class=\"admonition-title\">Lihat juga</p>\n<p>Baca <a class=\"reference internal\" href=\"/id/3.2/ref/forms/renderers/#overriding-built-in-widget-templates\"><span class=\"std std-ref\">Menimpa cetakan widget siap-pakai</span></a> jika anda sedang mencari untuk melakukannya.</p>\n</aside>\n<section id=\"overriding-from-the-project-s-templates-directory\">\n<h2>Menimpa dari direktori cetakan proyek<a class=\"heading-anchor\" href=\"#overriding-from-the-project-s-templates-directory\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Pertama, kami akan menjelajahi menimpa cetakan dengan membuat cetakan pengganti dalam direktori cetakan proyek anda.</p>\n<p>Mari kita katakan anda sedang mencoba menimpa cetakan untuk aplikasi pihak-ketiga disebut <code class=\"docutils literal notranslate\">blog</code>, yang menyediakan cetakan <code class=\"docutils literal notranslate\">blog/post.html</code> dan <code class=\"docutils literal notranslate\">blog/list.html</code>. Pengaturan terkait untuk proyek anda akan terlihat seperti:</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=\"nn\">pathlib</span> <span class=\"kn\">import</span> Path\n\nBASE_DIR <span class=\"o\">=</span> Path<span class=\"p\">(</span><span class=\"vm\">__file__</span><span class=\"p\">)</span><span class=\"o\">.</span>resolve<span class=\"p\">()</span><span class=\"o\">.</span>parent<span class=\"o\">.</span>parent\n\nINSTALLED_APPS <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\nTEMPLATES <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>BASE_DIR <span class=\"o\">/</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>Pengaturan <a class=\"reference internal\" href=\"/id/3.2/ref/settings/#std-setting-TEMPLATES\"><code class=\"xref std std-setting docutils literal notranslate\">TEMPLATES</code></a> dan <code class=\"docutils literal notranslate\">BASE_DIR</code> akan sudah ada jika anda membuat proyek anda menggunakan cetakan proyek awalan. Pengaturan yang butuh dirubah adalah <code class=\"xref std std-setting docutils literal notranslate\">DIRS1</code>.</p>\n<p>Pengaturan ini menganggap anda mempunyai sebuah direktori <code class=\"docutils literal notranslate\">templates</code> dalam akar dari proyek anda. Untuk menimpa cetakan untuk aplikasi <code class=\"docutils literal notranslate\">blog</code>, buat sebuah folder dalam direktori <code class=\"docutils literal notranslate\">templates</code>, dan tambah berkas-berkas cetakan ke folder itu.</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>Pemuat cetakan pertama mencari untuk cetakan dalam direktori <code class=\"docutils literal notranslate\">DIRS</code>. ketika tampilan dalam aplikasi <code class=\"docutils literal notranslate\">blog</code> untuk cetakan <code class=\"docutils literal notranslate\">blog/post.html</code> dan <code class=\"docutils literal notranslate\">blog/list.html</code>, pemuat akan mengembalikan berkas-berkas anda telah buat.</p>\n</section>\n<section id=\"overriding-from-an-app-s-template-directory\">\n<h2>Menimpa dari direktori cetakan aplikasi<a class=\"heading-anchor\" href=\"#overriding-from-an-app-s-template-directory\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Sejak anda sedang menimpa cetakan bertempat di luar dari satu dari aplikasi proyek anda, itu adalah lebih umum menggunakan metode pertama dan menaruh cetakan penimpaan dalam sebuah folder cetakan proyek. Jika anda memilih, bagaimanapun, itu juga memungkinkan menaruh penimpaan dalam sebuah direktori cetakan aplikasi.</p>\n<p>Pertama, pastikan pengaturan cetakan anda memeriksa didalam direktori aplikasi:</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>TEMPLATES <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>Jika anda ingin menaruh cetakan penimpaan dalam sebuah aplikasi disebut <code class=\"docutils literal notranslate\">myapp</code> dan cetakan untuk menima bernama <code class=\"docutils literal notranslate\">blog/list.html</code> dan <code class=\"docutils literal notranslate\">blog/post.html</code>, kemudian struktur direktori anda akan terlihat seperti:</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>Dengan <code class=\"xref std std-setting docutils literal notranslate\">APP_DIRS1</code> disetel menjadi <code class=\"docutils literal notranslate\">True</code>, pemuat cetakan akan terlihat dalam direktori cetakan aplikasi dan menemukan cetakan.</p>\n</section>\n<section id=\"extending-an-overridden-template\">\n<span id=\"id1\"></span><h2>Memperluas cetakan yang diganti<a class=\"heading-anchor\" href=\"#extending-an-overridden-template\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>With your template loaders configured, you can extend a template using the\n<a class=\"reference internal\" href=\"/id/3.2/ref/templates/builtins/#std-templatetag-extends\"><code class=\"xref std std-ttag docutils literal notranslate\">{% extends %}</code></a> template tag whilst at the same time overriding\nit. This can allow you to make small customizations without needing to\nreimplement the entire template.</p>\n<p>Sebagai contoh, anda dapat menggunakan teknik ini untuk menambahkan logo penyesuaian pada cetakan <code class=\"docutils literal notranslate\">admin/base_site.html</code>:</p>\n<blockquote>\n<div><figure class=\"code-block code-block-captioned\" data-language=\"html+django\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\">templates/admin/base_site.html</code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code> <span class=\"cp\">{%</span> <span class=\"k\">extends</span> <span class=\"s2\">&quot;admin/base_site.html&quot;</span> <span class=\"cp\">%}</span>\n\n <span class=\"cp\">{%</span> <span class=\"k\">block</span> <span class=\"nv\">branding</span> <span class=\"cp\">%}</span>\n     <span class=\"p\">&lt;</span><span class=\"nt\">img</span> <span class=\"na\">src</span><span class=\"o\">=</span><span class=\"s\">&quot;link/to/logo.png&quot;</span> <span class=\"na\">alt</span><span class=\"o\">=</span><span class=\"s\">&quot;logo&quot;</span><span class=\"p\">&gt;</span>\n     <span class=\"cp\">{{</span> <span class=\"nb\">block</span><span class=\"nv\">.super</span> <span class=\"cp\">}}</span>\n <span class=\"cp\">{%</span> <span class=\"k\">endblock</span> <span class=\"cp\">%}</span>\n</code></pre></figure>\n</div></blockquote>\n<p>Titik kunci pada catatan:</p>\n<ul class=\"simple\">\n<li><p>The example creates a file at <code class=\"docutils literal notranslate\">templates/admin/base_site.html</code> that uses\nthe configured project-level <code class=\"docutils literal notranslate\">templates</code> directory to override\n<code class=\"docutils literal notranslate\">admin/base_site.html</code>.</p></li>\n<li><p>The new template extends <code class=\"docutils literal notranslate\">admin/base_site.html</code>, which is the same template\nas is being overridden.</p></li>\n<li><p>The template replaces just the <code class=\"docutils literal notranslate\">branding</code> block, adding a custom logo, and\nusing <code class=\"docutils literal notranslate\">block.super</code> to retain the prior content.</p></li>\n<li><p>The rest of the template is inherited unchanged from\n<code class=\"docutils literal notranslate\">admin/base_site.html</code>.</p></li>\n</ul>\n<p>This technique works because the template loader does not consider the already\nloaded override template (at <code class=\"docutils literal notranslate\">templates/admin/base_site.html</code>) when\nresolving the <code class=\"docutils literal notranslate\">extends</code> tag. Combined with <code class=\"docutils literal notranslate\">block.super</code> it is a powerful\ntechnique to make small customizations.</p>\n</section>","rootId":"overriding-templates","toc":[{"title":"Menimpa dari direktori cetakan proyek","anchor":"overriding-from-the-project-s-templates-directory","children":[]},{"title":"Menimpa dari direktori cetakan aplikasi","anchor":"overriding-from-an-app-s-template-directory","children":[]},{"title":"Memperluas cetakan yang diganti","anchor":"extending-an-overridden-template","children":[]}],"breadcrumbs":[{"docname":"howto/index","title":"Panduan \"Bagaimana\"","url":"/id/3.2/howto/"}],"prev":{"docname":"howto/outputting-pdf","title":"Mengeluarkan PDF dengan Django","url":"/id/3.2/howto/outputting-pdf/"},"next":{"docname":"howto/static-files/index","title":"Mengelola berkas statis (sebagai contoh gambar, JavaScript, CSS)","url":"/id/3.2/howto/static-files/"},"formats":{"html":"/id/3.2/howto/overriding-templates/","markdown":"/id/3.2/howto/overriding-templates.md","json":"/id/3.2/howto/overriding-templates.json"},"source":"https://github.com/django/django/blob/stable/3.2.x/docs/howto/overriding-templates.txt","official":"https://docs.djangoproject.com/id/3.2/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","it","pt-br","ko","es","el","pl"]}