{"title":"Aplikasi","version":"3.1","locale":"id","docname":"ref/applications","url":"/id/3.1/ref/applications/","canonical":"https://djangodocs.dev/id/3.1/ref/applications/","summary":"Django mengandung sebuah registrar dari aplikasi terpasang yang menyimpan konfigurasi dan menyediakan introspeksi.","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/3.1/topics/db/models/\"><span class=\"doc\">models</span></a>.</p>\n<p>Registri disebut <a class=\"reference internal\" href=\"#django.apps.apps\" title=\"django.apps.apps\"><code class=\"xref py py-attr docutils literal notranslate\">apps</code></a> dan tersedia dalam <a class=\"reference internal\" href=\"#module-django.apps\" title=\"django.apps\"><code class=\"xref py py-mod docutils literal notranslate\">django.apps</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=\"nn\">django.apps</span> <span class=\"kn\">import</span> apps\n<span class=\"gp\">&gt;&gt;&gt; </span>apps<span class=\"o\">.</span>get_app_config<span class=\"p\">(</span><span class=\"s1\">&#39;admin&#39;</span><span class=\"p\">)</span><span class=\"o\">.</span>verbose_name\n<span class=\"go\">&#39;Administration&#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>The term <strong>project</strong> describes a Django web application. The project Python\npackage is defined primarily by a settings module, but it usually contains\nother things. For example, when you run  <code class=\"docutils literal notranslate\">django-admin startproject mysite</code>\nyou'll get a <code class=\"docutils literal notranslate\">mysite</code> project directory that contains a <code class=\"docutils literal notranslate\">mysite</code> Python\npackage with <code class=\"docutils literal notranslate\">settings.py</code>, <code class=\"docutils literal notranslate\">urls.py</code>, <code class=\"docutils literal notranslate\">asgi.py</code> and <code class=\"docutils literal notranslate\">wsgi.py</code>. The\nproject package is often extended to include things like fixtures, CSS, and\ntemplates which aren't tied to a particular application.</p>\n<p>Sebuah <strong>direktori akar proyek</strong> (satu yang mengandung <code class=\"docutils literal notranslate\">manage.py</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/3.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/3.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a> dan secara pilihan dengan mekanisme lain seperti URLconf, pengaturan <a class=\"reference internal\" href=\"/id/3.1/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\">MIDDLEWARE</code></a>, atau warisan cetakan.</p>\n<p>It is important to understand that a Django application is a set of code\nthat interacts with various parts of the framework. There's no such thing as\nan <code class=\"docutils literal notranslate\">Application</code> object. However, there's a few places where Django needs to\ninteract with installed applications, mainly for configuration and also for\nintrospection. That's why the application registry maintains metadata in an\n<a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a> instance for each installed application.</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/3.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</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\">AppConfig</code></a> dan menaruh jalur titik ke subkelas tersebut dalam <a class=\"reference internal\" href=\"/id/3.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a>.</p>\n<p>Ketika <a class=\"reference internal\" href=\"/id/3.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a> mengandung jalur bertitik pada sebuah modul aplikasi, Django memeriksa untuk variabel <code class=\"docutils literal notranslate\">default_app_config</code> dalam 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\">AppConfig</code></a> untuk aplikasi tersebut.</p>\n<p>Jika tidak ada <code class=\"docutils literal notranslate\">default_app_config</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\">AppConfig</code></a>.</p>\n<p><code class=\"docutils literal notranslate\">default_app_config</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\">AppConfig</code></a> tanpa membutuhkan pengguna memperbaharui <a class=\"reference internal\" href=\"/id/3.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a> mereka.</p>\n<p>Aplikasi baru harus menghindari <code class=\"docutils literal notranslate\">default_app_config</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\">AppConfig</code></a> sesuai untuk di konfigurasi secara eksplisit di <a class=\"reference internal\" href=\"/id/3.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</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=\"nn\">django.apps</span> <span class=\"kn\">import</span> AppConfig\n\n<span class=\"k\">class</span> <span class=\"nc\">RockNRollConfig</span><span class=\"p\">(</span>AppConfig<span class=\"p\">):</span>\n    name <span class=\"o\">=</span> <span class=\"s1\">&#39;rock_n_roll&#39;</span>\n    verbose_name <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\">AppConfig</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\ndefault_app_config <span class=\"o\">=</span> <span class=\"s1\">&#39;rock_n_roll.apps.RockNRollConfig&#39;</span>\n</code></pre></div>\n<p>That will cause <code class=\"docutils literal notranslate\">RockNRollConfig</code> to be used when <a class=\"reference internal\" href=\"/id/3.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a>\ncontains <code class=\"docutils literal notranslate\">'rock_n_roll'</code>. This allows you to make use of\n<a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a> features without requiring your users to update\ntheir <a class=\"reference internal\" href=\"/id/3.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a> setting. Besides this use case, it's best to\navoid using <code class=\"docutils literal notranslate\">default_app_config</code> and instead specify the app config class in\n<a class=\"reference internal\" href=\"/id/3.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a> as described next.</p>\n<p>You can also tell your users to put <code class=\"docutils literal notranslate\">'rock_n_roll.apps.RockNRollConfig'</code> in\ntheir <a class=\"reference internal\" href=\"/id/3.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a> setting. You can even provide several different\n<a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a> subclasses with different behaviors and allow\nyour users to choose one via their <a class=\"reference internal\" href=\"/id/3.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a> setting.</p>\n<p>Ketentuan yang dianjurkan adalah menaruh kelas konfigurasi di submodul dari aplikasi dipanggil <code class=\"docutils literal notranslate\">apps</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\">name</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\">AppConfig</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\">__init__.py</code> aplikasi, nama <code class=\"docutils literal notranslate\">apps</code> akan bentrok dengan submodul <code class=\"docutils literal notranslate\">apps</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=\"nn\">django.apps</span> <span class=\"kn\">import</span> apps <span class=\"k\">as</span> django_apps\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\">anthology</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=\"nn\">rock_n_roll.apps</span> <span class=\"kn\">import</span> RockNRollConfig\n\n<span class=\"k\">class</span> <span class=\"nc\">JazzManoucheConfig</span><span class=\"p\">(</span>RockNRollConfig<span class=\"p\">):</span>\n    verbose_name <span class=\"o\">=</span> <span class=\"s2\">&quot;Jazz Manouche&quot;</span>\n\n<span class=\"c1\"># anthology/settings.py</span>\n\nINSTALLED_APPS <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\">apps</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\">class</span> </em><span class=\"sig-name descname\">AppConfig</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\">AppConfig</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\">AppConfig.</span><span class=\"sig-name descname\">name</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\">'django.contrib.admin'</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\">AppConfig</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\">AppConfig.</span><span class=\"sig-name descname\">label</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\">'admin'</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\">name</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\">AppConfig.</span><span class=\"sig-name descname\">verbose_name</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\">label.title()</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\">AppConfig.</span><span class=\"sig-name descname\">path</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\">'/usr/lib/pythonX.Y/dist-packages/django/contrib/admin'</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\">AppConfig</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\">AppConfig.</span><span class=\"sig-name descname\">module</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\">AppConfig.</span><span class=\"sig-name descname\">models_module</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\">None</code> jika aplikasi tidak mengandung sebuah modul <code class=\"docutils literal notranslate\">models</code>. Catat bahwa basisdata terkait sinyal seperti <a class=\"reference internal\" href=\"/id/3.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\">pre_migrate</code></a> dan <a class=\"reference internal\" href=\"/id/3.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\">post_migrate</code></a> hanya dimunculkan untuk aplikasi yang mempunyai sebuah modul <code class=\"docutils literal notranslate\">models</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\">AppConfig.</span><span class=\"sig-name descname\">get_models</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/3.1/ref/models/instances/#django.db.models.Model\" title=\"django.db.models.Model\"><code class=\"xref py py-class docutils literal notranslate\">Model</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\">AppConfig.</span><span class=\"sig-name descname\">get_model</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">model_name</em>, <em class=\"sig-param\">require_ready<span class=\"o\">=</span><span class=\"default_value\">True</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/3.1/ref/models/instances/#django.db.models.Model\" title=\"django.db.models.Model\"><code class=\"xref py py-class docutils literal notranslate\">Model</code></a> dengan <code class=\"docutils literal notranslate\">model_name</code> diberikan.  <code class=\"docutils literal notranslate\">model_name</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\">LookupError</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\">require_ready</code> disetel menjadi <code class=\"docutils literal notranslate\">False</code>. <code class=\"docutils literal notranslate\">require_ready</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\">apps.get_model()</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\">AppConfig.</span><span class=\"sig-name descname\">ready</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\">AppConfig</code></a> ditentukan, anda dapat mengimpor <code class=\"docutils literal notranslate\">ready()</code>, menggunakan antara pernyataan <code class=\"docutils literal notranslate\">import</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\">get_model()</code></a>.</p>\n<p>Jika anda sedang mendaftarkan <a class=\"reference internal\" href=\"/id/3.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\">model signals</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=\"nn\">django.apps</span> <span class=\"kn\">import</span> AppConfig\n<span class=\"kn\">from</span> <span class=\"nn\">django.db.models.signals</span> <span class=\"kn\">import</span> pre_save\n\n\n<span class=\"k\">class</span> <span class=\"nc\">RockNRollConfig</span><span class=\"p\">(</span>AppConfig<span class=\"p\">):</span>\n    <span class=\"c1\"># ...</span>\n\n    <span class=\"k\">def</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=\"nn\">.models</span> <span class=\"kn\">import</span> MyModel  <span class=\"c1\"># or...</span>\n        MyModel <span class=\"o\">=</span> <span class=\"bp\">self</span><span class=\"o\">.</span>get_model<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        pre_save<span class=\"o\">.</span>connect<span class=\"p\">(</span>receiver<span class=\"p\">,</span> sender<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\">ready()</code></a> anda. Ini termasuk cara model yang mengerjakan permintaan (<a class=\"reference internal\" href=\"/id/3.1/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\">save()</code></a>, <a class=\"reference internal\" href=\"/id/3.1/ref/models/instances/#django.db.models.Model.delete\" title=\"django.db.models.Model.delete\"><code class=\"xref py py-meth docutils literal notranslate\">delete()</code></a>, manager methods etc.), dan juga permintaan SQL mentah melalui cara <code class=\"docutils literal notranslate\">django.db.connection</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\">ready()</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\">manage.py test</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\">ready</code> hanya dipanggil sekali oleh Django. Tetapi dalam kasus-kasus terpojok, khususnya dalam percobaan yang remeh dengan aplikasi terpasang, <code class=\"docutils literal notranslate\">ready</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\">AppConfig</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\">__init__.py</code> dikenal sebagai &quot;namespace packages&quot; dan mungkin tersebar di banyak direktori pada tempat berbeda di <code class=\"docutils literal notranslate\">sys.path</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\">AppConfig</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\">path</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/3.1/ref/exceptions/#django.core.exceptions.ImproperlyConfigured\" title=\"django.core.exceptions.ImproperlyConfigured\"><code class=\"xref py py-exc docutils literal notranslate\">ImproperlyConfigured</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\">apps</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\">apps.</span><span class=\"sig-name descname\">ready</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\">True</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\">AppConfig.ready()</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\">apps.</span><span class=\"sig-name descname\">get_app_configs</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\">AppConfig</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\">apps.</span><span class=\"sig-name descname\">get_app_config</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">app_label</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\">AppConfig</code></a> untuk aplikasi dengan <code class=\"docutils literal notranslate\">app_label</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\">LookupError</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\">apps.</span><span class=\"sig-name descname\">is_installed</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">app_name</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\">app_name</code> adalah nama penuh dari aplikasi, misalnya <code class=\"docutils literal notranslate\">'django.contrib.admin'</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\">apps.</span><span class=\"sig-name descname\">get_model</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">app_label</em>, <em class=\"sig-param\">model_name</em>, <em class=\"sig-param\">require_ready<span class=\"o\">=</span><span class=\"default_value\">True</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/3.1/ref/models/instances/#django.db.models.Model\" title=\"django.db.models.Model\"><code class=\"xref py py-class docutils literal notranslate\">Model</code></a> dengan <code class=\"docutils literal notranslate\">app_label</code> yang diberikan dan <code class=\"docutils literal notranslate\">model_name</code>. Sebagai sebuah jalan pintas, metode ini juga menerima argumen tunggal dalam bentuk <code class=\"docutils literal notranslate\">app_label.model_name</code>. <code class=\"docutils literal notranslate\">model_name</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\">LookupError</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\">ValueError</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\">require_ready</code> disetel menjadi <code class=\"docutils literal notranslate\">False</code>.</p>\n<p>Mengatur <code class=\"docutils literal notranslate\">require_ready</code> menjadi <code class=\"docutils literal notranslate\">False</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\">get_model()</code> mempunyai pengaruh sama ketika mengimpor model. Kasus penggunaan utama adalah mengkonfigurasi kelas-kelas model dengan pengaturan, seperti <a class=\"reference internal\" href=\"/id/3.1/ref/settings/#std-setting-AUTH_USER_MODEL\"><code class=\"xref std std-setting docutils literal notranslate\">AUTH_USER_MODEL</code></a>.</p>\n<p>Ketika <code class=\"docutils literal notranslate\">require_ready</code> adalah <code class=\"docutils literal notranslate\">False</code>, <code class=\"docutils literal notranslate\">get_model()</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\">require_ready</code> ke nilai awalan dari <code class=\"docutils literal notranslate\">True</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\">django.setup()</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\">setup</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">set_prefix<span class=\"o\">=</span><span class=\"default_value\">True</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\">set_prefix</code> adalah True, pengaturan awalan tulisan penyelesai URL ke <a class=\"reference internal\" href=\"/id/3.1/ref/settings/#std-setting-FORCE_SCRIPT_NAME\"><code class=\"xref std std-setting docutils literal notranslate\">FORCE_SCRIPT_NAME</code></a> jika ditentukan, atau jika tidak <code class=\"docutils literal notranslate\">/</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/3.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a>.</p>\n<ol class=\"arabic\">\n<li><p>Django pertama mengimpor setiap barang di <a class=\"reference internal\" href=\"/id/3.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</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\">name</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/3.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</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\">get_app_config()</code></a> menjadi tidak berguna.</p>\n</li>\n<li><p>Kemudian Django berusaha mengimpor submodul <code class=\"docutils literal notranslate\">model</code> dari setiap aplikasi, jika memang ada.</p>\n<p>Anda harus menentukan atau mengimpor semua model di aplikasi <code class=\"docutils literal notranslate\">models.py</code> anda atau <code class=\"docutils literal notranslate\">models/__init__.py</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\">get_model()</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\">ready()</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/3.1/ref/exceptions/#django.core.exceptions.AppRegistryNotReady\" title=\"django.core.exceptions.AppRegistryNotReady\"><code class=\"xref py py-class docutils literal notranslate\">AppRegistryNotReady</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/3.1/ref/utils/#django.utils.translation.gettext\" title=\"django.utils.translation.gettext\"><code class=\"xref py py-func docutils literal notranslate\">gettext()</code></a> menggunakan registrar aplikasi untuk mencari katalog terjemahan di aplikasi. Untuk menterjemahkan pada waktu impor, anda butuh <a class=\"reference internal\" href=\"/id/3.1/ref/utils/#django.utils.translation.gettext_lazy\" title=\"django.utils.translation.gettext_lazy\"><code class=\"xref py py-func docutils literal notranslate\">gettext_lazy()</code></a> sebagai gantinya. (Menggunakan <a class=\"reference internal\" href=\"/id/3.1/ref/utils/#django.utils.translation.gettext\" title=\"django.utils.translation.gettext\"><code class=\"xref py py-func docutils literal notranslate\">gettext()</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\">django.setup()</code></a> di tulisan berdiri sendiri.</p>\n</li>\n<li><p><code class=\"docutils literal notranslate\">ImportError: tidak dapat impor nama ...</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\">django.contrib.admin</code> automatically performs autodiscovery of <code class=\"docutils literal notranslate\">admin</code>\nmodules in installed applications. To prevent it, change your\n<a class=\"reference internal\" href=\"/id/3.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a> to contain\n<code class=\"docutils literal notranslate\">'django.contrib.admin.apps.SimpleAdminConfig'</code> instead of\n<code class=\"docutils literal notranslate\">'django.contrib.admin'</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/3.1/ref/"}],"prev":{"docname":"ref/index","title":"Acuan API","url":"/id/3.1/ref/"},"next":{"docname":"ref/checks","title":"Kerangka pemeriksaan sistem","url":"/id/3.1/ref/checks/"},"formats":{"html":"/id/3.1/ref/applications/","markdown":"/id/3.1/ref/applications.md","json":"/id/3.1/ref/applications.json"},"source":"https://github.com/django/django/blob/stable/3.1.x/docs/ref/applications.txt","official":"https://docs.djangoproject.com/id/3.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"]}