---
title: "How to override templates"
version: 4.1
locale: id
source: https://docs.djangoproject.com/id/4.1/howto/overriding-templates/
canonical: https://djangodocs.dev/id/4.1/howto/overriding-templates/
---
# How to override templates

Dalam proyek anda, anda mungkin ingin menimpa sebuah cetakan dalam aplikasi Django lain, apakai itu berupa aplikasi pihak-ketiga atau aplikasi bantuan seperti `django.contrib.admin`. Anda dapat antara menaruh cetakan menimpa dalam direktori cetakan proyek anda atau dalam sebuah direktori cetakan aplikasi.

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, `DIRS 1` dicari sebelum `APP_DIRS 2`.

> **See also**
>
> Baca [Menimpa cetakan widget siap-pakai](/id/4.1/ref/forms/renderers/#overriding-built-in-widget-templates) jika anda sedang mencari untuk melakukannya.

## Menimpa dari direktori cetakan proyek

Pertama, kami akan menjelajahi menimpa cetakan dengan membuat cetakan pengganti dalam direktori cetakan proyek anda.

Mari kita katakan anda sedang mencoba menimpa cetakan untuk aplikasi pihak-ketiga disebut `blog`, yang menyediakan cetakan `blog/post.html` dan `blog/list.html`. Pengaturan terkait untuk proyek anda akan terlihat seperti:

```
from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent.parent

INSTALLED_APPS = [
    ...,
    'blog',
    ...,
]

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR / 'templates'],
        'APP_DIRS': True,
        ...
    },
]
```

Pengaturan [`TEMPLATES`](/id/4.1/ref/settings/#std-setting-TEMPLATES) dan `BASE_DIR` akan sudah ada jika anda membuat proyek anda menggunakan cetakan proyek awalan. Pengaturan yang butuh dirubah adalah `DIRS1`.

Pengaturan ini menganggap anda mempunyai sebuah direktori `templates` dalam akar dari proyek anda. Untuk menimpa cetakan untuk aplikasi `blog`, buat sebuah folder dalam direktori `templates`, dan tambah berkas-berkas cetakan ke folder itu.

```
templates/
    blog/
        list.html
        post.html
```

Pemuat cetakan pertama mencari untuk cetakan dalam direktori `DIRS`. ketika tampilan dalam aplikasi `blog` untuk cetakan `blog/post.html` dan `blog/list.html`, pemuat akan mengembalikan berkas-berkas anda telah buat.

## Menimpa dari direktori cetakan aplikasi

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.

Pertama, pastikan pengaturan cetakan anda memeriksa didalam direktori aplikasi:

```
TEMPLATES = [
    {
        ...,
        'APP_DIRS': True,
        ...
    },
]
```

Jika anda ingin menaruh cetakan penimpaan dalam sebuah aplikasi disebut `myapp` dan cetakan untuk menima bernama `blog/list.html` dan `blog/post.html`, kemudian struktur direktori anda akan terlihat seperti:

```
myapp/
    templates/
        blog/
            list.html
            post.html
```

Dengan `APP_DIRS1` disetel menjadi `True`, pemuat cetakan akan terlihat dalam direktori cetakan aplikasi dan menemukan cetakan.

## Memperluas cetakan yang diganti

With your template loaders configured, you can extend a template using the
[`{% extends %}`](/id/4.1/ref/templates/builtins/#std-templatetag-extends) template tag whilst at the same time overriding
it. This can allow you to make small customizations without needing to
reimplement the entire template.

Sebagai contoh, anda dapat menggunakan teknik ini untuk menambahkan logo penyesuaian pada cetakan `admin/base_site.html`:

> *`templates/admin/base_site.html`*
>
> ```html+django
>  {% extends "admin/base_site.html" %}
>
>  {% block branding %}
>      <img src="link/to/logo.png" alt="logo">
>      {{ block.super }}
>  {% endblock %}
> ```

Titik kunci pada catatan:

- The example creates a file at `templates/admin/base_site.html` that uses
  the configured project-level `templates` directory to override
  `admin/base_site.html`.
- The new template extends `admin/base_site.html`, which is the same template
  as is being overridden.
- The template replaces just the `branding` block, adding a custom logo, and
  using `block.super` to retain the prior content.
- The rest of the template is inherited unchanged from
  `admin/base_site.html`.

This technique works because the template loader does not consider the already
loaded override template (at `templates/admin/base_site.html`) when
resolving the `extends` tag. Combined with `block.super` it is a powerful
technique to make small customizations.
