{"title":"Formulir membangun API","version":"2.2","locale":"id","docname":"ref/forms/renderers","url":"/id/2.2/ref/forms/renderers/","canonical":"https://djangodocs.dev/id/2.2/ref/forms/renderers/","summary":"Widgets formulir Django dibangun menggunakan Django's template engines system. Pengolahan membangun formulir dapat disesuaikan pada beberapa tingkat: Widget…","html":"<span id=\"the-form-rendering-api\"></span><h1>Formulir membangun API<a class=\"heading-anchor\" href=\"#module-django.forms.renderers\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Widgets formulir Django dibangun menggunakan Django's <a class=\"reference internal\" href=\"/id/2.2/topics/templates/\"><span class=\"doc\">template engines system</span></a>.</p>\n<p>Pengolahan membangun formulir dapat disesuaikan pada beberapa tingkat:</p>\n<ul class=\"simple\">\n<li><p>Widget dapat menentukan nama-nama cetakan penyesuaian.</p></li>\n<li><p>Formulir dan widget dapat menentukan kelas-kelas pembangun penyesuaian.</p></li>\n<li><p>Sebuah cetakan widget dapat ditimpa oleh sebuah proyek. (Menggunakan kembali aplikasi tertentu jangan menimpa cetakan siap-pakai karena mereka mungkin bertentangan dengan cetakan-cetakan penyesuaian proyek.)</p></li>\n</ul>\n<section id=\"the-low-level-render-api\">\n<span id=\"low-level-widget-render-api\"></span><h2>Tingkat-rendah pembangun API<a class=\"heading-anchor\" href=\"#the-low-level-render-api\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Pembangunan dari cetakan formulir dikendalikan oleh kelas pembangun penyesuaian. Sebuah pembangun penyesuaian dapat ditentukan dengan memperbaharui pengaturan <a class=\"reference internal\" href=\"/id/2.2/ref/settings/#std-setting-FORM_RENDERER\"><code class=\"xref std std-setting docutils literal notranslate\">FORM_RENDERER</code></a>. Awalan itu pada <code class=\"docutils literal notranslate\">'</code><a class=\"reference internal\" href=\"#django.forms.renderers.DjangoTemplates\" title=\"django.forms.renderers.DjangoTemplates\"><code class=\"xref py py-class docutils literal notranslate\">django.forms.renderers.DjangoTemplates</code></a><code class=\"docutils literal notranslate\">'</code>.</p>\n<p>Anda dapat juga menyediakan penyesuaian dibangun dengan mengatur atribut <a class=\"reference internal\" href=\"/id/2.2/ref/forms/api/#django.forms.Form.default_renderer\" title=\"django.forms.Form.default_renderer\"><code class=\"xref py py-attr docutils literal notranslate\">Form.default_renderer</code></a> atau dengan menggunakan argumen <code class=\"docutils literal notranslate\">renderer</code> dari <a class=\"reference internal\" href=\"/id/2.2/ref/forms/widgets/#django.forms.Widget.render\" title=\"django.forms.Widget.render\"><code class=\"xref py py-meth docutils literal notranslate\">Widget.render()</code></a>.</p>\n<p>Gunakan satu dari <a class=\"reference internal\" href=\"#built-in-template-form-renderers\"><span class=\"std std-ref\">built-in template form renderers</span></a> atau menerapkan anda sendiri. Pembangun penyesuaian harus menerapkan sebuah metode <code class=\"docutils literal notranslate\">render(template_name, context, request=None)</code>. Itu harus mengembalikan sebuah cetakan terbangun (sebagai string) atau memunculkan <a class=\"reference internal\" href=\"/id/2.2/topics/templates/#django.template.TemplateDoesNotExist\" title=\"django.template.TemplateDoesNotExist\"><code class=\"xref py py-exc docutils literal notranslate\">TemplateDoesNotExist</code></a>.</p>\n</section>\n<section id=\"built-in-template-form-renderers\">\n<span id=\"id1\"></span><h2>Pembangun formulir cetakan-siap-pakai<a class=\"heading-anchor\" href=\"#built-in-template-form-renderers\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"djangotemplates\">\n<h3><code class=\"docutils literal notranslate\">DjangoTemplates</code><a class=\"heading-anchor\" href=\"#djangotemplates\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.renderers.DjangoTemplates\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">DjangoTemplates</span><a class=\"heading-anchor\" href=\"#django.forms.renderers.DjangoTemplates\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Pembangun ini menggunakan mesin <a class=\"reference internal\" href=\"/id/2.2/topics/templates/#django.template.backends.django.DjangoTemplates\" title=\"django.template.backends.django.DjangoTemplates\"><code class=\"xref py py-class docutils literal notranslate\">DjangoTemplates</code></a> berdiri sendiri (tidak terhubung ke apa yang anda telah konfigurasikan dalam pengaturan <a class=\"reference internal\" href=\"/id/2.2/ref/settings/#std-setting-TEMPLATES\"><code class=\"xref std std-setting docutils literal notranslate\">TEMPLATES</code></a>). Itu memuat cetakan-cetakan pertama dari direktori cetakan formulir siap-pakai dalam <code class=\"docutils literal notranslate\">django/forms/templates</code> dan kemudian dari direktori cetakan aplikasi terpasang menggunakan pemuat <a class=\"reference internal\" href=\"/id/2.2/ref/templates/api/#django.template.loaders.app_directories.Loader\" title=\"django.template.loaders.app_directories.Loader\"><code class=\"xref py py-class docutils literal notranslate\">app_directories</code></a>.</p>\n<p>Jika anda ingin membangun cetakan dengan penyesuaian dari pengaturan <a class=\"reference internal\" href=\"/id/2.2/ref/settings/#std-setting-TEMPLATES\"><code class=\"xref std std-setting docutils literal notranslate\">TEMPLATES</code></a> anda, seperti pengeolah konteks sebagai contoh, gunakan pembangun <a class=\"reference internal\" href=\"#django.forms.renderers.TemplatesSetting\" title=\"django.forms.renderers.TemplatesSetting\"><code class=\"xref py py-class docutils literal notranslate\">TemplatesSetting</code></a>.</p>\n</section>\n<section id=\"jinja2\">\n<h3><code class=\"docutils literal notranslate\">Jinja2</code><a class=\"heading-anchor\" href=\"#jinja2\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.renderers.Jinja2\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Jinja2</span><a class=\"heading-anchor\" href=\"#django.forms.renderers.Jinja2\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Pembangun ini adalah sama seperti pembangun <a class=\"reference internal\" href=\"#django.forms.renderers.DjangoTemplates\" title=\"django.forms.renderers.DjangoTemplates\"><code class=\"xref py py-class docutils literal notranslate\">DjangoTemplates</code></a> kecuali bahwa itu menggunakan sebuah backend <a class=\"reference internal\" href=\"/id/2.2/topics/templates/#django.template.backends.jinja2.Jinja2\" title=\"django.template.backends.jinja2.Jinja2\"><code class=\"xref py py-class docutils literal notranslate\">Jinja2</code></a>. Cetakan-cetakan untuk widget siap-pakai ditempatkan dalam <code class=\"docutils literal notranslate\">django/forms/jinja2</code> dan aplikasi terpasang dapat menyediakan cetakan dalam direktori <code class=\"docutils literal notranslate\">jinja2</code>.</p>\n<p>Untuk menggunakan backend ini, semua widget dalam proyek anda dan aplikasi pihak-ketiganya harus mempunyai cetakan Jinja2. Meskipun anda menyediakan  cetakan Jinja2 anda sendiri untuk wodget yang tidak mempunyai apapun, anda tidak bisa menggunakan pembangun ini. Sebagai contoh, <a class=\"reference internal\" href=\"/id/2.2/ref/contrib/admin/#module-django.contrib.admin\" title=\"django.contrib.admin: Django's admin site.\"><code class=\"xref py py-mod docutils literal notranslate\">django.contrib.admin</code></a> tidak menyertakan cetakan Jinja2 untuk widgetnya karena penggunaan mereka dari etiket cetakan Django.</p>\n</section>\n<section id=\"templatessetting\">\n<h3><code class=\"docutils literal notranslate\">TemplatesSetting</code><a class=\"heading-anchor\" href=\"#templatessetting\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.renderers.TemplatesSetting\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">TemplatesSetting</span><a class=\"heading-anchor\" href=\"#django.forms.renderers.TemplatesSetting\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Pembangun ini memberikan anda kendali penuh dari bagaimana cetakan widget bersumber. Itu menggunakan <a class=\"reference internal\" href=\"/id/2.2/topics/templates/#django.template.loader.get_template\" title=\"django.template.loader.get_template\"><code class=\"xref py py-func docutils literal notranslate\">get_template()</code></a> untuk menemukan widget cetakan berdasarkan pada apa yang dikonfigurasikan dalam pengaturan <a class=\"reference internal\" href=\"/id/2.2/ref/settings/#std-setting-TEMPLATES\"><code class=\"xref std std-setting docutils literal notranslate\">TEMPLATES</code></a>.</p>\n<p>Menggunakan pembangun ini bersama dengan cetakan widget siap-pakai membutuhkan salah satu:</p>\n<ul>\n<li><p><code class=\"docutils literal notranslate\">'django.forms'</code> in <a class=\"reference internal\" href=\"/id/2.2/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a> dan setidaknya satu mesin dengan <a class=\"reference internal\" href=\"/id/2.2/ref/settings/#std-setting-TEMPLATES-APP_DIRS\"><code class=\"xref std std-setting docutils literal notranslate\">APP_DIRS=True</code></a>.</p></li>\n<li><p>Menambahkan direktori cetakan widget siap-pakai dalam <a class=\"reference internal\" href=\"/id/2.2/ref/settings/#std-setting-TEMPLATES-DIRS\"><code class=\"xref std std-setting docutils literal notranslate\">DIRS</code></a> dari satu mesin cetakan anda. Untuk membangkitkan jalur itu:</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=\"nn\">django</span>\ndjango<span class=\"o\">.</span>__path__<span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">]</span> <span class=\"o\">+</span> <span class=\"s1\">&#39;/forms/templates&#39;</span>  <span class=\"c1\"># or &#39;/forms/jinja2&#39;</span>\n</code></pre></div>\n</li>\n</ul>\n<p>Menggunakan pembangun ini membutuhkan anda untuk memastikan cetakan formulir proyek anda butuhkan dapat ditempatkan.</p>\n</section>\n</section>\n<section id=\"context-available-in-widget-templates\">\n<h2>Konteks tersedia dalam cetakan widget<a class=\"heading-anchor\" href=\"#context-available-in-widget-templates\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Cetakan widget menerima sebuah konteks dari <a class=\"reference internal\" href=\"/id/2.2/ref/forms/widgets/#django.forms.Widget.get_context\" title=\"django.forms.Widget.get_context\"><code class=\"xref py py-meth docutils literal notranslate\">Widget.get_context()</code></a>. Secara awalan, widget menerima sebuah nilai tunggal dalam konteks, <code class=\"docutils literal notranslate\">widget</code>. Ini adalah sebuah dictionary yang mengandung nilai-nilai seperti:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">name</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">value</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">attrs</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">is_hidden</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">template_name</code></p></li>\n</ul>\n<p>Beberapa widget menambah informasi lebih lanjut pada konteks. Sebagai contoh, semua widget yang subkelas <code class=\"docutils literal notranslate\">Input</code> menentukan <code class=\"docutils literal notranslate\">widget['type']</code> dan <a class=\"reference internal\" href=\"/id/2.2/ref/forms/widgets/#django.forms.MultiWidget\" title=\"django.forms.MultiWidget\"><code class=\"xref py py-class docutils literal notranslate\">MultiWidget</code></a> menentukan <code class=\"docutils literal notranslate\">widget['subwidgets']</code> untuk tujuan perulangan.</p>\n</section>\n<section id=\"overriding-built-in-widget-templates\">\n<span id=\"id2\"></span><h2>Menimpa cetakan widget siap-pakai<a class=\"heading-anchor\" href=\"#overriding-built-in-widget-templates\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Setiap widget mempunyai sebuah atribut <code class=\"docutils literal notranslate\">template_name</code> dengan sebuah nilai seperti <code class=\"docutils literal notranslate\">input.html</code>. Cetakan widget siap-pakai disimpan dalam jalur <code class=\"docutils literal notranslate\">django/forms/widgets</code>. Anda dapat menyediakan cetakan penyesuaian untuk <code class=\"docutils literal notranslate\">input.html</code> dengan menentukan <code class=\"docutils literal notranslate\">django/forms/widgets/input.html</code>, sebagai contoh. Lihat <a class=\"reference internal\" href=\"/id/2.2/ref/forms/widgets/#built-in-widgets\"><span class=\"std std-ref\">Widget pasang tetap</span></a> untuk nama dari setiap cetakan widget.</p>\n<p>Untuk menimpa cetakan widget, anda harus menggunakan pembangun <a class=\"reference internal\" href=\"#django.forms.renderers.TemplatesSetting\" title=\"django.forms.renderers.TemplatesSetting\"><code class=\"xref py py-class docutils literal notranslate\">TemplatesSetting</code></a>. Kemudian menimpa cetakan widget bekerja <a class=\"reference internal\" href=\"/id/2.2/howto/overriding-templates/\"><span class=\"doc\">the same as</span></a> menimpa cetakan lain apapun dalam proyek anda.</p>\n</section>","rootId":"module-django.forms.renderers","toc":[{"title":"Tingkat-rendah pembangun API","anchor":"the-low-level-render-api","children":[]},{"title":"Pembangun formulir cetakan-siap-pakai","anchor":"built-in-template-form-renderers","children":[{"title":"DjangoTemplates","anchor":"djangotemplates","children":[]},{"title":"Jinja2","anchor":"jinja2","children":[]},{"title":"TemplatesSetting","anchor":"templatessetting","children":[]}]},{"title":"Konteks tersedia dalam cetakan widget","anchor":"context-available-in-widget-templates","children":[]},{"title":"Menimpa cetakan widget siap-pakai","anchor":"overriding-built-in-widget-templates","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"Acuan API","url":"/id/2.2/ref/"},{"docname":"ref/forms/index","title":"Formulir","url":"/id/2.2/ref/forms/"}],"prev":{"docname":"ref/forms/formsets","title":"Fungsi Formset","url":"/id/2.2/ref/forms/formsets/"},"next":{"docname":"ref/forms/widgets","title":"Widget","url":"/id/2.2/ref/forms/widgets/"},"formats":{"html":"/id/2.2/ref/forms/renderers/","markdown":"/id/2.2/ref/forms/renderers.md","json":"/id/2.2/ref/forms/renderers.json"},"source":"https://github.com/django/django/blob/stable/2.2.x/docs/ref/forms/renderers.txt","official":"https://docs.djangoproject.com/id/2.2/ref/forms/renderers/","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"]}