{"title":"Gaya pengkodean","version":"6.1","locale":"id","docname":"internals/contributing/writing-code/coding-style","url":"/id/6.1/internals/contributing/writing-code/coding-style/","canonical":"https://djangodocs.dev/id/6.1/internals/contributing/writing-code/coding-style/","summary":"Silahkan ikuti standar pengkodean ini ketika menulis kode untuk penyertaan di Django.","html":"<h1>Gaya pengkodean<a class=\"heading-anchor\" href=\"#coding-style\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Silahkan ikuti standar pengkodean ini ketika menulis kode untuk penyertaan di Django.</p>\n<section id=\"pre-commit-checks\">\n<span id=\"coding-style-pre-commit\"></span><h2>Pemeriksaan pra-komitmen<a class=\"heading-anchor\" href=\"#pre-commit-checks\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p><a class=\"reference external\" href=\"https://pre-commit.com\">pre-commit</a> is a framework for managing pre-commit\nhooks. These hooks help to identify simple issues before committing code for\nreview. By checking for these issues before code review it allows the reviewer\nto focus on the change itself, and it can also help to reduce the number of CI\nruns.</p>\n<p>Untuk menggunakan alat, pertama pasang <code class=\"docutils literal notranslate\">pre-commit</code> dan kemudian kait git:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-0-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</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=\"Shell code\"><code><span class=\"gp\">$ </span>python -m pip install pre-commit\n<span class=\"gp\">$ </span>pre-commit install\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-0-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</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=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> py -m pip install pre-commit\n<span class=\"gp\">...\\&gt;</span> pre-commit install\n</code></pre></div></div></div>\n<p>On the first commit <code class=\"docutils literal notranslate\">pre-commit</code> will install the hooks, these are\ninstalled in their own environments and will take a short while to\ninstall on the first run. Subsequent checks will be significantly faster.\nIf an error is found an appropriate error message will be displayed.\nIf the error was with <code class=\"docutils literal notranslate\">black</code> or <code class=\"docutils literal notranslate\">isort</code> then the tool will go ahead and\nfix them for you. Review the changes and re-stage for commit if you are happy\nwith them.</p>\n</section>\n<section id=\"python-style\">\n<span id=\"coding-style-python\"></span><h2>Gaya Phyton<a class=\"heading-anchor\" href=\"#python-style\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<ul>\n<li><p>All files should be formatted using the <a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/black/\">black</a> auto-formatter. This\nwill be run by <code class=\"docutils literal notranslate\">pre-commit</code> if that is configured.</p></li>\n<li><p>The project repository includes an <code class=\"docutils literal notranslate\">.editorconfig</code> file. We recommend using\na text editor with <a class=\"reference external\" href=\"https://editorconfig.org/\">EditorConfig</a> support to avoid indentation and\nwhitespace issues. The Python files use 4 spaces for indentation and the HTML\nfiles use 2 spaces.</p></li>\n<li><p>Meskipun sebaliknya ditentukan, ikuti <span class=\"target\" id=\"index-8\"></span><a class=\"pep reference external\" href=\"https://peps.python.org/pep-0008/\"><strong>PEP 8</strong></a>.</p>\n<p>Use <a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/flake8/\">flake8</a> to check for problems in this area. Note that our\n<code class=\"docutils literal notranslate\">.flake8</code> file excludes some errors that we don't consider as gross\nviolations. Remember that <span class=\"target\" id=\"index-1\"></span><a class=\"pep reference external\" href=\"https://peps.python.org/pep-0008/\"><strong>PEP 8</strong></a> is only a guide, so respect the style of\nthe surrounding code as a primary goal.</p>\n<p>An exception to <span class=\"target\" id=\"index-2\"></span><a class=\"pep reference external\" href=\"https://peps.python.org/pep-0008/\"><strong>PEP 8</strong></a> is our rules on line lengths. We allow up to 88\ncharacters in code, as this is the line length used by <code class=\"docutils literal notranslate\">black</code>.\nDocumentation, comments, and docstrings should be wrapped at 79 characters.\nThese limits are checked when <code class=\"docutils literal notranslate\">flake8</code> is run.</p>\n</li>\n<li><p>String variable interpolation may use\n<a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#old-string-formatting\" title=\"(di Python v3.14)\"><span class=\"xref std std-ref\">%-formatting</span></a>, <a class=\"reference external\" href=\"https://docs.python.org/3/reference/lexical_analysis.html#f-strings\" title=\"(di Python v3.14)\"><span class=\"xref std std-ref\">f-strings</span></a>, or <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#str.format\" title=\"(di Python v3.14)\"><code class=\"xref py py-meth docutils literal notranslate\">str.format()</code></a> as appropriate, with the goal of\nmaximizing code readability.</p>\n<p>Final judgments of readability are left to the Merger's discretion. As a\nguide, f-strings should use only plain variable and property access, with\nprior local variable assignment for more complex cases:</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=\"c1\"># Allowed</span>\n<span class=\"sa\">f</span><span class=\"s2\">&quot;hello </span><span class=\"si\">{</span>user<span class=\"si\">}</span><span class=\"s2\">&quot;</span>\n<span class=\"sa\">f</span><span class=\"s2\">&quot;hello </span><span class=\"si\">{</span>user<span class=\"o\">.</span>name<span class=\"si\">}</span><span class=\"s2\">&quot;</span>\n<span class=\"sa\">f</span><span class=\"s2\">&quot;hello </span><span class=\"si\">{</span><span class=\"bp\">self</span><span class=\"o\">.</span>user<span class=\"o\">.</span>name<span class=\"si\">}</span><span class=\"s2\">&quot;</span>\n\n<span class=\"c1\"># Disallowed</span>\n<span class=\"sa\">f</span><span class=\"s2\">&quot;hello </span><span class=\"si\">{</span>get_user<span class=\"p\">()</span><span class=\"si\">}</span><span class=\"s2\">&quot;</span>\n<span class=\"sa\">f</span><span class=\"s2\">&quot;you are </span><span class=\"si\">{</span>user<span class=\"o\">.</span>age <span class=\"o\">*</span> <span class=\"mf\">365.25</span><span class=\"si\">}</span><span class=\"s2\"> days old&quot;</span>\n\n<span class=\"c1\"># Allowed with local variable assignment</span>\nuser <span class=\"o\">=</span> get_user<span class=\"p\">()</span>\n<span class=\"sa\">f</span><span class=\"s2\">&quot;hello </span><span class=\"si\">{</span>user<span class=\"si\">}</span><span class=\"s2\">&quot;</span>\nuser_days_old <span class=\"o\">=</span> user<span class=\"o\">.</span>age <span class=\"o\">*</span> <span class=\"mf\">365.25</span>\n<span class=\"sa\">f</span><span class=\"s2\">&quot;you are </span><span class=\"si\">{</span>user_days_old<span class=\"si\">}</span><span class=\"s2\"> days old&quot;</span>\n</code></pre></div>\n<p>f-strings should not be used for any string that may require translation,\nincluding error and logging messages. In general <code class=\"docutils literal notranslate\">format()</code> is more\nverbose, so the other formatting methods are preferred.</p>\n<p>Don't waste time doing unrelated refactoring of existing code to adjust the\nformatting method.</p>\n</li>\n<li><p>Hindari penggunaan &quot;we&quot; dalam komentar, sebagai contoh &quot;Loop over&quot; daripada &quot;We loop over&quot;.</p></li>\n<li><p>Gunakan garis bawah, bukan camelCase, untuk variabel, fungsi dan nama-nama metode (yaitu <code class=\"docutils literal notranslate\">poll.get_unique_voters()</code>, bukan <code class=\"docutils literal notranslate\">poll.getUniqueVoters()</code>).</p></li>\n<li><p>Gunakan <code class=\"docutils literal notranslate\">InitialCaps</code> untuk nama-nama kelas (atau untuk fungsi pabrik yang mengembalikan kelas-kelas).</p></li>\n<li><p>Dalam docstring, ikuti gaya dari docstring yang ada dan <span class=\"target\" id=\"index-9\"></span><a class=\"pep reference external\" href=\"https://peps.python.org/pep-0257/\"><strong>PEP 257</strong></a>.</p></li>\n<li><p>Dalam percobaan, gunakan <a class=\"reference internal\" href=\"/id/6.1/topics/testing/tools/#django.test.SimpleTestCase.assertRaisesMessage\" title=\"django.test.SimpleTestCase.assertRaisesMessage\"><code class=\"xref py py-meth docutils literal notranslate\">assertRaisesMessage()</code></a> dan <a class=\"reference internal\" href=\"/id/6.1/topics/testing/tools/#django.test.SimpleTestCase.assertWarnsMessage\" title=\"django.test.SimpleTestCase.assertWarnsMessage\"><code class=\"xref py py-meth docutils literal notranslate\">assertWarnsMessage()</code></a> daripada <a class=\"reference external\" href=\"https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertRaises\" title=\"(di Python v3.14)\"><code class=\"xref py py-meth docutils literal notranslate\">assertRaises()</code></a> dan <a class=\"reference external\" href=\"https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertWarns\" title=\"(di Python v3.14)\"><code class=\"xref py py-meth docutils literal notranslate\">assertWarns()</code></a> sehingga anda dapat memeriksa pengecualian atau pesan peringatan. Hanya gunakan <a class=\"reference external\" href=\"https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertRaisesRegex\" title=\"(di Python v3.14)\"><code class=\"xref py py-meth docutils literal notranslate\">assertRaisesRegex()</code></a> dan <a class=\"reference external\" href=\"https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertWarnsRegex\" title=\"(di Python v3.14)\"><code class=\"xref py py-meth docutils literal notranslate\">assertWarnsRegex()</code></a> jika anda butuh pencocokan regular expression.</p>\n<p>Gunakan <a class=\"reference external\" href=\"https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertIs\" title=\"(di Python v3.14)\"><code class=\"xref py py-meth docutils literal notranslate\">assertIs(…, True/False)</code></a> untuk pengujian nilai boolean, daripada <a class=\"reference external\" href=\"https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertTrue\" title=\"(di Python v3.14)\"><code class=\"xref py py-meth docutils literal notranslate\">assertTrue()</code></a> dan <a class=\"reference external\" href=\"https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertFalse\" title=\"(di Python v3.14)\"><code class=\"xref py py-meth docutils literal notranslate\">assertFalse()</code></a>, sehingga anda dapat memeriksa nilai boolean sebenarnya, bukan kebenaran dari pernyataan.</p>\n</li>\n<li><p>Dalam docstring percobaan, nyatakan perilaku yang diharapkan yang setiap percobaan ditunjukkan. Jangan menyertakan pembukaan seperti &quot;Tests that&quot; atau &quot;Ensures that&quot;.</p>\n<p>Acuan tiket balikan untuk mengaburkan masalah dimana tiket mempunyai rincian tambahan yang tidak dapat dengan mudah digambarkan dalam docstring atau komentar. Termasuk nomor tiket pada akhir dari sebuah kalimat seperti ini:</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=\"nf\">test_foo</span><span class=\"p\">():</span>\n    <span class=\"sd\">&quot;&quot;&quot;</span>\n<span class=\"sd\">    A test docstring looks like this (#123456).</span>\n<span class=\"sd\">    &quot;&quot;&quot;</span>\n    <span class=\"o\">...</span>\n</code></pre></div>\n</li>\n<li><p>Where applicable, use unpacking generalizations compliant with <span class=\"target\" id=\"index-4\"></span><a class=\"pep reference external\" href=\"https://peps.python.org/pep-0448/\"><strong>PEP 448</strong></a>,\nsuch as merging mappings (<code class=\"docutils literal notranslate\">{**x, **y}</code>) or sequences (<code class=\"docutils literal notranslate\">[*a, *b]</code>). This\nimproves performance, readability, and maintainability while reducing errors.</p></li>\n</ul>\n</section>\n<section id=\"imports\">\n<span id=\"coding-style-imports\"></span><h2>Impor<a class=\"heading-anchor\" href=\"#imports\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<ul>\n<li><p>Gunakan <a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/isort/\">isort</a> untuk mengotomatisasi pengurutan impor menggunakan panduan dibawah.</p>\n<p>Mulai cepat:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-1-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</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=\"Shell code\"><code><span class=\"gp\">$ </span>python -m pip install <span class=\"s2\">&quot;isort &gt;= 7.0.0&quot;</span>\n<span class=\"gp\">$ </span>isort .\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-1-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</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=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> py -m pip install <span class=\"s2\">&quot;isort &gt;= 7.0.0&quot;</span>\n<span class=\"gp\">...\\&gt;</span> isort .\n</code></pre></div></div></div>\n<p>Ini menjalankan <code class=\"docutils literal notranslate\">isort</code> secara berulang dari pelipat anda saat ini, merubah berkas apapun yang tidak sesuai pada baris panduan. Jika anda butuh mengimpor rusak (untuk menghidari impor memutar, sebagai contoh) gunakan komentar seperti ini:</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\">module</span>  <span class=\"c1\"># isort:skip</span>\n</code></pre></div>\n</li>\n<li><p>Put imports in these groups: future, standard library, third-party libraries,\nother Django components, local Django component, try/excepts. Sort lines in\neach group alphabetically by the full module name. Place all\n<code class=\"docutils literal notranslate\">import module</code> statements before <code class=\"docutils literal notranslate\">from module import objects</code> in each\nsection. Use absolute imports for other Django components and a one-dot\nrelative import (<code class=\"docutils literal notranslate\">from .foo import Bar</code>) for local components. Avoid\nmulti-dot relative imports.</p></li>\n<li><p>Pada setiap baris, mengabjadkan barang dengan barang huruf besar dikelompokkan sebelum barang huruf kecil.</p></li>\n<li><p>Putuskan baris panjang menggunakan kurung dan lekukan garis kelanjutan dengan 4 ruang. Termasuk koma yang membuntuti setelah impor terakhir dan taruh kurung penutup pada baris itu sendiri.</p>\n<p>Gunakan baris kosong tunggal diantara impor terakhir dan tiap modul kode tingkatan, dan gunakan dua baris kosong diatas fungsi atau kelas pertama.</p>\n<p>Sebagai contoh (komentar hanya untuk tujuan penjelasan):</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\">django/contrib/admin/example.py</code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</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=\"Python code\"><code><span class=\"c1\"># future</span>\n<span class=\"kn\">from</span> <span class=\"nn\">__future__</span> <span class=\"kn\">import</span> annotations\n\n<span class=\"c1\"># standard library</span>\n<span class=\"kn\">import</span> <span class=\"nn\">json</span>\n<span class=\"kn\">from</span> <span class=\"nn\">itertools</span> <span class=\"kn\">import</span> chain\n\n<span class=\"c1\"># third-party</span>\n<span class=\"kn\">import</span> <span class=\"nn\">bcrypt</span>\n\n<span class=\"c1\"># Django</span>\n<span class=\"kn\">from</span> <span class=\"nn\">django.http</span> <span class=\"kn\">import</span> Http404\n<span class=\"kn\">from</span> <span class=\"nn\">django.http.response</span> <span class=\"kn\">import</span> <span class=\"p\">(</span>\n    Http404<span class=\"p\">,</span>\n    HttpResponse<span class=\"p\">,</span>\n    HttpResponseNotAllowed<span class=\"p\">,</span>\n    StreamingHttpResponse<span class=\"p\">,</span>\n    cookie<span class=\"p\">,</span>\n<span class=\"p\">)</span>\n\n<span class=\"c1\"># local Django</span>\n<span class=\"kn\">from</span> <span class=\"nn\">.models</span> <span class=\"kn\">import</span> LogEntry\n\n<span class=\"c1\"># try/except</span>\n<span class=\"k\">try</span><span class=\"p\">:</span>\n    <span class=\"kn\">import</span> <span class=\"nn\">yaml</span>\n<span class=\"k\">except</span> <span class=\"ne\">ImportError</span><span class=\"p\">:</span>\n    yaml <span class=\"o\">=</span> <span class=\"kc\">None</span>\n\nCONSTANT <span class=\"o\">=</span> <span class=\"s2\">&quot;foo&quot;</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Example</span><span class=\"p\">:</span> <span class=\"o\">...</span>\n</code></pre></figure>\n</li>\n<li><p>Gunakan impor praktis kapan pun tersedia. Misalnya, lakukan ini</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\">django.views</span> <span class=\"kn\">import</span> View\n</code></pre></div>\n<p>dari pada:</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\">django.views.generic.base</span> <span class=\"kn\">import</span> View\n</code></pre></div>\n</li>\n</ul>\n</section>\n<section id=\"template-style\">\n<h2>Gaya cetakan<a class=\"heading-anchor\" href=\"#template-style\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Ikuti aturan dibawah ini dalam kode cetakan Django.</p>\n<ul>\n<li><p><code class=\"docutils literal notranslate\">{% extends %}</code> harus menjadi baris non-komentar pertama.</p>\n<p>Lakukan ini:</p>\n<div class=\"code-block\" data-language=\"html+django\"><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;base.html&quot;</span> <span class=\"cp\">%}</span>\n\n<span class=\"cp\">{%</span> <span class=\"k\">block</span> <span class=\"nv\">content</span> <span class=\"cp\">%}</span>\n  <span class=\"p\">&lt;</span><span class=\"nt\">h1</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;font-semibold text-xl&quot;</span><span class=\"p\">&gt;</span>\n    <span class=\"cp\">{{</span> <span class=\"nv\">pages.title</span> <span class=\"cp\">}}</span>\n  <span class=\"p\">&lt;/</span><span class=\"nt\">h1</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endblock</span> <span class=\"nv\">content</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Atau ini:</p>\n<div class=\"code-block\" data-language=\"html+django\"><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=\"c\">{# This is a comment #}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">extends</span> <span class=\"s2\">&quot;base.html&quot;</span> <span class=\"cp\">%}</span>\n\n<span class=\"cp\">{%</span> <span class=\"k\">block</span> <span class=\"nv\">content</span> <span class=\"cp\">%}</span>\n  <span class=\"p\">&lt;</span><span class=\"nt\">h1</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;font-semibold text-xl&quot;</span><span class=\"p\">&gt;</span>\n    <span class=\"cp\">{{</span> <span class=\"nv\">pages.title</span> <span class=\"cp\">}}</span>\n  <span class=\"p\">&lt;/</span><span class=\"nt\">h1</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endblock</span> <span class=\"nv\">content</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Jangan lakukan ini:</p>\n<div class=\"code-block\" data-language=\"html+django\"><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\">load</span> <span class=\"nv\">i18n</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">extends</span> <span class=\"s2\">&quot;base.html&quot;</span> <span class=\"cp\">%}</span>\n\n<span class=\"cp\">{%</span> <span class=\"k\">block</span> <span class=\"nv\">content</span> <span class=\"cp\">%}</span>\n  <span class=\"p\">&lt;</span><span class=\"nt\">h1</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;font-semibold text-xl&quot;</span><span class=\"p\">&gt;</span>\n    <span class=\"cp\">{{</span> <span class=\"nv\">pages.title</span> <span class=\"cp\">}}</span>\n  <span class=\"p\">&lt;/</span><span class=\"nt\">h1</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endblock</span> <span class=\"nv\">content</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</li>\n<li><p>Taruh tepatnya satu ruang diantara <code class=\"docutils literal notranslate\">{{</code>, konteks variabel, dan <code class=\"docutils literal notranslate\">}}</code>.</p>\n<p>Lakukan ini:</p>\n<div class=\"code-block\" data-language=\"html+django\"><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=\"nv\">user</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Jangan lakukan ini:</p>\n<div class=\"code-block\" data-language=\"html+django\"><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=\"nv\">user</span><span class=\"cp\">}}</span>\n</code></pre></div>\n</li>\n<li><p>Di <code class=\"docutils literal notranslate\">{% muat ... %}</code>, daftar pustaka dalam urutan alfabet.</p>\n<p>Lakukan ini:</p>\n<div class=\"code-block\" data-language=\"html+django\"><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\">load</span> <span class=\"nv\">i18n</span> <span class=\"nv\">l10</span> <span class=\"nv\">tz</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Jangan lakukan ini:</p>\n<div class=\"code-block\" data-language=\"html+django\"><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\">load</span> <span class=\"nv\">l10</span> <span class=\"nv\">i18n</span> <span class=\"nv\">tz</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</li>\n<li><p>Put exactly one space between <code class=\"docutils literal notranslate\">{%</code>, tag contents, and <code class=\"docutils literal notranslate\">%}</code>.</p>\n<p>Lakukan ini:</p>\n<div class=\"code-block\" data-language=\"html+django\"><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\">load</span> <span class=\"nv\">humanize</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Jangan lakukan ini:</p>\n<div class=\"code-block\" data-language=\"html+django\"><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\">load</span> <span class=\"nv\">humanize</span><span class=\"cp\">%}</span>\n</code></pre></div>\n</li>\n<li><p>Put the <code class=\"docutils literal notranslate\">{% block %}</code> tag name in the <code class=\"docutils literal notranslate\">{% endblock %}</code> tag if it is not\non the same line.</p>\n<p>Lakukan ini:</p>\n<div class=\"code-block\" data-language=\"html+django\"><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\">block</span> <span class=\"nv\">header</span> <span class=\"cp\">%}</span>\n\n  Code goes here\n\n<span class=\"cp\">{%</span> <span class=\"k\">endblock</span> <span class=\"nv\">header</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Jangan lakukan ini:</p>\n<div class=\"code-block\" data-language=\"html+django\"><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\">block</span> <span class=\"nv\">header</span> <span class=\"cp\">%}</span>\n\n  Code goes here\n\n<span class=\"cp\">{%</span> <span class=\"k\">endblock</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</li>\n<li><p>Inside curly braces, separate tokens by single spaces, except for around the\n<code class=\"docutils literal notranslate\">.</code> for attribute access and the <code class=\"docutils literal notranslate\">|</code> for a filter.</p>\n<p>Lakukan ini:</p>\n<div class=\"code-block\" data-language=\"html+django\"><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\">if</span> <span class=\"nv\">user.name</span><span class=\"o\">|</span><span class=\"nf\">lower</span> <span class=\"o\">==</span> <span class=\"s2\">&quot;admin&quot;</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Jangan lakukan ini:</p>\n<div class=\"code-block\" data-language=\"html+django\"><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\">if</span> <span class=\"nv\">user</span> <span class=\"p\">.</span> <span class=\"nv\">name</span> <span class=\"o\">|</span> <span class=\"nf\">lower</span>  <span class=\"o\">==</span>  <span class=\"s2\">&quot;admin&quot;</span> <span class=\"cp\">%}</span>\n\n<span class=\"cp\">{{</span> <span class=\"nv\">user.name</span> <span class=\"o\">|</span> <span class=\"nf\">upper</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n</li>\n<li><p>Within a template using <code class=\"docutils literal notranslate\">{% extends %}</code>, avoid indenting top-level\n<code class=\"docutils literal notranslate\">{% block %}</code> tags.</p>\n<p>Lakukan ini:</p>\n<div class=\"code-block\" data-language=\"html+django\"><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;base.html&quot;</span> <span class=\"cp\">%}</span>\n\n<span class=\"cp\">{%</span> <span class=\"k\">block</span> <span class=\"nv\">content</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Jangan lakukan ini:</p>\n<div class=\"code-block\" data-language=\"html+django\"><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;base.html&quot;</span> <span class=\"cp\">%}</span>\n\n  <span class=\"cp\">{%</span> <span class=\"k\">block</span> <span class=\"nv\">content</span> <span class=\"cp\">%}</span>\n  ...\n</code></pre></div>\n</li>\n</ul>\n</section>\n<section id=\"view-style\">\n<h2>Gaya tampilan<a class=\"heading-anchor\" href=\"#view-style\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<ul>\n<li><p>Dalam tampilan Django, parameter pertama dalam sebuah fungsi tampilan harus dipanggil <code class=\"docutils literal notranslate\">request</code>.</p>\n<p>Lakukan ini:</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=\"nf\">my_view</span><span class=\"p\">(</span>request<span class=\"p\">,</span> foo<span class=\"p\">):</span> <span class=\"o\">...</span>\n</code></pre></div>\n<p>Jangan lakukan ini:</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=\"nf\">my_view</span><span class=\"p\">(</span>req<span class=\"p\">,</span> foo<span class=\"p\">):</span> <span class=\"o\">...</span>\n</code></pre></div>\n</li>\n</ul>\n</section>\n<section id=\"model-style\">\n<h2>Gaya model<a class=\"heading-anchor\" href=\"#model-style\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<ul>\n<li><p>Nama-nama bidang harus semuanya huruf kecil, menggunakan garis bawah daripada camelCase.</p>\n<p>Lakukan ini:</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\">class</span> <span class=\"nc\">Person</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    first_name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">20</span><span class=\"p\">)</span>\n    last_name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">40</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Jangan lakukan ini:</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\">class</span> <span class=\"nc\">Person</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    FirstName <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">20</span><span class=\"p\">)</span>\n    Last_Name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">40</span><span class=\"p\">)</span>\n</code></pre></div>\n</li>\n<li><p><code class=\"docutils literal notranslate\">class Meta</code> harus muncul <em>setelah</em> bidang ditentukan, dengan baris tunggal kosong memisahkan penentuan bidang-bidang dan kelas</p>\n<p>Lakukan ini:</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\">class</span> <span class=\"nc\">Person</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    first_name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">20</span><span class=\"p\">)</span>\n    last_name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">40</span><span class=\"p\">)</span>\n\n    <span class=\"k\">class</span> <span class=\"nc\">Meta</span><span class=\"p\">:</span>\n        verbose_name_plural <span class=\"o\">=</span> <span class=\"s2\">&quot;people&quot;</span>\n</code></pre></div>\n<p>Jangan lakukan ini:</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\">class</span> <span class=\"nc\">Person</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    <span class=\"k\">class</span> <span class=\"nc\">Meta</span><span class=\"p\">:</span>\n        verbose_name_plural <span class=\"o\">=</span> <span class=\"s2\">&quot;people&quot;</span>\n\n    first_name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">20</span><span class=\"p\">)</span>\n    last_name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">40</span><span class=\"p\">)</span>\n</code></pre></div>\n</li>\n<li><p>Urutan model kelas-kelas sebelah dalam dan cara standar harus sebagai berikut (catat bahwa ini tidak wajib):</p>\n<ul class=\"simple\">\n<li><p>Semua bidang basisdata</p></li>\n<li><p>Penyesuaian pengelolaan atribut</p></li>\n<li><p><code class=\"docutils literal notranslate\">class Meta</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">def __str__()</code> dan metode ajaib Python lainnya</p></li>\n<li><p><code class=\"docutils literal notranslate\">def save()</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">def get_absolute_url()</code></p></li>\n<li><p>Cara penyesuaian apapun</p></li>\n</ul>\n</li>\n<li><p>If <code class=\"docutils literal notranslate\">choices</code> is defined for a given model field, define each choice as a\nmapping, with an all-uppercase name as a class attribute on the model.\nExample:</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\">class</span> <span class=\"nc\">MyModel</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    DIRECTION_UP <span class=\"o\">=</span> <span class=\"s2\">&quot;U&quot;</span>\n    DIRECTION_DOWN <span class=\"o\">=</span> <span class=\"s2\">&quot;D&quot;</span>\n    DIRECTION_CHOICES <span class=\"o\">=</span> <span class=\"p\">{</span>\n        DIRECTION_UP<span class=\"p\">:</span> <span class=\"s2\">&quot;Up&quot;</span><span class=\"p\">,</span>\n        DIRECTION_DOWN<span class=\"p\">:</span> <span class=\"s2\">&quot;Down&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">}</span>\n</code></pre></div>\n<p>Alternatifnya, pertimbangkan menggunakan <a class=\"reference internal\" href=\"/id/6.1/ref/models/fields/#field-choices-enum-types\"><span class=\"std std-ref\">Enumeration types</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=\"k\">class</span> <span class=\"nc\">MyModel</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    <span class=\"k\">class</span> <span class=\"nc\">Direction</span><span class=\"p\">(</span>models<span class=\"o\">.</span>TextChoices<span class=\"p\">):</span>\n        UP <span class=\"o\">=</span> <span class=\"s2\">&quot;U&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Up&quot;</span>\n        DOWN <span class=\"o\">=</span> <span class=\"s2\">&quot;D&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Down&quot;</span>\n</code></pre></div>\n</li>\n</ul>\n</section>\n<section id=\"use-of-django-conf-settings\">\n<h2>Penggunaan <code class=\"docutils literal notranslate\">django.conf.settings</code><a class=\"heading-anchor\" href=\"#use-of-django-conf-settings\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Modul-modul tidak harus dalam pengaturan penggunaan umum di <code class=\"docutils literal notranslate\">django.conf.settings</code> pada tingkatan atas (yaitu dinilai ketika modul diimpor). Penjelasan untuk ini adalah sebagai berikut:</p>\n<p>Manual configuration of settings (i.e. not relying on the\n<span class=\"target\" id=\"index-5\"></span><a class=\"reference internal\" href=\"/id/6.1/topics/settings/#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\">DJANGO_SETTINGS_MODULE</code></a> environment variable) is allowed and possible\nas follows:</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\">django.conf</span> <span class=\"kn\">import</span> settings\n\nsettings<span class=\"o\">.</span>configure<span class=\"p\">({},</span> SOME_SETTING<span class=\"o\">=</span><span class=\"s2\">&quot;foo&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Bagaimanapun, jika tiap pengaturan diakses sebelum baris <code class=\"docutils literal notranslate\">settings.configure</code>, ini tidak akan bekerja (Secara internal, <code class=\"docutils literal notranslate\">settings</code> adalah <code class=\"docutils literal notranslate\">LazyObject</code> yang mengkonfigurasikan diri dia sendiri otomatis ketika pengaturan diakses jika dia belum dikonfigurasikan).</p>\n<p>Jadi, jika terdapat modul mengandung beberapa kode sebagai berikut:</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\">django.conf</span> <span class=\"kn\">import</span> settings\n<span class=\"kn\">from</span> <span class=\"nn\">django.urls</span> <span class=\"kn\">import</span> get_callable\n\ndefault_foo_view <span class=\"o\">=</span> get_callable<span class=\"p\">(</span>settings<span class=\"o\">.</span>FOO_VIEW<span class=\"p\">)</span>\n</code></pre></div>\n<p>...kemudian mengimpor modul ini akan menyebabkan pengaturan obyek untuk dikonfigurasi. Itu berarti bahwa kemampuan untuk pihak ketiga mengimpor modul pada tingkat atas tidak sesuai dengan kemampuan mengkonfigurasi pengaturan obyek secara manual, atau membuatnya sulit di beberapa keadaan.</p>\n<p>Sebagai gantinya kode diatas, tingkatan kemalasan atau tipuan harus digunakan, seperti <code class=\"docutils literal notranslate\">django.utils.functional.LazyObject</code>, <code class=\"docutils literal notranslate\">django.utils.functional.lazy()</code> atau <code class=\"docutils literal notranslate\">lambda</code>.</p>\n</section>\n<section id=\"miscellaneous\">\n<h2>Bermacam-macam<a class=\"heading-anchor\" href=\"#miscellaneous\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<ul class=\"simple\">\n<li><p>Tandai semua deretan karakter untuk internasionalisasi; lihat <a class=\"reference internal\" href=\"/id/6.1/topics/i18n/\"><span class=\"doc\">i18n documentation</span></a> untuk rincian.</p></li>\n<li><p>Remove <code class=\"docutils literal notranslate\">import</code> statements that are no longer used when you change code.\n<a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/flake8/\">flake8</a> will identify these imports for you. If an unused import needs\nto remain for backwards-compatibility, mark the end of with <code class=\"docutils literal notranslate\"># NOQA</code> to\nsilence the flake8 warning.</p></li>\n<li><p>Secara teratur pindahkan semua ruang kosong dari kode anda dimana mereka menambahkan byte yang tidak dibutuhkan, tambah kekacauan penglihatan pada tambalan dan juga terkadang menyebabkan pertentangan penggabungan yang tidak diperlukan. Beberapa IDE dapat dikonfigurasikan otomatis memindahkan mereka dan kebanyakan alat-alat VCS dapat di setel untuk menyorot mereka di keluaran berbeda.</p></li>\n<li><p>Harap jangan menaruh nama anda di kode anda sumbangkan. Kebijakan kami adalah menjaga nama-nama penyumbang di berkas <code class=\"docutils literal notranslate\">AUTHORS</code> disalurkan dengan Django -- bukan goresan melalui basis kode itu sendiri. Merasa bebas untuk menyertakan perubahan pada berkas <code class=\"docutils literal notranslate\">AUTHORS</code> di tambalan anda jika anda membuat lebih dari perubahan sepele tunggal.</p></li>\n</ul>\n</section>\n<section id=\"javascript-style\">\n<h2>Gaya JavaScript<a class=\"heading-anchor\" href=\"#javascript-style\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>For details about the JavaScript code style used by Django, see\n<a class=\"reference internal\" href=\"/id/6.1/internals/contributing/writing-code/javascript/\"><span class=\"doc\">Kode JavaScript</span></a>.</p>\n</section>","rootId":"coding-style","toc":[{"title":"Pemeriksaan pra-komitmen","anchor":"pre-commit-checks","children":[]},{"title":"Gaya Phyton","anchor":"python-style","children":[]},{"title":"Impor","anchor":"imports","children":[]},{"title":"Gaya cetakan","anchor":"template-style","children":[]},{"title":"Gaya tampilan","anchor":"view-style","children":[]},{"title":"Gaya model","anchor":"model-style","children":[]},{"title":"Penggunaan django.conf.settings","anchor":"use-of-django-conf-settings","children":[]},{"title":"Bermacam-macam","anchor":"miscellaneous","children":[]},{"title":"Gaya JavaScript","anchor":"javascript-style","children":[]}],"breadcrumbs":[{"docname":"internals/index","title":"Dalam Django","url":"/id/6.1/internals/"},{"docname":"internals/contributing/index","title":"Membantu untuk Django","url":"/id/6.1/internals/contributing/"},{"docname":"internals/contributing/writing-code/index","title":"Kode bantuan","url":"/id/6.1/internals/contributing/writing-code/"}],"prev":{"docname":"internals/contributing/writing-code/working-with-git","title":"Bekerja dengan Git dan GitHub","url":"/id/6.1/internals/contributing/writing-code/working-with-git/"},"next":{"docname":"internals/contributing/writing-code/javascript","title":"Kode JavaScript","url":"/id/6.1/internals/contributing/writing-code/javascript/"},"formats":{"html":"/id/6.1/internals/contributing/writing-code/coding-style/","markdown":"/id/6.1/internals/contributing/writing-code/coding-style.md","json":"/id/6.1/internals/contributing/writing-code/coding-style.json"},"source":"https://github.com/django/django/blob/stable/6.1.x/docs/internals/contributing/writing-code/coding-style.txt","official":"https://docs.djangoproject.com/id/6.1/internals/contributing/writing-code/coding-style/","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","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}