{"title":"Django sekilas","version":"2.0","locale":"id","docname":"intro/overview","url":"/id/2.0/intro/overview/","canonical":"https://djangodocs.dev/id/2.0/intro/overview/","summary":"Karena Django dikembangkan dalam lingkungan cepat, dia telah dirancang untuk membuat tugas Pengembangan-jaringan umum cepat dan mudah. Ini adalah sebuah ikhstisar…","html":"<h1>Django sekilas<a class=\"heading-anchor\" href=\"#django-at-a-glance\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Karena Django dikembangkan dalam lingkungan cepat, dia telah dirancang untuk membuat tugas Pengembangan-jaringan umum cepat dan mudah. Ini adalah sebuah ikhstisar tidak resmi dari bagaimana menulis aplikasi Jaringan basisdata dengan Django.</p>\n<p>Tujuan dari dokumen ini adalah memberikan anda spesifik teknik yang cukup untuk memahami bagaimana Django bekerja, tetapi ini tidak diperuntukkan menjadi tutorial atau acuan -- tetapi kami telah mendapatkan keduanya! Ketika anda siap memulai proyek, anda dapat:doc:start with the tutorial &lt;/intro/tutorial01&gt; atau <a class=\"reference internal\" href=\"/id/2.0/topics/\"><span class=\"doc\">dive right into more detailed documentation</span></a>.</p>\n<section id=\"design-your-model\">\n<h2>Rancang model anda<a class=\"heading-anchor\" href=\"#design-your-model\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Meskipun anda dapat menggunakan Django tanpa basisdata, dia datang dengan <a class=\"reference external\" href=\"https://en.wikipedia.org/wiki/Object-relational_mapping\">object-relational mapper</a> dimana anda menggambarkan tata letak basisdata anda di kode Phyton.</p>\n<p><a class=\"reference internal\" href=\"/id/2.0/topics/db/models/\"><span class=\"doc\">data-model syntax</span></a> menawarkan banyak jalan kaya dari mewakilkan model anda -- sejauh ini, dia telah menyelesaikan banyak tahun berharga dari masalah skema-basisdata. Ini adalah contoh cepat:</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"default\"><figcaption class=\"code-block-caption\"><code>mysite/news/models.py</code></figcaption><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=\"mysite/news/models.py\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Reporter</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">full_name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">70</span><span class=\"p\">)</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__str__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">full_name</span>\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Article</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">pub_date</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">DateField</span><span class=\"p\">()</span>\n    <span class=\"n\">headline</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">200</span><span class=\"p\">)</span>\n    <span class=\"n\">content</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">TextField</span><span class=\"p\">()</span>\n    <span class=\"n\">reporter</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">ForeignKey</span><span class=\"p\">(</span><span class=\"n\">Reporter</span><span class=\"p\">,</span> <span class=\"n\">on_delete</span><span class=\"o\">=</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CASCADE</span><span class=\"p\">)</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__str__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">headline</span>\n</code></pre></figure>\n</section>\n<section id=\"install-it\">\n<h2>Pasang dia<a class=\"heading-anchor\" href=\"#install-it\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Selanjutnya, jalankan kegunaan baris-perintah Django untuk membuat tabel basisdata otomatis:</p>\n<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<span class=\"w\"> </span>manage.py<span class=\"w\"> </span>migrate\n</code></pre></div>\n<p>Perintah <a class=\"reference internal\" href=\"/id/2.0/ref/django-admin/#django-admin-migrate\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">migrate</span></code></a> mencari semua model tersedia anda dan membuat tabel di basisdata anda untuk tabel manapun yang tidak ada, serta pilihan menyediakan <a class=\"reference internal\" href=\"/id/2.0/topics/migrations/\"><span class=\"doc\">lebih kaya kendali skema</span></a>.</p>\n</section>\n<section id=\"enjoy-the-free-api\">\n<h2>Nikmati API bebas<a class=\"heading-anchor\" href=\"#enjoy-the-free-api\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Dengan itu, anda telah mendapatkan bebas, dan kaya, <a class=\"reference internal\" href=\"/id/2.0/topics/db/queries/\"><span class=\"doc\">API Python</span></a> untuk mengakses data anda. API dibuat dengan cepat, tidak ada pembangkitan kode yang dibutuhkan:</p>\n<div class=\"code-block\" data-language=\"python\"><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\"># Import the models we created from our &quot;news&quot; app</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">news.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Article</span><span class=\"p\">,</span> <span class=\"n\">Reporter</span>\n\n<span class=\"c1\"># No reporters are in the system yet.</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">Reporter</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">all</span><span class=\"p\">()</span>\n<span class=\"o\">&lt;</span><span class=\"n\">QuerySet</span> <span class=\"p\">[]</span><span class=\"o\">&gt;</span>\n\n<span class=\"c1\"># Create a new Reporter.</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">r</span> <span class=\"o\">=</span> <span class=\"n\">Reporter</span><span class=\"p\">(</span><span class=\"n\">full_name</span><span class=\"o\">=</span><span class=\"s1\">&#39;John Smith&#39;</span><span class=\"p\">)</span>\n\n<span class=\"c1\"># Save the object into the database. You have to call save() explicitly.</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">r</span><span class=\"o\">.</span><span class=\"n\">save</span><span class=\"p\">()</span>\n\n<span class=\"c1\"># Now it has an ID.</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">r</span><span class=\"o\">.</span><span class=\"n\">id</span>\n<span class=\"mi\">1</span>\n\n<span class=\"c1\"># Now the new reporter is in the database.</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">Reporter</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">all</span><span class=\"p\">()</span>\n<span class=\"o\">&lt;</span><span class=\"n\">QuerySet</span> <span class=\"p\">[</span><span class=\"o\">&lt;</span><span class=\"n\">Reporter</span><span class=\"p\">:</span> <span class=\"n\">John</span> <span class=\"n\">Smith</span><span class=\"o\">&gt;</span><span class=\"p\">]</span><span class=\"o\">&gt;</span>\n\n<span class=\"c1\"># Fields are represented as attributes on the Python object.</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">r</span><span class=\"o\">.</span><span class=\"n\">full_name</span>\n<span class=\"s1\">&#39;John Smith&#39;</span>\n\n<span class=\"c1\"># Django provides a rich database lookup API.</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">Reporter</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"o\">&lt;</span><span class=\"n\">Reporter</span><span class=\"p\">:</span> <span class=\"n\">John</span> <span class=\"n\">Smith</span><span class=\"o\">&gt;</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">Reporter</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"n\">full_name__startswith</span><span class=\"o\">=</span><span class=\"s1\">&#39;John&#39;</span><span class=\"p\">)</span>\n<span class=\"o\">&lt;</span><span class=\"n\">Reporter</span><span class=\"p\">:</span> <span class=\"n\">John</span> <span class=\"n\">Smith</span><span class=\"o\">&gt;</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">Reporter</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"n\">full_name__contains</span><span class=\"o\">=</span><span class=\"s1\">&#39;mith&#39;</span><span class=\"p\">)</span>\n<span class=\"o\">&lt;</span><span class=\"n\">Reporter</span><span class=\"p\">:</span> <span class=\"n\">John</span> <span class=\"n\">Smith</span><span class=\"o\">&gt;</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">Reporter</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"n\">Traceback</span> <span class=\"p\">(</span><span class=\"n\">most</span> <span class=\"n\">recent</span> <span class=\"n\">call</span> <span class=\"n\">last</span><span class=\"p\">):</span>\n    <span class=\"o\">...</span>\n<span class=\"n\">DoesNotExist</span><span class=\"p\">:</span> <span class=\"n\">Reporter</span> <span class=\"n\">matching</span> <span class=\"n\">query</span> <span class=\"n\">does</span> <span class=\"ow\">not</span> <span class=\"n\">exist</span><span class=\"o\">.</span>\n\n<span class=\"c1\"># Create an article.</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">datetime</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">date</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">a</span> <span class=\"o\">=</span> <span class=\"n\">Article</span><span class=\"p\">(</span><span class=\"n\">pub_date</span><span class=\"o\">=</span><span class=\"n\">date</span><span class=\"o\">.</span><span class=\"n\">today</span><span class=\"p\">(),</span> <span class=\"n\">headline</span><span class=\"o\">=</span><span class=\"s1\">&#39;Django is cool&#39;</span><span class=\"p\">,</span>\n<span class=\"o\">...</span>     <span class=\"n\">content</span><span class=\"o\">=</span><span class=\"s1\">&#39;Yeah.&#39;</span><span class=\"p\">,</span> <span class=\"n\">reporter</span><span class=\"o\">=</span><span class=\"n\">r</span><span class=\"p\">)</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">a</span><span class=\"o\">.</span><span class=\"n\">save</span><span class=\"p\">()</span>\n\n<span class=\"c1\"># Now the article is in the database.</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">Article</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">all</span><span class=\"p\">()</span>\n<span class=\"o\">&lt;</span><span class=\"n\">QuerySet</span> <span class=\"p\">[</span><span class=\"o\">&lt;</span><span class=\"n\">Article</span><span class=\"p\">:</span> <span class=\"n\">Django</span> <span class=\"ow\">is</span> <span class=\"n\">cool</span><span class=\"o\">&gt;</span><span class=\"p\">]</span><span class=\"o\">&gt;</span>\n\n<span class=\"c1\"># Article objects get API access to related Reporter objects.</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">r</span> <span class=\"o\">=</span> <span class=\"n\">a</span><span class=\"o\">.</span><span class=\"n\">reporter</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">r</span><span class=\"o\">.</span><span class=\"n\">full_name</span>\n<span class=\"s1\">&#39;John Smith&#39;</span>\n\n<span class=\"c1\"># And vice versa: Reporter objects get API access to Article objects.</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">r</span><span class=\"o\">.</span><span class=\"n\">article_set</span><span class=\"o\">.</span><span class=\"n\">all</span><span class=\"p\">()</span>\n<span class=\"o\">&lt;</span><span class=\"n\">QuerySet</span> <span class=\"p\">[</span><span class=\"o\">&lt;</span><span class=\"n\">Article</span><span class=\"p\">:</span> <span class=\"n\">Django</span> <span class=\"ow\">is</span> <span class=\"n\">cool</span><span class=\"o\">&gt;</span><span class=\"p\">]</span><span class=\"o\">&gt;</span>\n\n<span class=\"c1\"># The API follows relationships as far as you need, performing efficient</span>\n<span class=\"c1\"># JOINs for you behind the scenes.</span>\n<span class=\"c1\"># This finds all articles by a reporter whose name starts with &quot;John&quot;.</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">Article</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">reporter__full_name__startswith</span><span class=\"o\">=</span><span class=\"s1\">&#39;John&#39;</span><span class=\"p\">)</span>\n<span class=\"o\">&lt;</span><span class=\"n\">QuerySet</span> <span class=\"p\">[</span><span class=\"o\">&lt;</span><span class=\"n\">Article</span><span class=\"p\">:</span> <span class=\"n\">Django</span> <span class=\"ow\">is</span> <span class=\"n\">cool</span><span class=\"o\">&gt;</span><span class=\"p\">]</span><span class=\"o\">&gt;</span>\n\n<span class=\"c1\"># Change an object by altering its attributes and calling save().</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">r</span><span class=\"o\">.</span><span class=\"n\">full_name</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;Billy Goat&#39;</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">r</span><span class=\"o\">.</span><span class=\"n\">save</span><span class=\"p\">()</span>\n\n<span class=\"c1\"># Delete an object with delete().</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">r</span><span class=\"o\">.</span><span class=\"n\">delete</span><span class=\"p\">()</span>\n</code></pre></div>\n</section>\n<section id=\"a-dynamic-admin-interface-it-s-not-just-scaffolding-it-s-the-whole-house\">\n<h2>Sebuah antarmuka admin dinamisL ini bukan hanya perancah -- ini adalah keseluruhan rumah<a class=\"heading-anchor\" href=\"#a-dynamic-admin-interface-it-s-not-just-scaffolding-it-s-the-whole-house\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Sekali model anda ditentukan, Django dapat otomatis membuat profesional, siap produksi <a class=\"reference internal\" href=\"/id/2.0/ref/contrib/admin/\"><span class=\"doc\">administrative interface</span></a> -- sebuah situs jaringan yang membiarkan pengguna dibuktikan menambah, merubah dan menghapus obyek. Dia semudah mendaftarkan model anda di situs admin:</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"default\"><figcaption class=\"code-block-caption\"><code>mysite/news/models.py</code></figcaption><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=\"mysite/news/models.py\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Article</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">pub_date</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">DateField</span><span class=\"p\">()</span>\n    <span class=\"n\">headline</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">200</span><span class=\"p\">)</span>\n    <span class=\"n\">content</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">TextField</span><span class=\"p\">()</span>\n    <span class=\"n\">reporter</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">ForeignKey</span><span class=\"p\">(</span><span class=\"n\">Reporter</span><span class=\"p\">,</span> <span class=\"n\">on_delete</span><span class=\"o\">=</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CASCADE</span><span class=\"p\">)</span>\n</code></pre></figure>\n<figure class=\"code-block code-block-captioned\" data-language=\"default\"><figcaption class=\"code-block-caption\"><code>mysite/news/admin.py</code></figcaption><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=\"mysite/news/admin.py\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">.</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n<span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">register</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Article</span><span class=\"p\">)</span>\n</code></pre></figure>\n<p>Filosofi disini adalah bahwa situs anda disunting oleh staf, atau klien, atau mungkin hanya anda -- dan anda tidak ingin mempunyai persetujuan dengan membuat antarmuka belakang hanya untuk mengelola isi.</p>\n<p>Satu alurkerja khas dalam membuat aplikasi Django adalah membuat model dan mendapatkan situs admin hidup dan berjalan secepat mungkin, jadi staf anda 9atau klien) dapat mulai mengumpulkan data. Lalu, mengembangkan jalur data dihadirkan ke umum.</p>\n</section>\n<section id=\"design-your-urls\">\n<h2>Rancang URL anda<a class=\"heading-anchor\" href=\"#design-your-urls\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Bersih, skema URL anggun adalah rincian penting dalam aplikasi Jaringan kualitas-tinggi. Django mendorong perancangan URL indah dan tidak menaruh sesuatu yang ada di URL, seperti <code class=\"docutils literal notranslate\"><span class=\"pre\">.php</span></code> or <code class=\"docutils literal notranslate\"><span class=\"pre\">.asp</span></code>.</p>\n<p>Untuk merancang URL untuk sebuah apliaksi, anda membuat modul Phyton disebut <a class=\"reference internal\" href=\"/id/2.0/topics/http/urls/\"><span class=\"doc\">URLconf</span></a>. Sebuah tabel isi untuk aplikasi anda, dia mengandung pemetaan sederhana diantara pola URL dan fungsi Phyton memanggil kembali. URLconf juga melayani untuk memisahkan URL dari kode Phyton.</p>\n<p>Ini adalah apa URLconf mungkin terlihat seperti untuk Reporter`/<code class=\"docutils literal notranslate\"><span class=\"pre\">Article</span></code> contoh diatas:</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"default\"><figcaption class=\"code-block-caption\"><code>mysite/news/urls.py</code></figcaption><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=\"mysite/news/urls.py\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">path</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">.</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">views</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;articles/&lt;int:year&gt;/&#39;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">year_archive</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;articles/&lt;int:year&gt;/&lt;int:month&gt;/&#39;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">month_archive</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;articles/&lt;int:year&gt;/&lt;int:month&gt;/&lt;int:pk&gt;/&#39;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">article_detail</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></figure>\n<p>Kode diatas memetakan jalur URL pada fungsi callback Python (&quot;views&quot;). String jalur menggunakan etiket parameter untuk &quot;menangkap&quot; nilai-nilai dari URL. Ketika seorang pengguna meminta sebuah halaman, Django menjalankan setiap jalur, dalam urutan, dan berhenti pada satu pertama uang cocok dengan URL diminta. (Jika tidak ada dari mereka cocok, Django memanggil tampilan kasus-khusus 404). Ini sangat cepat, karena jalur disusun kedalam reguler expression pada waktu muat.</p>\n<p>Ketika satu dari pola URL cocok, Django memanggil tampilan yang diberikan, yaitu sebuah fungsi Python. Setiap tampilan mendapatkan perlewatan sebuah permintaan obyek -- yang mengandung permintaan metadata -- dan nilai-nilai ditangkap dalam pola.</p>\n<p>Sebagai contoh, jika sebuah pengguna meminta URL &quot;/articles/2005/05/39323/&quot;, Django akan memanggil fungsi <code class=\"docutils literal notranslate\"><span class=\"pre\">news.views.article_detail(request,</span> <span class=\"pre\">year=2005,</span> <span class=\"pre\">month=5,</span> <span class=\"pre\">pk=39323)</span></code>.</p>\n</section>\n<section id=\"write-your-views\">\n<h2>Tulis tampilan anda<a class=\"heading-anchor\" href=\"#write-your-views\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Setiap tampilan bertanggung jawab untuk melalukan satu dari dua hal: Mengembalikan sebuah obyek <a class=\"reference internal\" href=\"/id/2.0/ref/request-response/#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> mengandung isi untuk halaman diminta, atau menerbitkan pengecualian seperti <a class=\"reference internal\" href=\"/id/2.0/topics/http/views/#django.http.Http404\" title=\"django.http.Http404\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Http404</span></code></a>. Sisanya terserah anda.</p>\n<p>Umumnya, tampilan mengambil data menurut parameter, memuat cetakan dan menjadikan cetakan dengan data terambil. Disini adalah sebuah contoh tampilan untuk <code class=\"docutils literal notranslate\"><span class=\"pre\">year_archive</span></code> dari atas:</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"default\"><figcaption class=\"code-block-caption\"><code>mysite/news/views.py</code></figcaption><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=\"mysite/news/views.py\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.shortcuts</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">render</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Article</span>\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">year_archive</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">year</span><span class=\"p\">):</span>\n    <span class=\"n\">a_list</span> <span class=\"o\">=</span> <span class=\"n\">Article</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">pub_date__year</span><span class=\"o\">=</span><span class=\"n\">year</span><span class=\"p\">)</span>\n    <span class=\"n\">context</span> <span class=\"o\">=</span> <span class=\"p\">{</span><span class=\"s1\">&#39;year&#39;</span><span class=\"p\">:</span> <span class=\"n\">year</span><span class=\"p\">,</span> <span class=\"s1\">&#39;article_list&#39;</span><span class=\"p\">:</span> <span class=\"n\">a_list</span><span class=\"p\">}</span>\n    <span class=\"k\">return</span> <span class=\"n\">render</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"s1\">&#39;news/year_archive.html&#39;</span><span class=\"p\">,</span> <span class=\"n\">context</span><span class=\"p\">)</span>\n</code></pre></figure>\n<p>Ini contoh menggunakan <a class=\"reference internal\" href=\"/id/2.0/topics/templates/\"><span class=\"doc\">template system</span></a> Django, yang mempunyai beberapa fitur kuat tetapi bekerja keras untuk tetap cukup sederhana untuk digunakan bagi bukan-programmer.</p>\n</section>\n<section id=\"design-your-templates\">\n<h2>Rancang cetakan anda<a class=\"heading-anchor\" href=\"#design-your-templates\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Kode diatas memuat cetakan <code class=\"docutils literal notranslate\"><span class=\"pre\">news/year_archive.html</span></code>.</p>\n<p>Django mempunyai sebuah cetakan jalur pencarian, yang mengizinkan anda mengecilkan kelebihan antara cetakan. Di pengaturan Django anda, anda menjelaskan daftar direktori untuk memeriksa untuk cetakan dengan <a class=\"reference internal\" href=\"/id/2.0/ref/settings/#std-setting-TEMPLATES-DIRS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DIRS</span></code></a>. Jika cetakan tidak ada di direktori pertama, dia memeriksa yang kedua, dan selanjutnya.</p>\n<p>Mari kita katakan cetakan <code class=\"docutils literal notranslate\"><span class=\"pre\">news/year_archive.html</span></code> telah ditemukan. Disini apa yang mungkin terlihat seperti:</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"html+django\"><figcaption class=\"code-block-caption\"><code>mysite/news/templates/news/year_archive.html</code></figcaption><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=\"mysite/news/templates/news/year_archive.html\"><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\">title</span> <span class=\"cp\">%}</span>Articles for <span class=\"cp\">{{</span> <span class=\"nv\">year</span> <span class=\"cp\">}}{%</span> <span class=\"k\">endblock</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=\"p\">&gt;</span>Articles for <span class=\"cp\">{{</span> <span class=\"nv\">year</span> <span class=\"cp\">}}</span><span class=\"p\">&lt;/</span><span class=\"nt\">h1</span><span class=\"p\">&gt;</span>\n\n<span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">article</span> <span class=\"k\">in</span> <span class=\"nv\">article_list</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">p</span><span class=\"p\">&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">article.headline</span> <span class=\"cp\">}}</span><span class=\"p\">&lt;/</span><span class=\"nt\">p</span><span class=\"p\">&gt;</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">p</span><span class=\"p\">&gt;</span>By <span class=\"cp\">{{</span> <span class=\"nv\">article.reporter.full_name</span> <span class=\"cp\">}}</span><span class=\"p\">&lt;/</span><span class=\"nt\">p</span><span class=\"p\">&gt;</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">p</span><span class=\"p\">&gt;</span>Published <span class=\"cp\">{{</span> <span class=\"nv\">article.pub_date</span><span class=\"o\">|</span><span class=\"nf\">date</span><span class=\"s2\">:&quot;F j, Y&quot;</span> <span class=\"cp\">}}</span><span class=\"p\">&lt;/</span><span class=\"nt\">p</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endblock</span> <span class=\"cp\">%}</span>\n</code></pre></figure>\n<p>Variabel dikelilingi oleh kurung kurawal ganda. <code class=\"docutils literal notranslate\"><span class=\"pre\">{{</span> <span class=\"pre\">article.headline</span> <span class=\"pre\">}}</span></code> berarti &quot;Nilai keluaran dari atribut kepala berita artikel.&quot; Tetapi titik tidak digunakan hanya untuk mencari atribut. Mereka juga dapat melakukan mencari kuncu-kamus, mencari index dan pemanggilan fungsi.</p>\n<p>Catat <code class=\"docutils literal notranslate\"><span class=\"pre\">{{</span> <span class=\"pre\">article.pub_date|date:&quot;F</span> <span class=\"pre\">j,</span> <span class=\"pre\">Y&quot;</span> <span class=\"pre\">}}</span></code> menggunakan gaya-Unix &quot;pipe&quot; (karakter &quot;|&quot;). Ini dipanggil saringan cetakan, dan itu adalah jalan untuk menyaring nilai dari variabel. Di kasus ini, tanggal menyaring membentuk obyek tanggal waktu Phyton di bentuk yang fiberikan (seperti ditemukan di fungsi tanggal PHP).</p>\n<p>Anda dapat merantai bersama sebanyak saringan yang anda suka. Anda dapat menulis <a class=\"reference internal\" href=\"/id/2.0/howto/custom-template-tags/#howto-writing-custom-template-filters\"><span class=\"std std-ref\">saringan cetakan penyesuaian</span></a>. Anda dapat menulis <a class=\"reference internal\" href=\"/id/2.0/howto/custom-template-tags/\"><span class=\"doc\">label cetakan penyesuaian</span></a>, yang menjalankan kode Phyton disesuaikan dibelakang layar.</p>\n<p>Akhirnya, Django menggunakan konsep dari &quot;cetakan turunan&quot;. Itu apa yang <code class=\"docutils literal notranslate\"><span class=\"pre\">{%</span> <span class=\"pre\">extends</span> <span class=\"pre\">&quot;base.html&quot;</span> <span class=\"pre\">%}</span></code> lakukan. Dia berarti &quot;Pertama muat cetakan disebut 'base', yang menentukan segerombolan blok, dan isi blok dengan blok berikut.&quot; Pendeknya, itu membiarkan anda secara dramatis memotong kelebihan di cetakan: setiap cetakan harus menentukan hanya apa yang unik ke cetakan tersebut.</p>\n<p>Disini adalah apa cetakan &quot;base.html&quot;, termasuk penggunaan <a class=\"reference internal\" href=\"/id/2.0/howto/static-files/\"><span class=\"doc\">berkas statis</span></a>, mungkin terlihat seperti:</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"html+django\"><figcaption class=\"code-block-caption\"><code>mysite/templates/base.html</code></figcaption><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=\"mysite/templates/base.html\"><code><span class=\"cp\">{%</span> <span class=\"k\">load</span> <span class=\"nv\">static</span> <span class=\"cp\">%}</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">html</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">head</span><span class=\"p\">&gt;</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">title</span><span class=\"p\">&gt;</span><span class=\"cp\">{%</span> <span class=\"k\">block</span> <span class=\"nv\">title</span> <span class=\"cp\">%}{%</span> <span class=\"k\">endblock</span> <span class=\"cp\">%}</span><span class=\"p\">&lt;/</span><span class=\"nt\">title</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">head</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">body</span><span class=\"p\">&gt;</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;</span><span class=\"cp\">{%</span> <span class=\"k\">static</span> <span class=\"s2\">&quot;images/sitelogo.png&quot;</span> <span class=\"cp\">%}</span><span class=\"s\">&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=\"k\">block</span> <span class=\"nv\">content</span> <span class=\"cp\">%}{%</span> <span class=\"k\">endblock</span> <span class=\"cp\">%}</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">body</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">html</span><span class=\"p\">&gt;</span>\n</code></pre></figure>\n<p>Secara sederhana, itu menentukan kelihatan-dan-rasa dari situs (dengan logo situs), dan menyediakan lubang untuk cetakan anak untuk diisi. Ini membuat situs dirancang kembali semudah merubah berkas tunggal -- cetakan dasar.</p>\n<p>Dia juga membiarkan anda membuat versi banyak dari situs, dengan cetakan dasar berbeda, selama menggunakan kembali cetakan anak. Pembuat Django telah menggunakan teknik ini untuk membuat dengan cara menyolok versi berjalan berbeda dari situs -- mudah dengan membuat cetakan dasar baru.</p>\n<p>Catatan bahwa anda tidak harus menggunakan sistem cetakan Django jika anda memilih sistem lain. Selama sistem cetakan Django terutama terpadu-baik dengan lapisan model Django, tidak ada paksaan anda menggunakannya. untuk keadaan itu, anda tidak harus menggunakan API basisdata Django, salah satu. Anda dapat menggunakan lapisan abstraksi basisdata lain, anda dapat membaca berkas XML, anda dapat membaca berkas cakram. Setiap potongan Django -- model, tampilan, cetakan -- dipisahkan dari selanjutnya.</p>\n</section>\n<section id=\"this-is-just-the-surface\">\n<h2>Ini hanya permukaan<a class=\"heading-anchor\" href=\"#this-is-just-the-surface\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Ini hanya ikhtisar cepat dari fungsi Django. Beberapa fitur lebih berguna:</p>\n<ul class=\"simple\">\n<li><p>Sebuah <a class=\"reference internal\" href=\"/id/2.0/topics/cache/\"><span class=\"doc\">kerangka tembolok</span></a> yang dipadukan dengan memcache atau backend lain.</p></li>\n<li><p>Sebuah <a class=\"reference internal\" href=\"/id/2.0/ref/contrib/syndication/\"><span class=\"doc\">kerangka kongsi</span></a> yang membuat menciptakan RSS dan umpan Atom semudah menulis kelas Phyton kecil.</p></li>\n<li><p>Lebih otomatis menggairahkan-fitur admin dibangkitkan -- ikhtisar ini hampir tidak tergores permukaan.</p></li>\n</ul>\n<p>Langkah jelas selanjutnya adalah untuk anda untuk <a class=\"reference external\" href=\"https://www.djangoproject.com/download/\">download Django</a>, baca <a class=\"reference internal\" href=\"/id/2.0/intro/tutorial01/\"><span class=\"doc\">tutorial</span></a> dan gabung <a class=\"reference external\" href=\"https://www.djangoproject.com/community/\">komunitas</a>. Terima kasih untuk minat anda!</p>\n</section>","rootId":"django-at-a-glance","toc":[{"title":"Rancang model anda","anchor":"design-your-model","children":[]},{"title":"Pasang dia","anchor":"install-it","children":[]},{"title":"Nikmati API bebas","anchor":"enjoy-the-free-api","children":[]},{"title":"Sebuah antarmuka admin dinamisL ini bukan hanya perancah -- ini adalah keseluruhan rumah","anchor":"a-dynamic-admin-interface-it-s-not-just-scaffolding-it-s-the-whole-house","children":[]},{"title":"Rancang URL anda","anchor":"design-your-urls","children":[]},{"title":"Tulis tampilan anda","anchor":"write-your-views","children":[]},{"title":"Rancang cetakan anda","anchor":"design-your-templates","children":[]},{"title":"Ini hanya permukaan","anchor":"this-is-just-the-surface","children":[]}],"breadcrumbs":[{"docname":"intro/index","title":"Mulai","url":"/id/2.0/intro/"}],"prev":{"docname":"intro/index","title":"Mulai","url":"/id/2.0/intro/"},"next":{"docname":"intro/install","title":"Panduan pasang cepat","url":"/id/2.0/intro/install/"},"formats":{"html":"/id/2.0/intro/overview/","markdown":"/id/2.0/intro/overview.md","json":"/id/2.0/intro/overview.json"},"source":"https://github.com/django/django/blob/stable/2.0.x/docs/intro/overview.txt","official":"https://docs.djangoproject.com/id/2.0/intro/overview/","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","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}