{"title":"Aplikasi","version":"2.1","locale":"id","docname":"ref/applications","url":"/id/2.1/ref/applications/","canonical":"https://djangodocs.dev/id/2.1/ref/applications/","summary":"Django mengandung sebuah registrar dari aplikasi terpasang yang menyimpan konfigurasi dan menyediakan introspeksi. Dia juga merawat daftar dari ketersediaan models…","html":"<span id=\"applications\"></span><h1>Aplikasi<a class=\"heading-anchor\" href=\"#module-django.apps\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Django mengandung sebuah registrar dari aplikasi terpasang yang menyimpan konfigurasi dan menyediakan introspeksi. Dia juga merawat daftar dari ketersediaan <a class=\"reference internal\" href=\"/id/2.1/topics/db/models/\"><span class=\"doc\">models</span></a>.</p>\n<p>Registrar ini hanya disebut <a class=\"reference internal\" href=\"#django.apps.apps\" title=\"django.apps.apps\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">apps</span></code></a> dan tersedia di <a class=\"reference internal\" href=\"#module-django.apps\" title=\"django.apps\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.apps</span></code></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=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.apps</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">apps</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">apps</span><span class=\"o\">.</span><span class=\"n\">get_app_config</span><span class=\"p\">(</span><span class=\"s1\">&#39;admin&#39;</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">verbose_name</span>\n<span class=\"go\">&#39;Admin&#39;</span>\n</code></pre></div>\n<section id=\"projects-and-applications\">\n<h2>Proyek dan aplikasi<a class=\"heading-anchor\" href=\"#projects-and-applications\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Istilah <strong>proyek</strong> menggambarkan sebuah aplikasi Django. Proyek paket Python ditentukan terutama dengan mengatur modul, tetapi biasanya mengandung hal lain. Sebagai contoh, ketika anda menjalankan <code class=\"docutils literal notranslate\"><span class=\"pre\">django-admin</span> <span class=\"pre\">startproject</span> <span class=\"pre\">mysite</span></code> anda akan mendapatkan sebuah direktori proyek <code class=\"docutils literal notranslate\"><span class=\"pre\">mysite</span></code> yang mengandung sebuah paket Python <code class=\"docutils literal notranslate\"><span class=\"pre\">mysite</span></code> dengan <code class=\"docutils literal notranslate\"><span class=\"pre\">settings.py</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">urls.py</span></code>, dan <code class=\"docutils literal notranslate\"><span class=\"pre\">wsgi.py</span></code>. Paket proyek sering diperluas untuk disertakan untuk menyertakan hal-hal seperti perbaikan, CSS, dan cetakan yang tidak diikat ke aplikasi tertentu.</p>\n<p>Sebuah <strong>direktori akar proyek</strong> (satu yang mengandung <code class=\"docutils literal notranslate\"><span class=\"pre\">manage.py</span></code>) biasanya mengandung semua aplikasi proyek yang tidak dipasang secara terpisah.</p>\n<p>Istilah <strong>aplikasi</strong> menggambarkan paket Python yang menyediakan beberapa kumpulan fitur. Aplikasi <a class=\"reference internal\" href=\"/id/2.1/intro/reusable-apps/\"><span class=\"doc\">may be reused</span></a> di beragam proyek.</p>\n<p>Aplikasi menyertakan beberapa kombinasi model, tampilan, cetakan, etiket cetakan, berkas tetap, URL, middleware, dll. Mereka umumnya diikat kedalam proyek dengan pengaturan <a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> dan secara pilihan dengan mekanisme lain seperti URLconf, pengaturan <a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE</span></code></a>, atau warisan cetakan.</p>\n<p>Sangat penting untuk dimengerti bahwa aplikasi Django hanyalah kumpulan kode yang saling mempengaruhi dengan beragam bagian dari kerangka. Tidak ada sesuatu seperti obyek <code class=\"docutils literal notranslate\"><span class=\"pre\">Aplikasi</span></code>. Bagaimanapun, terdapat sedikit tempat dimana Django butuh saling mempengaruhi dengan aplikasi terpasang, terutama untuk konfigurasi dan juga untuk introspeksi. Itu mengapa registrar aplikasi merawat metadata dalam sebuah instance <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> untuk setiap aplikasi terpasang.</p>\n<p>Tidak ada batasan bahwa sebuah paket proyek tidak dapat dianggap sebuah aplikasi dan mempunyai model, dll. (yang akan butuh menambahkannya ke <a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a>).</p>\n</section>\n<section id=\"configuring-applications\">\n<span id=\"configuring-applications-ref\"></span><h2>Konfigurasi aplikasi<a class=\"heading-anchor\" href=\"#configuring-applications\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Untuk mengkonfigurasi sebuah aplikasi, subkelas <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> dan menaruh jalur titik ke subkelas tersebut dalam <a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a>.</p>\n<p>Ketika <a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> sederhana mengandung jalur titik ke modul aplikasi, Django memeriksa untuk variabel <code class=\"docutils literal notranslate\"><span class=\"pre\">default_app_config</span></code> di modul tersebut.</p>\n<p>Jika dia ditentukan, jalur bertitik ke subkelas <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> untuk aplikasi tersebut.</p>\n<p>Jika tidak ada <code class=\"docutils literal notranslate\"><span class=\"pre\">default_app_config</span></code>, Django menggunakan kelas dasar <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a>.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">default_app_config</span></code> mengizinkan aplikasi yang mendahului Django 1.7 seperti django.contrib.admin` untuk memasukkan ke fitur <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> tanpa membutuhkan pengguna memperbaharui <a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> mereka.</p>\n<p>Aplikasi baru harus menghindari <code class=\"docutils literal notranslate\"><span class=\"pre\">default_app_config</span></code>. Sebagai gantinya mereka harus butuh jalur bertitik ke subkelas <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> sesuai untuk di konfigurasi secara eksplisit di <a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a>.</p>\n<section id=\"for-application-authors\">\n<h3>Untuk pengarang aplikasi<a class=\"heading-anchor\" href=\"#for-application-authors\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Jika anda membuat sebuah aplikasi dapat dipasang dipanggil &quot;Rock ’n’ roll&quot;, ini adalah bagaimana anda akan menyediakan sebuah nama pantas untuk admin:</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\"># rock_n_roll/apps.py</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.apps</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">AppConfig</span>\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">RockNRollConfig</span><span class=\"p\">(</span><span class=\"n\">AppConfig</span><span class=\"p\">):</span>\n    <span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;rock_n_roll&#39;</span>\n    <span class=\"n\">verbose_name</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;Rock ’n’ roll&quot;</span>\n</code></pre></div>\n<p>Anda dapat membuat aplikasi anda memuat subkelas ini <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> subclass secara awal 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=\"c1\"># rock_n_roll/__init__.py</span>\n\n<span class=\"n\">default_app_config</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;rock_n_roll.apps.RockNRollConfig&#39;</span>\n</code></pre></div>\n<p>Itu akan menyebabkan <code class=\"docutils literal notranslate\"><span class=\"pre\">RockNRollConfig</span></code> untuk digunakan ketika <a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> hanya mengandung <code class=\"docutils literal notranslate\"><span class=\"pre\">'rock_n_roll'</span></code>. Ini mengizinkan anda untuk membuat penggunaan dari fitur <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> tanpa membutuhkan pengguna anda untuk memperbaharui pengaturan <a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> mereka. Disamping ini menggunakan kasus, adalah terbaik untuk menghindari menggunakan <code class=\"docutils literal notranslate\"><span class=\"pre\">default_app_config</span></code> dan sebagai gantinya menentukan kelas konfigurasi aplikasi di <a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> sebagai digambarkan selanjutnya.</p>\n<p>Tentu saja, anda dapa juga mengatakan pengguna anda untuk menaruh <code class=\"docutils literal notranslate\"><span class=\"pre\">'rock_n_roll.apps.RockNRollConfig'</span></code> di pengaturan <a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> mereka. Anda dapat bahkan menyediakan beberapa perbedaan subkelas <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> dengan kebiasaan berbeda dan mengizinkan pengguna anda untuk memilih sati melalui pengaturan <a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> mereka.</p>\n<p>Ketentuan yang dianjurkan adalah menaruh kelas konfigurasi di submodul dari aplikasi dipanggil <code class=\"docutils literal notranslate\"><span class=\"pre\">apps</span></code>. Bagaimanapun, ini tidak akan dipaksakan oleh Django.</p>\n<p>Anda harus menyertakan atribut <a class=\"reference internal\" href=\"#django.apps.AppConfig.name\" title=\"django.apps.AppConfig.name\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">name</span></code></a> untuk Django untuk menentukan aplikasi mana konfigurasi ini berlaku. Anda dapat menentukan atribut apapun didokumentasikan di acuan API  <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a>.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Catatan</p>\n<p>Jika kode mengimpor registrar aplikasi di <code class=\"docutils literal notranslate\"><span class=\"pre\">__init__.py</span></code> aplikasi, nama <code class=\"docutils literal notranslate\"><span class=\"pre\">apps</span></code> akan bentrok dengan submodul <code class=\"docutils literal notranslate\"><span class=\"pre\">apps</span></code>. Praktik terbaik adalah memindahkan kode tersebut ke submodul dan mengimpornya. Sebuah solusi adalah mengimpor registrar dibawah nama berbeda:</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=\"w\"> </span><span class=\"nn\">django.apps</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">apps</span> <span class=\"k\">as</span> <span class=\"n\">django_apps</span>\n</code></pre></div>\n</aside>\n</section>\n<section id=\"for-application-users\">\n<h3>Untuk pengguna aplikasi<a class=\"heading-anchor\" href=\"#for-application-users\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Jika anda menggunakan &quot;Rock ’n’ roll&quot; dalam proyek disebut <code class=\"docutils literal notranslate\"><span class=\"pre\">anthology</span></code>, tetapi anda ingin menampilkan &quot;Jazz Manouche&quot;, anda dapat menyediakan konfigurasi anda sendiri:</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\"># anthology/apps.py</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">rock_n_roll.apps</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">RockNRollConfig</span>\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">JazzManoucheConfig</span><span class=\"p\">(</span><span class=\"n\">RockNRollConfig</span><span class=\"p\">):</span>\n    <span class=\"n\">verbose_name</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;Jazz Manouche&quot;</span>\n\n<span class=\"c1\"># anthology/settings.py</span>\n\n<span class=\"n\">INSTALLED_APPS</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"s1\">&#39;anthology.apps.JazzManoucheConfig&#39;</span><span class=\"p\">,</span>\n    <span class=\"c1\"># ...</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>Lagi, menentukan kelas konfigurasi proyek-khusus di submodul dipanggil <code class=\"docutils literal notranslate\"><span class=\"pre\">apps</span></code> adalah sebuah ketentuan, bukan sebuah persyaratan.</p>\n</section>\n</section>\n<section id=\"application-configuration\">\n<h2>Konfigurasi aplikasi<a class=\"heading-anchor\" href=\"#application-configuration\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">AppConfig</span></span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Konfigurasi aplikasi obyek menyimpan metadata untuk sebuah aplikasi. Beberapa atribut dapat dikonfigurasikan di subkelas <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a>. Lainnya disetel oleh Django dan hanya-baca.</p>\n</dd></dl>\n\n<section id=\"configurable-attributes\">\n<h3>Atribut dapat dikonfigurasi<a class=\"heading-anchor\" href=\"#configurable-attributes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.name\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AppConfig.</span></span><span class=\"sig-name descname\"><span class=\"pre\">name</span></span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Jalur Phyton penuh ke aplikasi, misalnya <code class=\"docutils literal notranslate\"><span class=\"pre\">'django.contrib.admin'</span></code>.</p>\n<p>Atribut ini menentukan konfigurasi aplikasi mana yang berlaku. DIa harus disetel di semua subkelas <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a>.</p>\n<p>Dia harus unik terhadap proyek Django.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.label\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AppConfig.</span></span><span class=\"sig-name descname\"><span class=\"pre\">label</span></span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.label\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Nama pendek untuk aplikasi, misalnya <code class=\"docutils literal notranslate\"><span class=\"pre\">'admin'</span></code></p>\n<p>Atribut ini mengizinkan melabel kembali sebuah aplikasi ketika dua aplikasi mempunyai label bertentangan. Awal dia ke komponen terakhir dari <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code>. Dia harus penciri Python yang sah.</p>\n<p>Dia harus unik terhadap proyek Django.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.verbose_name\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AppConfig.</span></span><span class=\"sig-name descname\"><span class=\"pre\">verbose_name</span></span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.verbose_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Nama dapat dibaca manusia untuk aplikasi, misalnya &quot;Administrasi&quot;.</p>\n<p>Atribut awal ke <code class=\"docutils literal notranslate\"><span class=\"pre\">label.title()</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.path\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AppConfig.</span></span><span class=\"sig-name descname\"><span class=\"pre\">path</span></span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.path\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Jalur sistem berkas pada direktori aplikasi, misalnya <code class=\"docutils literal notranslate\"><span class=\"pre\">'/usr/lib/pythonX.Y/dist-packages/django/contrib/admin'</span></code>.</p>\n<p>Dalam banyak kasus, Django dapat otomatis mengenali dan mengatur ini, tetapi anda dapat juga menyediakan menimpa eksplisit sebagai atribut kelas di subkelas <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> anda. Dalam beberapa situasi ini diwajibkan; sebagai contoh jika paket aplikasi adalah <a class=\"reference internal\" href=\"#namespace-package\">namespace package</a> dengan banyak jalur.</p>\n</dd></dl>\n\n</section>\n<section id=\"read-only-attributes\">\n<h3>Atribut hanya-baca<a class=\"heading-anchor\" href=\"#read-only-attributes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.module\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AppConfig.</span></span><span class=\"sig-name descname\"><span class=\"pre\">module</span></span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.module\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>modul utama/akar untuk aplikasi, misalnya &quot;&lt;module 'django.contrib.admin' from 'django/contrib/admin/__init__.py'&gt;&quot;.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.models_module\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AppConfig.</span></span><span class=\"sig-name descname\"><span class=\"pre\">models_module</span></span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.models_module\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Modul yang berisi model, misalnya &quot;&lt;module 'django.contrib.admin.models' from 'django/contrib/admin/models.py'&gt;&quot;.</p>\n<p>Itu mungkin <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> jika aplikasi tidak mengandung sebuah modul <code class=\"docutils literal notranslate\"><span class=\"pre\">models</span></code>. Catat bahwa basisdata terkait sinyal seperti <a class=\"reference internal\" href=\"/id/2.1/ref/signals/#django.db.models.signals.pre_migrate\" title=\"django.db.models.signals.pre_migrate\"><code class=\"xref py py-data docutils literal notranslate\"><span class=\"pre\">pre_migrate</span></code></a> dan <a class=\"reference internal\" href=\"/id/2.1/ref/signals/#django.db.models.signals.post_migrate\" title=\"django.db.models.signals.post_migrate\"><code class=\"xref py py-data docutils literal notranslate\"><span class=\"pre\">post_migrate</span></code></a> hanya dimunculkan untuk aplikasi yang mempunyai sebuah modul <code class=\"docutils literal notranslate\"><span class=\"pre\">models</span></code></p>\n</dd></dl>\n\n</section>\n<section id=\"methods\">\n<h3>Cara<a class=\"heading-anchor\" href=\"#methods\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.get_models\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AppConfig.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_models</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.get_models\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Mengembalikan kelas <a class=\"reference internal\" href=\"/id/2.1/ref/models/instances/#django.db.models.Model\" title=\"django.db.models.Model\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Model</span></code></a> berulang untuk aplikasi ini.</p>\n<p>Membutuhkan aplikasi registrar untuk sepenuhnya dikumpulkan.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.get_model\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AppConfig.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_model</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model_name</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">require_ready</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.get_model\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Mengembalikan <a class=\"reference internal\" href=\"/id/2.1/ref/models/instances/#django.db.models.Model\" title=\"django.db.models.Model\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Model</span></code></a> dengan <code class=\"docutils literal notranslate\"><span class=\"pre\">model_name</span></code> diberikan.  <code class=\"docutils literal notranslate\"><span class=\"pre\">model_name</span></code> adalah tidak sensitif.</p>\n<p>Memunculkan <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#LookupError\" title=\"(di Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">LookupError</span></code></a> jika tidak ada model yang ada dalam aplikasi ini.</p>\n<p>Membutuhkan aplikasi regristrar untuk sepenuhnya dikumpulkan meskipun argumen <code class=\"docutils literal notranslate\"><span class=\"pre\">require_ready</span></code> disetel menjadi <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>. <code class=\"docutils literal notranslate\"><span class=\"pre\">require_ready</span></code> berperilaku tepat seperti dalam <a class=\"reference internal\" href=\"#django.apps.apps.get_model\" title=\"django.apps.apps.get_model\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">apps.get_model()</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.ready\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AppConfig.</span></span><span class=\"sig-name descname\"><span class=\"pre\">ready</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.ready\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Subkelas dapat menimpa metode ini untuk melakukan tugas inisialisasi seperti mendaftarkan sinyal. Dia dipanggil segera ketika registrar dikumpulkan penuh.</p>\n<p>Meskipun anda tidak dapat mengimpor pada tingkat-modul dimana kelas-kelas <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> ditentukan, anda dapat mengimpor <code class=\"docutils literal notranslate\"><span class=\"pre\">ready()</span></code>, menggunakan antara pernyataan <code class=\"docutils literal notranslate\"><span class=\"pre\">import</span></code> atau <a class=\"reference internal\" href=\"#django.apps.AppConfig.get_model\" title=\"django.apps.AppConfig.get_model\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_model()</span></code></a>.</p>\n<p>Jika anda sedang mendaftarkan <a class=\"reference internal\" href=\"/id/2.1/ref/signals/#module-django.db.models.signals\" title=\"django.db.models.signals: Signals sent by the model system.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">model</span> <span class=\"pre\">signals</span></code></a>, anda dapat mengacu pada pengirim berdasarkan label deretan karakter nya daripada menggunakan kelas model itu sendiri.</p>\n<p>Contoh:</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=\"w\"> </span><span class=\"nn\">django.db.models.signals</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">pre_save</span>\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">ready</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n    <span class=\"c1\"># importing model classes</span>\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\">MyModel</span>  <span class=\"c1\"># or...</span>\n    <span class=\"n\">MyModel</span> <span class=\"o\">=</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">get_model</span><span class=\"p\">(</span><span class=\"s1\">&#39;MyModel&#39;</span><span class=\"p\">)</span>\n\n    <span class=\"c1\"># registering signals with the model&#39;s string label</span>\n    <span class=\"n\">pre_save</span><span class=\"o\">.</span><span class=\"n\">connect</span><span class=\"p\">(</span><span class=\"n\">receiver</span><span class=\"p\">,</span> <span class=\"n\">sender</span><span class=\"o\">=</span><span class=\"s1\">&#39;app_label.MyModel&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Peringatan</p>\n<p>Meskipun anda dapat mengakses kelas-kelas model seperti yang digambarkan dibawah, hindari berinteraksi dengan basisdata dalam penerapan <a class=\"reference internal\" href=\"#django.apps.AppConfig.ready\" title=\"django.apps.AppConfig.ready\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">ready()</span></code></a> anda. Ini termasuk cara model yang mengerjakan permintaan (<a class=\"reference internal\" href=\"/id/2.1/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">save()</span></code></a>, <a class=\"reference internal\" href=\"/id/2.1/ref/models/instances/#django.db.models.Model.delete\" title=\"django.db.models.Model.delete\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">delete()</span></code></a>, manager methods etc.), dan juga permintaan SQL mentah melalui cara <code class=\"docutils literal notranslate\"><span class=\"pre\">django.db.connection</span></code>. Your <a class=\"reference internal\" href=\"#django.apps.AppConfig.ready\" title=\"django.apps.AppConfig.ready\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">ready()</span></code></a> akan jalan selama permulaan dari stiap perintah pengelolaan. Sebagai contoh, meskipun konfigurasi basis data percobaan terpisah dari pengaturan produksi, <code class=\"docutils literal notranslate\"><span class=\"pre\">manage.py</span> <span class=\"pre\">test</span></code> masih dapat mengerjakan beberapa permintaan terhadap basisdata <strong>produksi</strong> anda!</p>\n</aside>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Catatan</p>\n<p>Dalam pengolahan inisialisasi biasa, cara <code class=\"docutils literal notranslate\"><span class=\"pre\">ready</span></code> hanya dipanggil sekali oleh Django. Tetapi dalam kasus-kasus terpojok, khususnya dalam percobaan yang remeh dengan aplikasi terpasang, <code class=\"docutils literal notranslate\"><span class=\"pre\">ready</span></code> mngkin dipanggil lebih dari sekali. Dalam kasus tersebut, antara menulis cara idempoten, atau menaruh sebuah bendera pada kelas-kelas <code class=\"docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code> anda untuk mencegah menjalankan kembali kode yang seharusnya dikerjakan tepatnya satu waktu.</p>\n</aside>\n</dd></dl>\n\n</section>\n<section id=\"namespace-packages-as-apps\">\n<span id=\"namespace-package\"></span><h3>Paket namespace sebagai aplikasi<a class=\"heading-anchor\" href=\"#namespace-packages-as-apps\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Paket-paket Python tanpa berkas <code class=\"docutils literal notranslate\"><span class=\"pre\">__init__.py</span></code> dikenal sebagai &quot;namespace packages&quot; dan mungkin tersebar di banyak direktori pada tempat berbeda di <code class=\"docutils literal notranslate\"><span class=\"pre\">sys.path</span></code> (see <span class=\"target\" id=\"index-2\"></span><a class=\"pep reference external\" href=\"https://peps.python.org/pep-0420/\"><strong>PEP 420</strong></a>).</p>\n<p>Aplikasi Django membutuhkan sebuah jalus sistem berkas berbasis tunggal dimana Django (tergantung pada konfigurasi) akan mencari cetakan, aset tetap, dll. Hingga, paket namespace mungkin hanya aplikasi Django jika satu dari hal berikut adalah benar:</p>\n<ol class=\"arabic simple\">\n<li><p>Paket namespace sebenarnya mempunyai hanya tempat tunggal (yaitu tidak tersebar terhadap lebih dari satu direktori.)</p></li>\n<li><p>Kelas <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> digunakan untuk mengkonfigurasikan aplikasi yang mempunyai atribut kelas <a class=\"reference internal\" href=\"#django.apps.AppConfig.path\" title=\"django.apps.AppConfig.path\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">path</span></code></a>, yang merupakan jalur direktori mutlak Django akan digunakan sebagai jalur dasar tunggal untuk aplikasi.</p></li>\n</ol>\n<p>Jika tidak satupun dari kondisi ini bertemu, Django akan memunculkan <a class=\"reference internal\" href=\"/id/2.1/ref/exceptions/#django.core.exceptions.ImproperlyConfigured\" title=\"django.core.exceptions.ImproperlyConfigured\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">ImproperlyConfigured</span></code></a>.</p>\n</section>\n</section>\n<section id=\"application-registry\">\n<h2>Registrar aplikasi<a class=\"heading-anchor\" href=\"#application-registry\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.apps.apps\">\n<span class=\"sig-name descname\"><span class=\"pre\">apps</span></span><a class=\"heading-anchor\" href=\"#django.apps.apps\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Registrar aplikasi menyediakan API umum berikut. Cara yang tidak ada di daftar dibawah ini  dianggap pribadi dan mungkin berubah tanpa pemberitahuan.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.apps.apps.ready\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">apps.</span></span><span class=\"sig-name descname\"><span class=\"pre\">ready</span></span><a class=\"heading-anchor\" href=\"#django.apps.apps.ready\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Atribut Boolean yang disetel ke <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> setelah registrar sepenuhnya dikumpulkan dan semua cara <a class=\"reference internal\" href=\"#django.apps.AppConfig.ready\" title=\"django.apps.AppConfig.ready\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">AppConfig.ready()</span></code></a> dipanggil.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.apps.apps.get_app_configs\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">apps.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_app_configs</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.apps.apps.get_app_configs\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Mengembalikan instance berulang dari  <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.apps.apps.get_app_config\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">apps.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_app_config</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">app_label</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.apps.apps.get_app_config\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Mengembalikan sebuah <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> untuk aplikasi dengan <code class=\"docutils literal notranslate\"><span class=\"pre\">app_label</span></code>. yang diberikan. Memunculkan <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#LookupError\" title=\"(di Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">LookupError</span></code></a> jika tidak ada aplikasi.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.apps.apps.is_installed\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">apps.</span></span><span class=\"sig-name descname\"><span class=\"pre\">is_installed</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">app_name</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.apps.apps.is_installed\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Memeriksa apakah aplikasi dengan nama diberikan anda di registrar. <code class=\"docutils literal notranslate\"><span class=\"pre\">app_name</span></code> adalah nama penuh dari aplikasi, misalnya <code class=\"docutils literal notranslate\"><span class=\"pre\">'django.contrib.admin'</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.apps.apps.get_model\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">apps.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_model</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">app_label</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model_name</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">require_ready</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.apps.apps.get_model\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Mengembalikan <a class=\"reference internal\" href=\"/id/2.1/ref/models/instances/#django.db.models.Model\" title=\"django.db.models.Model\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Model</span></code></a> dengan <code class=\"docutils literal notranslate\"><span class=\"pre\">app_label</span></code> yang diberikan dan <code class=\"docutils literal notranslate\"><span class=\"pre\">model_name</span></code>. Sebagai sebuah jalan pintas, metode ini juga menerima argumen tunggal dalam bentuk <code class=\"docutils literal notranslate\"><span class=\"pre\">app_label.model_name</span></code>. <code class=\"docutils literal notranslate\"><span class=\"pre\">model_name</span></code> kasus-tidak peka.</p>\n<p>Memunculkan <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#LookupError\" title=\"(di Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">LookupError</span></code></a> jika tidak seperti aplikasi atau model ada. Memunculkan <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#ValueError\" title=\"(di Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">ValueError</span></code></a> ketika dipanggil dengan argumen tunggal yang tidak mengandung satu titik.</p>\n<p>Membutuhkan aplikasi regristrar untuk sepenuhnya dikumpulkan meskipun argumen <code class=\"docutils literal notranslate\"><span class=\"pre\">require_ready</span></code> disetel menjadi <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p>\n<p>Mengatur <code class=\"docutils literal notranslate\"><span class=\"pre\">require_ready</span></code> menjadi <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> mengizinkan pencarian model <a class=\"reference internal\" href=\"#app-loading-process\"><span class=\"std std-ref\">while the app registry is being populated</span></a>, khususnya selama tahap kedua dimana itu mengimpor model. Kemudian <code class=\"docutils literal notranslate\"><span class=\"pre\">get_model()</span></code> mempunyai pengaruh sama ketika mengimpor model. Kasus penggunaan utama adalah mengkonfigurasi kelas-kelas model dengan pengaturan, seperti <a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-AUTH_USER_MODEL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">AUTH_USER_MODEL</span></code></a>.</p>\n<p>Ketika <code class=\"docutils literal notranslate\"><span class=\"pre\">require_ready</span></code> adalah <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">get_model()</span></code> mengembalikan sebuah kelas model yang mungkin tidak sepenuhnya berfungsi (accessor balikan mungkin hilang, sebagai contoh) sampai aplikasi regristrar sepenuhnya dikumpulkan. Untuk alasan ini, itu adalah terbaik untuk membiarkan <code class=\"docutils literal notranslate\"><span class=\"pre\">require_ready</span></code> ke nilai awalan dari <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> kapanpun memungkinkan.</p>\n</dd></dl>\n\n</section>\n<section id=\"initialization-process\">\n<span id=\"app-loading-process\"></span><h2>Inisialisasi pengolahan<a class=\"heading-anchor\" href=\"#initialization-process\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"how-applications-are-loaded\">\n<h3>Bagaimana aplikasi dimuat<a class=\"heading-anchor\" href=\"#how-applications-are-loaded\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Ketika Django mulai, <a class=\"reference internal\" href=\"#django.setup\" title=\"django.setup\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.setup()</span></code></a> bertanggung jawab untuk mengumpulkan registrar aplikasi.</p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.setup\">\n<span class=\"sig-name descname\"><span class=\"pre\">setup</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">set_prefix</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.setup\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Konfigurasi Django oleh:</p>\n<ul class=\"simple\">\n<li><p>Memuat pengaturan.</p></li>\n<li><p>Mengatur pencatatan.</p></li>\n<li><p>Jika <code class=\"docutils literal notranslate\"><span class=\"pre\">set_prefix</span></code> adalah True, pengaturan awalan tulisan penyelesai URL ke <a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-FORCE_SCRIPT_NAME\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">FORCE_SCRIPT_NAME</span></code></a> jika ditentukan, atau jika tidak <code class=\"docutils literal notranslate\"><span class=\"pre\">/</span></code>.</p></li>\n<li><p>Memulai registrar aplikasi</p></li>\n</ul>\n<p>Fungsi ini dipanggil otomatis:</p>\n<ul class=\"simple\">\n<li><p>Ketika menjalankan peladen HTTP melalui dukungan WSGI Django.</p></li>\n<li><p>Ketika meminta perintah pengelolaan.</p></li>\n</ul>\n<p>Dia harus dipanggil secara tersirat di kasus lain, sebagai contoh di tulisan Phyton.</p>\n</dd></dl>\n\n<p>Registrar aplikasi dimulai dalam tiga tingkatan, Pada setiap tingkatan, Django mengolah semua aplikasi berdasarkan dari  <a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a>.</p>\n<ol class=\"arabic\">\n<li><p>Django pertama mengimpor setiap barang di <a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a>.</p>\n<p>Jika itu sebuah kelas konfigurasi aplikasi, Django impor paket akar dari aplikasi, ditentukan oleh atribut <a class=\"reference internal\" href=\"#django.apps.AppConfig.name\" title=\"django.apps.AppConfig.name\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">name</span></code></a> nya. Jika itu adalah sebuah paket Python, Django membuat konfigurasi aplikasi awal.</p>\n<p><em>Pada tingkatan ini, kode anda jangan mengimpor model apapun!</em></p>\n<p>Dengan kata lain, paket akar aplikasi anda dan modul yang menentukan kelas-kelas konfigurasi aplikasi anda jangan impor model apapun, bahkan secara tidak langsung.</p>\n<p>Sesungguhnya, Django mengizinkan mengimpor model sekali konfigurasi aplikasi mereka dimuat. Bagaimanapun, agar menghindari kendala yang tidak perlu pada urutan <a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a>, sangat dianjurkan tidak mengimpor model apapun pada tingkatan ini.</p>\n<p>Sekali tingkatan ini lengkap, API yang menjalankan konfigurasi aplikasi seperti <a class=\"reference internal\" href=\"#django.apps.apps.get_app_config\" title=\"django.apps.apps.get_app_config\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_app_config()</span></code></a> menjadi tidak berguna.</p>\n</li>\n<li><p>Kemudian Django berusaha mengimpor submodul <code class=\"docutils literal notranslate\"><span class=\"pre\">model</span></code> dari setiap aplikasi, jika memang ada.</p>\n<p>Anda harus menentukan atau mengimpor semua model di aplikasi <code class=\"docutils literal notranslate\"><span class=\"pre\">models.py</span></code> anda atau <code class=\"docutils literal notranslate\"><span class=\"pre\">models/__init__.py</span></code>. Sebaliknya, registri aplikasi mungkin tidak dikumpulkan penuh pada titik ini, yang dapat menyebabkan ORM tidak berfungsi.</p>\n<p>Ketika tingkatan ini lengkap, API yang bekerja di model seperti <a class=\"reference internal\" href=\"#django.apps.apps.get_model\" title=\"django.apps.apps.get_model\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_model()</span></code></a> menjadi dapat digunakan.</p>\n</li>\n<li><p>Akhirnya Django menjalankan cara <a class=\"reference internal\" href=\"#django.apps.AppConfig.ready\" title=\"django.apps.AppConfig.ready\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">ready()</span></code></a> dari setiap konfigurasi aplikasi.</p></li>\n</ol>\n</section>\n<section id=\"troubleshooting\">\n<span id=\"applications-troubleshooting\"></span><h3>Menyelesaikan masalah<a class=\"heading-anchor\" href=\"#troubleshooting\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Disini beberapa masalah umum yang mungkin muncul selama inisialisasi:</p>\n<ul>\n<li><p><a class=\"reference internal\" href=\"/id/2.1/ref/exceptions/#django.core.exceptions.AppRegistryNotReady\" title=\"django.core.exceptions.AppRegistryNotReady\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppRegistryNotReady</span></code></a>: Ini terjadi ketika mengimpor sebuah konfigurasi aplikasi atau sebuah kode pemicu modul model yang bergantung di registri aplikasi.</p>\n<p>Sebagai contoh, <a class=\"reference internal\" href=\"/id/2.1/ref/utils/#django.utils.translation.gettext\" title=\"django.utils.translation.gettext\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">gettext()</span></code></a> menggunakan registrar aplikasi untuk mencari katalog terjemahan di aplikasi. Untuk menterjemahkan pada waktu impor, anda butuh <a class=\"reference internal\" href=\"/id/2.1/ref/utils/#django.utils.translation.gettext_lazy\" title=\"django.utils.translation.gettext_lazy\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">gettext_lazy()</span></code></a> sebagai gantinya. (Menggunakan <a class=\"reference internal\" href=\"/id/2.1/ref/utils/#django.utils.translation.gettext\" title=\"django.utils.translation.gettext\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">gettext()</span></code></a> akan berupa sebuah kesalahan, karena terjemahan akan terjadi pada waktu impor, daripada setiap permintaan tergantung pada bahasa aktif.)</p>\n<p>Menjalankan permintaan basisdata dengan ORM pada waktu impor dalam modul model juga akan memicu pengecualian ini. ORM tidak dapat berfungsi dengan benar sampai semua model tersedia.</p>\n<p>Pengecualian ini juga terjadi jika anda lupa memanggil <a class=\"reference internal\" href=\"#django.setup\" title=\"django.setup\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.setup()</span></code></a> di tulisan berdiri sendiri.</p>\n</li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">ImportError:</span> <span class=\"pre\">tidak</span> <span class=\"pre\">dapat</span> <span class=\"pre\">impor</span> <span class=\"pre\">nama</span> <span class=\"pre\">...</span></code> Ini terjadi jika urutan impor berakhir dalam perulangan.</p>\n<p>Untuk mengurangi permasalahan tersebut, anda harus mengecilkan ketergantungan diantara model anda dan melakukan sedikit pekerjaan sebisa mungkin pada waktu impor. Untuk menghindari penjalanan kode pada waktu impor, anda dapat memindahkannya dan menembolok hasilnya. Kode akan dikerjakan ketika anda pertama butuh hasilnya. Konsep ini dikenal sebagai &quot;lazy evaluation&quot;.</p>\n</li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.admin</span></code> automatically performs autodiscovery of <code class=\"docutils literal notranslate\"><span class=\"pre\">admin</span></code>\nmodules in installed applications. To prevent it, change your\n<a class=\"reference internal\" href=\"/id/2.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> to contain\n<code class=\"docutils literal notranslate\"><span class=\"pre\">'django.contrib.admin.apps.SimpleAdminConfig'</span></code> instead of\n<code class=\"docutils literal notranslate\"><span class=\"pre\">'django.contrib.admin'</span></code>.</p></li>\n</ul>\n</section>\n</section>","rootId":"module-django.apps","toc":[{"title":"Proyek dan aplikasi","anchor":"projects-and-applications","children":[]},{"title":"Konfigurasi aplikasi","anchor":"configuring-applications","children":[{"title":"Untuk pengarang aplikasi","anchor":"for-application-authors","children":[]},{"title":"Untuk pengguna aplikasi","anchor":"for-application-users","children":[]}]},{"title":"Konfigurasi aplikasi","anchor":"application-configuration","children":[{"title":"Atribut dapat dikonfigurasi","anchor":"configurable-attributes","children":[]},{"title":"Atribut hanya-baca","anchor":"read-only-attributes","children":[]},{"title":"Cara","anchor":"methods","children":[]},{"title":"Paket namespace sebagai aplikasi","anchor":"namespace-packages-as-apps","children":[]}]},{"title":"Registrar aplikasi","anchor":"application-registry","children":[]},{"title":"Inisialisasi pengolahan","anchor":"initialization-process","children":[{"title":"Bagaimana aplikasi dimuat","anchor":"how-applications-are-loaded","children":[]},{"title":"Menyelesaikan masalah","anchor":"troubleshooting","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"Acuan API","url":"/id/2.1/ref/"}],"prev":{"docname":"ref/index","title":"Acuan API","url":"/id/2.1/ref/"},"next":{"docname":"ref/checks","title":"Kerangka pemeriksaan sistem","url":"/id/2.1/ref/checks/"},"formats":{"html":"/id/2.1/ref/applications/","markdown":"/id/2.1/ref/applications.md","json":"/id/2.1/ref/applications.json"},"source":"https://github.com/django/django/blob/stable/2.1.x/docs/ref/applications.txt","official":"https://docs.djangoproject.com/id/2.1/ref/applications/","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"]}