{"title":"Menulis perintah django-admin penyesuaian","version":"1.9","locale":"id","docname":"howto/custom-management-commands","url":"/id/1.9/howto/custom-management-commands/","canonical":"https://djangodocs.dev/id/1.9/howto/custom-management-commands/","summary":"Aplikasi dapat mendaftarkan tindakan mereka sendiri dengan manage.py . Sebagai contoh, anda mungkin ingin menambahkan sebuah tindakan manage.py untuk sebuah…","html":"<span id=\"writing-custom-django-admin-commands\"></span><h1>Menulis perintah <code class=\"docutils literal notranslate\"><span class=\"pre\">django-admin</span></code> penyesuaian<a class=\"heading-anchor\" href=\"#module-django.core.management\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Aplikasi dapat mendaftarkan tindakan mereka sendiri dengan <code class=\"docutils literal notranslate\"><span class=\"pre\">manage.py</span></code>. Sebagai contoh, anda mungkin ingin menambahkan sebuah tindakan <code class=\"docutils literal notranslate\"><span class=\"pre\">manage.py</span></code> untuk sebuah aplikasi Django yang anda sedang sebarkan. Dalam dokumen ini, kami akan membangun sebuah penyesuaian perintah <code class=\"docutils literal notranslate\"><span class=\"pre\">closepoll</span></code> untuk aplikasi <code class=\"docutils literal notranslate\"><span class=\"pre\">polls</span></code> dari <a class=\"reference internal\" href=\"/id/1.9/intro/tutorial01/\"><span class=\"doc\">tutorial</span></a>.</p>\n<p>Untuk melakukan ini, tambahkan direktori <code class=\"docutils literal notranslate\"><span class=\"pre\">management/commands</span></code> ke aplikasi. Django akan mendaftarkan sebuah perintah <code class=\"docutils literal notranslate\"><span class=\"pre\">manage.py</span></code> untuk setiap modul Python dalam direktori tersebut yang namanya tidak dimulai dengan garis bawah. Sebagai 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=\"n\">polls</span><span class=\"o\">/</span>\n    <span class=\"fm\">__init__</span><span class=\"o\">.</span><span class=\"n\">py</span>\n    <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">py</span>\n    <span class=\"n\">management</span><span class=\"o\">/</span>\n        <span class=\"fm\">__init__</span><span class=\"o\">.</span><span class=\"n\">py</span>\n        <span class=\"n\">commands</span><span class=\"o\">/</span>\n            <span class=\"fm\">__init__</span><span class=\"o\">.</span><span class=\"n\">py</span>\n            <span class=\"n\">_private</span><span class=\"o\">.</span><span class=\"n\">py</span>\n            <span class=\"n\">closepoll</span><span class=\"o\">.</span><span class=\"n\">py</span>\n    <span class=\"n\">tests</span><span class=\"o\">.</span><span class=\"n\">py</span>\n    <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">py</span>\n</code></pre></div>\n<p>Pada Python 2, pastika menyertakan berkas <code class=\"docutils literal notranslate\"><span class=\"pre\">__init__.py</span></code> dalam kedua direktori <code class=\"docutils literal notranslate\"><span class=\"pre\">management</span></code> dan <code class=\"docutils literal notranslate\"><span class=\"pre\">management/commands</span></code> seperti yang dilakukan diatas atau perintah anda tidak akan ditemukan.</p>\n<p>Dalam contoh ini, perintah <code class=\"docutils literal notranslate\"><span class=\"pre\">closepoll</span></code> akan dibuat tersedia pada setiap proyek yang menyertakan aplikasi <code class=\"docutils literal notranslate\"><span class=\"pre\">polls</span></code> dalam <a class=\"reference internal\" href=\"/id/1.9/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>Modul <code class=\"docutils literal notranslate\"><span class=\"pre\">_private.py</span></code> tidak akan tersedia sebagai perintah pengelolaan.</p>\n<p>Modul <code class=\"docutils literal notranslate\"><span class=\"pre\">closepoll.py</span></code> mempunyai hanya satu persyaratan -- itu harus ditentukan sebuah kelas <code class=\"docutils literal notranslate\"><span class=\"pre\">Command</span></code> yang memperpanjang <a class=\"reference internal\" href=\"#django.core.management.BaseCommand\" title=\"django.core.management.BaseCommand\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">BaseCommand</span></code></a> atau satu dari <a class=\"reference internal\" href=\"#ref-basecommand-subclasses\"><span class=\"std std-ref\">subclasses</span></a> nya.</p>\n<aside class=\"admonition-standalone-scripts admonition\">\n<p class=\"admonition-title\">Tulisan berdiri sendiri</p>\n<p>Penyesuaian pengelolaan perintah adalah khususnya berguna untuk menjalankan tulisan berdiri sendiri atau untuk tulisan yang secara berkala dijalankan dari panel kendali UNIX crontab atau Windows  scheduled tasks.</p>\n</aside>\n<p>Untuk menerapkan perintah, sunting <code class=\"docutils literal notranslate\"><span class=\"pre\">polls/management/commands/closepoll.py</span></code> untuk kelihatan seperti ini:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.core.management.base</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">BaseCommand</span><span class=\"p\">,</span> <span class=\"n\">CommandError</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">polls.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Question</span> <span class=\"k\">as</span> <span class=\"n\">Poll</span>\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Command</span><span class=\"p\">(</span><span class=\"n\">BaseCommand</span><span class=\"p\">):</span>\n    <span class=\"n\">help</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;Closes the specified poll for voting&#39;</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">add_arguments</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">parser</span><span class=\"p\">):</span>\n        <span class=\"n\">parser</span><span class=\"o\">.</span><span class=\"n\">add_argument</span><span class=\"p\">(</span><span class=\"s1\">&#39;poll_id&#39;</span><span class=\"p\">,</span> <span class=\"n\">nargs</span><span class=\"o\">=</span><span class=\"s1\">&#39;+&#39;</span><span class=\"p\">,</span> <span class=\"nb\">type</span><span class=\"o\">=</span><span class=\"nb\">int</span><span class=\"p\">)</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">handle</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">options</span><span class=\"p\">):</span>\n        <span class=\"k\">for</span> <span class=\"n\">poll_id</span> <span class=\"ow\">in</span> <span class=\"n\">options</span><span class=\"p\">[</span><span class=\"s1\">&#39;poll_id&#39;</span><span class=\"p\">]:</span>\n            <span class=\"k\">try</span><span class=\"p\">:</span>\n                <span class=\"n\">poll</span> <span class=\"o\">=</span> <span class=\"n\">Poll</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"n\">pk</span><span class=\"o\">=</span><span class=\"n\">poll_id</span><span class=\"p\">)</span>\n            <span class=\"k\">except</span> <span class=\"n\">Poll</span><span class=\"o\">.</span><span class=\"n\">DoesNotExist</span><span class=\"p\">:</span>\n                <span class=\"k\">raise</span> <span class=\"n\">CommandError</span><span class=\"p\">(</span><span class=\"s1\">&#39;Poll &quot;</span><span class=\"si\">%s</span><span class=\"s1\">&quot; does not exist&#39;</span> <span class=\"o\">%</span> <span class=\"n\">poll_id</span><span class=\"p\">)</span>\n\n            <span class=\"n\">poll</span><span class=\"o\">.</span><span class=\"n\">opened</span> <span class=\"o\">=</span> <span class=\"kc\">False</span>\n            <span class=\"n\">poll</span><span class=\"o\">.</span><span class=\"n\">save</span><span class=\"p\">()</span>\n\n            <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">stdout</span><span class=\"o\">.</span><span class=\"n\">write</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">style</span><span class=\"o\">.</span><span class=\"n\">SUCCESS</span><span class=\"p\">(</span><span class=\"s1\">&#39;Successfully closed poll &quot;</span><span class=\"si\">%s</span><span class=\"s1\">&quot;&#39;</span> <span class=\"o\">%</span> <span class=\"n\">poll_id</span><span class=\"p\">))</span>\n</code></pre></div>\n<aside class=\"version-note version-changed\" data-version=\"1.8\">\n<p class=\"version-note-title\">Changed in Django 1.8</p><p>Sebelum Django 1.8, pengelolaan perintah berdasarkan pada modul <a class=\"reference external\" href=\"https://docs.python.org/3/library/optparse.html#module-optparse\" title=\"(di Python v3.14)\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">optparse</span></code></a>, dan penempatan argumen dilewati dalam <code class=\"docutils literal notranslate\"><span class=\"pre\">*args</span></code> selama argumen pilihan dilewati dalam <code class=\"docutils literal notranslate\"><span class=\"pre\">**options</span></code>. Sekarang pengelolaan perintah tersebut menggunakan <a class=\"reference external\" href=\"https://docs.python.org/3/library/argparse.html#module-argparse\" title=\"(di Python v3.14)\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">argparse</span></code></a> untuk menguraikan argumen, semua argumen dilewati dalam <code class=\"docutils literal notranslate\"><span class=\"pre\">**options</span></code> secara awal, meskipun nama anda penempatan argumen anda pada <code class=\"docutils literal notranslate\"><span class=\"pre\">args</span></code> (suasana kesesuaian). Anda dianjurkan secara eksklusif menggunakan <code class=\"docutils literal notranslate\"><span class=\"pre\">**options</span></code> untuk perintah baru.</p>\n</aside>\n<aside class=\"admonition admonition-note\" id=\"management-commands-output\" role=\"note\">\n<p class=\"admonition-title\">Catatan</p>\n<p>Ketika anda menggunakan pengelolaan perintah dan berharap untuk menyediakan keluaran tempat tuts, anda harus menulis ke <code class=\"docutils literal notranslate\"><span class=\"pre\">self.stdout</span></code> dan <code class=\"docutils literal notranslate\"><span class=\"pre\">self.stderr</span></code>, daripada mencetak ke <code class=\"docutils literal notranslate\"><span class=\"pre\">stdout</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">stderr</span></code> secara langsung. Dengan menggunakan proxi ini, dia menjadi lebih mudah untuk mencoba penyesuaian perintah anda. Catat juga bahwa anda tidak butuh mengakhiri pesan dengan karakter baris baru, dia akan ditambahkan otomatis, meskipun anda menentukan parameter <code class=\"docutils literal notranslate\"><span class=\"pre\">ending</span></code>:</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=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">stdout</span><span class=\"o\">.</span><span class=\"n\">write</span><span class=\"p\">(</span><span class=\"s2\">&quot;Unterminated line&quot;</span><span class=\"p\">,</span> <span class=\"n\">ending</span><span class=\"o\">=</span><span class=\"s1\">&#39;&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n</aside>\n<p>Perintah penyesuaian baru dapat dipanggil menggunakan <code class=\"docutils literal notranslate\"><span class=\"pre\">python</span> <span class=\"pre\">manage.py</span> <span class=\"pre\">closepoll</span> <span class=\"pre\">&lt;poll_id&gt;</span></code>.</p>\n<p>The <code class=\"docutils literal notranslate\"><span class=\"pre\">handle()</span></code> method takes one or more <code class=\"docutils literal notranslate\"><span class=\"pre\">poll_ids</span></code> and sets <code class=\"docutils literal notranslate\"><span class=\"pre\">poll.opened</span></code>\nto <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> for each one. If the user referenced any nonexistent polls, a\n<a class=\"reference internal\" href=\"#django.core.management.CommandError\" title=\"django.core.management.CommandError\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">CommandError</span></code></a> is raised. The <code class=\"docutils literal notranslate\"><span class=\"pre\">poll.opened</span></code> attribute does not exist in\nthe <a class=\"reference internal\" href=\"/id/1.9/intro/tutorial01/\"><span class=\"doc\">tutorial</span></a> and was added to\n<code class=\"docutils literal notranslate\"><span class=\"pre\">polls.models.Question</span></code> for this example.</p>\n<section id=\"accepting-optional-arguments\">\n<span id=\"custom-commands-options\"></span><h2>Menerima argumen pilihan<a class=\"heading-anchor\" href=\"#accepting-optional-arguments\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">closepoll</span></code> yang sama dapat dengan mudah dirubah untuk menghapus jejak pendapat yang diberikan daripada menutupnya dengan menerima tambahan pilihan baris perintah. Penyesuaian pilihan ini dapat ditambahkan dalam cara <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.add_arguments\" title=\"django.core.management.BaseCommand.add_arguments\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">add_arguments()</span></code></a> seperti ini:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Command</span><span class=\"p\">(</span><span class=\"n\">BaseCommand</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">add_arguments</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">parser</span><span class=\"p\">):</span>\n        <span class=\"c1\"># Positional arguments</span>\n        <span class=\"n\">parser</span><span class=\"o\">.</span><span class=\"n\">add_argument</span><span class=\"p\">(</span><span class=\"s1\">&#39;poll_id&#39;</span><span class=\"p\">,</span> <span class=\"n\">nargs</span><span class=\"o\">=</span><span class=\"s1\">&#39;+&#39;</span><span class=\"p\">,</span> <span class=\"nb\">type</span><span class=\"o\">=</span><span class=\"nb\">int</span><span class=\"p\">)</span>\n\n        <span class=\"c1\"># Named (optional) arguments</span>\n        <span class=\"n\">parser</span><span class=\"o\">.</span><span class=\"n\">add_argument</span><span class=\"p\">(</span>\n            <span class=\"s1\">&#39;--delete&#39;</span><span class=\"p\">,</span>\n            <span class=\"n\">action</span><span class=\"o\">=</span><span class=\"s1\">&#39;store_true&#39;</span><span class=\"p\">,</span>\n            <span class=\"n\">dest</span><span class=\"o\">=</span><span class=\"s1\">&#39;delete&#39;</span><span class=\"p\">,</span>\n            <span class=\"n\">default</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">,</span>\n            <span class=\"n\">help</span><span class=\"o\">=</span><span class=\"s1\">&#39;Delete poll instead of closing it&#39;</span><span class=\"p\">,</span>\n        <span class=\"p\">)</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">handle</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">options</span><span class=\"p\">):</span>\n        <span class=\"c1\"># ...</span>\n        <span class=\"k\">if</span> <span class=\"n\">options</span><span class=\"p\">[</span><span class=\"s1\">&#39;delete&#39;</span><span class=\"p\">]:</span>\n            <span class=\"n\">poll</span><span class=\"o\">.</span><span class=\"n\">delete</span><span class=\"p\">()</span>\n        <span class=\"c1\"># ...</span>\n</code></pre></div>\n<aside class=\"version-note version-changed\" data-version=\"1.8\">\n<p class=\"version-note-title\">Changed in Django 1.8</p><p>Sebelumnya, hanya pustaka <a class=\"reference external\" href=\"https://docs.python.org/3/library/optparse.html#module-optparse\" title=\"(di Python v3.14)\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">optparse</span></code></a> standar yang didukung dan anda harus memperpanjang perintah variabel <code class=\"docutils literal notranslate\"><span class=\"pre\">option_list</span></code> dengan <code class=\"docutils literal notranslate\"><span class=\"pre\">optparse.make_option()</span></code>.</p>\n</aside>\n<p>Pilihan (<code class=\"docutils literal notranslate\"><span class=\"pre\">delete</span></code> dalam contoh kami) tersedia dalam pilihan parameter perintah dari cara penanganan. Lihat dokumentasi Python <a class=\"reference external\" href=\"https://docs.python.org/3/library/argparse.html#module-argparse\" title=\"(di Python v3.14)\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">argparse</span></code></a> untuk lebih tentang penggunaan <code class=\"docutils literal notranslate\"><span class=\"pre\">add_argument</span></code>.</p>\n<p>Dalam tambahan untuk dapat menambahkan penyesuaian pilihan baris perintah, semua <a class=\"reference internal\" href=\"/id/1.9/ref/django-admin/\"><span class=\"doc\">pengelolaan perintah</span></a> dapat menerima beberapa pilihan awal seperti <a class=\"reference internal\" href=\"/id/1.9/ref/django-admin/#cmdoption-verbosity\"><code class=\"xref std std-option docutils literal notranslate\"><span class=\"pre\">--verbosity</span></code></a> dan <a class=\"reference internal\" href=\"/id/1.9/ref/django-admin/#cmdoption-traceback\"><code class=\"xref std std-option docutils literal notranslate\"><span class=\"pre\">--traceback</span></code></a>.</p>\n</section>\n<section id=\"management-commands-and-locales\">\n<span id=\"id1\"></span><h2>Pengelolaan perintah dan lokal<a class=\"heading-anchor\" href=\"#management-commands-and-locales\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Secara awal, cara <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.execute\" title=\"django.core.management.BaseCommand.execute\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">BaseCommand.execute()</span></code></a> menonaktifkan terjemahan karena beberapa perintah dikemas dengan Django melakukan beberapa tugas (sebagai contoh, membangun isi pengguna muka dan mengumpulkan basisdata) yang membutuhkan bahasa deretan karakter proyek-netral.</p>\n<aside class=\"version-note version-changed\" data-version=\"1.8\">\n<p class=\"version-note-title\">Changed in Django 1.8</p><p>Dalam versi sebelumnya, Django memaksa lokal &quot;en-us&quot; daripada meniadakan terjemahan.</p>\n</aside>\n<p>Jika, untuk beberapa alasan, penyesuaian pengelolaan perintah anda butuh menggunakan lokal yang tetap, anda harus secara manual mengaktif dan menonaktifkannya dalam cara <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.handle\" title=\"django.core.management.BaseCommand.handle\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">handle()</span></code></a> anda menggunakan fungsi disediakan oleh dukungan kode I18N:</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.core.management.base</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">BaseCommand</span><span class=\"p\">,</span> <span class=\"n\">CommandError</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">translation</span>\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Command</span><span class=\"p\">(</span><span class=\"n\">BaseCommand</span><span class=\"p\">):</span>\n    <span class=\"o\">...</span>\n    <span class=\"n\">can_import_settings</span> <span class=\"o\">=</span> <span class=\"kc\">True</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">handle</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">options</span><span class=\"p\">):</span>\n\n        <span class=\"c1\"># Activate a fixed locale, e.g. Russian</span>\n        <span class=\"n\">translation</span><span class=\"o\">.</span><span class=\"n\">activate</span><span class=\"p\">(</span><span class=\"s1\">&#39;ru&#39;</span><span class=\"p\">)</span>\n\n        <span class=\"c1\"># Or you can activate the LANGUAGE_CODE # chosen in the settings:</span>\n        <span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.conf</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">settings</span>\n        <span class=\"n\">translation</span><span class=\"o\">.</span><span class=\"n\">activate</span><span class=\"p\">(</span><span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">LANGUAGE_CODE</span><span class=\"p\">)</span>\n\n        <span class=\"c1\"># Your command logic here</span>\n        <span class=\"o\">...</span>\n\n        <span class=\"n\">translation</span><span class=\"o\">.</span><span class=\"n\">deactivate</span><span class=\"p\">()</span>\n</code></pre></div>\n<p>Kebutuhan lainnya mungkin bahwa perintah anda dengan mudah harus menggunakan kumpulan lokal dalam pengaturan dan Django harus dijaga dari penonaktifannya. Anda dapat mencapainya dengan menggunakan pilihan <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.leave_locale_alone\" title=\"django.core.management.BaseCommand.leave_locale_alone\"><code class=\"xref py py-data docutils literal notranslate\"><span class=\"pre\">BaseCommand.leave_locale_alone</span></code></a>.</p>\n<p>Ketika bekerja pada skenario yang digambarkan diatas, perhatikan akun yang sistem pengelolaan perintah khususnya harus sangat waspada tentang berjalan dalam lokal yang tidak seragam, jadi anda mungkin butuh untuk:</p>\n<ul class=\"simple\">\n<li><p>Pastikan pengaturan <a class=\"reference internal\" href=\"/id/1.9/ref/settings/#std-setting-USE_I18N\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_I18N</span></code></a> selalu <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> ketika menjalankan perintah (ini adalah contoh bagus dari potensial masalah berasal dari sebuah lingkungan waktu berjalan dinamis dimana perintah Django menghindari begitu saja dengan menonaktifkan terjemahan).</p></li>\n<li><p>Tinjau kode dari perintah anda dan kode dipanggil untuk perbedaan perilaku ketika lokal dirubah dan dinilai dampaknya pada perkiraan kebiasaan dari perintah anda.</p></li>\n</ul>\n</section>\n<section id=\"testing\">\n<h2>Pengujian<a class=\"heading-anchor\" href=\"#testing\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Informasi pada bagaimana untuk mencoba penyesuaian pengelolaan perintah dapat ditemukan dalam <a class=\"reference internal\" href=\"/id/1.9/topics/testing/tools/#topics-testing-management-commands\"><span class=\"std std-ref\">dokumen percobaan</span></a>.</p>\n</section>\n<section id=\"command-objects\">\n<h2>Obyek perintah<a class=\"heading-anchor\" href=\"#command-objects\"><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.core.management.BaseCommand\">\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\">BaseCommand</span></span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Kelas dasar dari mana semua pengelolaan perintah akhirnya berasal.</p>\n<p>Gunakan kelas ini jika anda ingin mengakses semua mekanisme yang mengurai argumen baris perintah dan bekerja kode apa untuk dipanggil dalam tanggapan; jika anda tidak butuh merubah kebiasaan apapun, pertimbangkan menggunakan satu dari <a class=\"reference internal\" href=\"#ref-basecommand-subclasses\"><span class=\"std std-ref\">subclasses</span></a> nya.</p>\n<p>Mensubkelaskan kelas <a class=\"reference internal\" href=\"#django.core.management.BaseCommand\" title=\"django.core.management.BaseCommand\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">BaseCommand</span></code></a> membutuhkan bahwa anda menerapkan cara <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.handle\" title=\"django.core.management.BaseCommand.handle\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">handle()</span></code></a>.</p>\n<section id=\"attributes\">\n<h3>Atribut<a class=\"heading-anchor\" href=\"#attributes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Semua atribut dapat di setel dalam kelas turunan anda dan dapat digunakan dalam <a class=\"reference internal\" href=\"#ref-basecommand-subclasses\"><span class=\"std std-ref\">subclasses</span></a> <a class=\"reference internal\" href=\"#django.core.management.BaseCommand\" title=\"django.core.management.BaseCommand\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">BaseCommand</span></code></a>.</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.args\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseCommand.</span></span><span class=\"sig-name descname\"><span class=\"pre\">args</span></span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.args\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Daftar deretan karakter argumen yang diterima oleh perintah, cocok untuk digunakan dalam pesan bantuan; sebagai contoh, sebuah perintah yang mengambil daftar nama aplikasi mungkin disetel ini menjadi '&lt;app_label app_label ...&gt;'.</p>\n<aside class=\"version-note version-deprecated\" data-version=\"1.8\">\n<p class=\"version-note-title\">Deprecated since Django 1.8</p><p><span class=\"versionmodified deprecated\">Ditinggalkan sejak versi 1.8: </span>Ini seharusnya selesai sekarang dalam cara <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.add_arguments\" title=\"django.core.management.BaseCommand.add_arguments\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">add_arguments()</span></code></a>, dengan memanggil cara <code class=\"docutils literal notranslate\"><span class=\"pre\">parser.add_argument()</span></code>. Lihat coontoh <code class=\"docutils literal notranslate\"><span class=\"pre\">closepoll</span></code> diatas.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.can_import_settings\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseCommand.</span></span><span class=\"sig-name descname\"><span class=\"pre\">can_import_settings</span></span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.can_import_settings\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Sebuah boolean menunjukkan apakah perintah butuh dapat mengimpor pengaturan Django; jika <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">execute()</span></code> akan memeriksa bahwa ini dimungkinkan sebelum dilanjutkan. Nilai awal adalah <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.help\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseCommand.</span></span><span class=\"sig-name descname\"><span class=\"pre\">help</span></span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.help\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Deskripsi singkat dari perintah, dimana akan ditampilkan di pesan bantuan ketika pengguna eksekusi perintah <code class=\"docutils literal notranslate\"><span class=\"pre\">python</span> <span class=\"pre\">manage.py</span> <span class=\"pre\">help</span> <span class=\"pre\">&lt;command&gt;</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.missing_args_message\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseCommand.</span></span><span class=\"sig-name descname\"><span class=\"pre\">missing_args_message</span></span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.missing_args_message\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"1.8\">\n<p class=\"version-note-title\">New in Django 1.8</p></aside>\n<p>Jika perintah anda menentukan argumen penempatan wajib, anda dapat menyesuaiakan pesan kesalahan yang dikembalikan dalam kasus argumen yang hilang. Awalnya adalah keluaran oleh <a class=\"reference external\" href=\"https://docs.python.org/3/library/argparse.html#module-argparse\" title=\"(di Python v3.14)\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">argparse</span></code></a> (&quot;terlalu sedikit argumen&quot;).</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.option_list\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseCommand.</span></span><span class=\"sig-name descname\"><span class=\"pre\">option_list</span></span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.option_list\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ini adalah daftar dari pilihan <code class=\"docutils literal notranslate\"><span class=\"pre\">optparse</span></code> yang akan diberi makan kedalam perintah <code class=\"docutils literal notranslate\"><span class=\"pre\">OptionParser</span></code> untuk mengurai argumen.</p>\n<aside class=\"version-note version-deprecated\" data-version=\"1.8\">\n<p class=\"version-note-title\">Deprecated since Django 1.8</p><p><span class=\"versionmodified deprecated\">Ditinggalkan sejak versi 1.8: </span>Anda harus sekarang mengesampingkan cara <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.add_arguments\" title=\"django.core.management.BaseCommand.add_arguments\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">add_arguments()</span></code></a> untuk menambahkan penyesuaian argumen yang diterima oleh perintah anda. Lihat <a class=\"reference internal\" href=\"#custom-commands-options\"><span class=\"std std-ref\">contoh diatas</span></a>.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.output_transaction\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseCommand.</span></span><span class=\"sig-name descname\"><span class=\"pre\">output_transaction</span></span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.output_transaction\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Sebuah boolean menunjukkan apakah perintah keluaran pernyataan SQL; jika <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, keluaran akan otomatis dibungkus dengan <code class=\"docutils literal notranslate\"><span class=\"pre\">BEGIN;</span></code> dan <code class=\"docutils literal notranslate\"><span class=\"pre\">COMMIT;</span></code>. Nilai awal adalah <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.requires_system_checks\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseCommand.</span></span><span class=\"sig-name descname\"><span class=\"pre\">requires_system_checks</span></span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.requires_system_checks\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Sebuah boolean; jika <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, seluruh proyek Django akan diperiksa untuk masalah potensial sebelum menjalankan perintah. Nilai awal adalah <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.leave_locale_alone\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseCommand.</span></span><span class=\"sig-name descname\"><span class=\"pre\">leave_locale_alone</span></span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.leave_locale_alone\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Sebuah boolean menunjukkan apakah kumpulan lokal dalam pengaturan harus dipertahankan selama menjalankan dari program daripada dipaksa disetel menjadi 'en-us'.</p>\n<p>Nilai awal adalah <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p>\n<p>Pastikan anda mengetahui apa yang anda sedang mengerjakan jika anda memutuskan nilai dari pilihan ini dalam penyesuaian perintah anda jika dia dibuat basisdata yang bersifat sensitif-lokal dan isi seperti itu tidak harus mengandung terjemahan apapun (seperti itu terjadi sebagai contoh dengan django.contrib.auth permissions) ketika membuat perbedaan lokal dari standar sebenarnya 'en-us' mungkin menyebabkan efek yang tidak diinginkan. Lihat bagian <a class=\"reference internal\" href=\"#id1\">Management commands and locales</a> diatas untuk lebih lanjut.</p>\n<p>Pilihan ini tidak dapat <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> ketika pilihan <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.can_import_settings\" title=\"django.core.management.BaseCommand.can_import_settings\"><code class=\"xref py py-data docutils literal notranslate\"><span class=\"pre\">can_import_settings</span></code></a> disetel menjadi <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> juga karena mencoba menyetel lokal butuh akses ke pengaturan. Kondisi ini akan membangkitkan sebuah <a class=\"reference internal\" href=\"#django.core.management.CommandError\" title=\"django.core.management.CommandError\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">CommandError</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.style\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseCommand.</span></span><span class=\"sig-name descname\"><span class=\"pre\">style</span></span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.style\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Sebuah atribut instance yang membantu membuat keluaran bewarna ketika menulis ke <code class=\"docutils literal notranslate\"><span class=\"pre\">stdout</span></code> atau <code class=\"docutils literal notranslate\"><span class=\"pre\">stderr</span></code>. Sebagai 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=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">stdout</span><span class=\"o\">.</span><span class=\"n\">write</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">style</span><span class=\"o\">.</span><span class=\"n\">SUCCESS</span><span class=\"p\">(</span><span class=\"s1\">&#39;...&#39;</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>Lihat <a class=\"reference internal\" href=\"/id/1.9/ref/django-admin/#syntax-coloring\"><span class=\"std std-ref\">Syntax coloring</span></a> untuk mempelajari bagaimana merubah papan warna dan melihat gaya tersedia (gunakan versi huruf besar dari &quot;roles&quot; yang digambarkan dalam bagian itu).</p>\n<p>Jika anda melewati pilihan <a class=\"reference internal\" href=\"/id/1.9/ref/django-admin/#cmdoption-no-color\"><code class=\"xref std std-option docutils literal notranslate\"><span class=\"pre\">--no-color</span></code></a> ketika menjalankan perintah anda, semua pemanggilan <code class=\"docutils literal notranslate\"><span class=\"pre\">self.style()</span></code> akan mengembalikan deretan karakter asli tidak bewarna.</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<p><a class=\"reference internal\" href=\"#django.core.management.BaseCommand\" title=\"django.core.management.BaseCommand\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">BaseCommand</span></code></a> mempunyai beberapa cara yang dapat dikesampingkan tetapi hanya cara <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.handle\" title=\"django.core.management.BaseCommand.handle\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">handle()</span></code></a> harus diterapkan.</p>\n<aside class=\"admonition-implementing-a-constructor-in-a-subclass admonition\">\n<p class=\"admonition-title\">Menerapkan constructor dalam subkelas</p>\n<p>Jika anda menerapkan <code class=\"docutils literal notranslate\"><span class=\"pre\">__init__</span></code> dalam subkelas anda dari <a class=\"reference internal\" href=\"#django.core.management.BaseCommand\" title=\"django.core.management.BaseCommand\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">BaseCommand</span></code></a>, anda harus memanggil <code class=\"docutils literal notranslate\"><span class=\"pre\">__init__</span></code> dari :class:<a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>BaseCommand:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Command</span><span class=\"p\">(</span><span class=\"n\">BaseCommand</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">):</span>\n        <span class=\"nb\">super</span><span class=\"p\">(</span><span class=\"n\">Command</span><span class=\"p\">,</span> <span class=\"bp\">self</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">)</span>\n        <span class=\"c1\"># ...</span>\n</code></pre></div>\n</aside>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.add_arguments\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseCommand.</span></span><span class=\"sig-name descname\"><span class=\"pre\">add_arguments</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">parser</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.add_arguments\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"1.8\">\n<p class=\"version-note-title\">New in Django 1.8</p></aside>\n<p>Titik masukan untuk menambahkan pengurai argumen untuk menangani argumen baris perintah dilewati ke perintah. Penyesuaian perintah harus mengesampingkan cara ini untuk menambah kedua argumen penempatan dan pilihan yang diterima oleh perintah. Memanggil <code class=\"docutils literal notranslate\"><span class=\"pre\">super()</span></code> tidak dibutuhkan ketika pengsubkelasan secara langsung <code class=\"docutils literal notranslate\"><span class=\"pre\">BaseCommand</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.get_version\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseCommand.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_version</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.get_version\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Mengembalikan versi Django, yang seharusnya benar untuk semua perintah Django siap pakai. Perintah pasokan-pengguna dapat mengesampingkan cara ini untuk mengembalikan versi mereka sendiri.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.execute\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseCommand.</span></span><span class=\"sig-name descname\"><span class=\"pre\">execute</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">options</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.execute\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Coba untuk menjalankan perintah ini, melakukan pemeriksaan sistem jika dibutuhkan (sebagai pengendalian oleh <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.requires_system_checks\" title=\"django.core.management.BaseCommand.requires_system_checks\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">requires_system_checks</span></code></a> attribute). Jika perintah muncul sebuah <a class=\"reference internal\" href=\"#django.core.management.CommandError\" title=\"django.core.management.CommandError\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">CommandError</span></code></a>, Dia dicegat dan dicetak ke stderr.</p>\n</dd></dl>\n\n<aside class=\"admonition-calling-a-management-command-in-your-code admonition\">\n<p class=\"admonition-title\">Memanggil perintah pengelolaan di kode anda</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">execute()</span></code> jangan dipanggil secara langsung dari kode anda untuk menjalankan sebuah perintah. Lebih baik gunakan <a class=\"reference internal\" href=\"/id/1.9/ref/django-admin/#django.core.management.call_command\" title=\"django.core.management.call_command\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">call_command()</span></code></a>.</p>\n</aside>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.handle\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseCommand.</span></span><span class=\"sig-name descname\"><span class=\"pre\">handle</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">options</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.handle\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Logika sebenarnya dari perintah. Subkelas harus menerapkan cara ini.</p>\n<p>Dia mungkin mengembalikan sebuah deretan karakter Unicode yang akan dicetak ke <code class=\"docutils literal notranslate\"><span class=\"pre\">stdout</span></code> (dibungkus oleh <code class=\"docutils literal notranslate\"><span class=\"pre\">BEGIN;</span></code> dan <code class=\"docutils literal notranslate\"><span class=\"pre\">COMMIT;</span></code> jika <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.output_transaction\" title=\"django.core.management.BaseCommand.output_transaction\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">output_transaction</span></code></a> adalah <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>).</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.BaseCommand.check\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseCommand.</span></span><span class=\"sig-name descname\"><span class=\"pre\">check</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">app_configs</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">tags</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">display_num_errors</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.management.BaseCommand.check\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Gunakan kerangka pemeriksaan sistem untuk memeriksa keseluruhan proyek Django untuk masalah potensial. Masalah serius muncul seperti sebuah <a class=\"reference internal\" href=\"#django.core.management.CommandError\" title=\"django.core.management.CommandError\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">CommandError</span></code></a>; peringatan dikeluarkan ke stderr; pemberitahuan kecil dikeluarkan pada stdout.</p>\n<p>Jika <code class=\"docutils literal notranslate\"><span class=\"pre\">app_configs</span></code> dan <code class=\"docutils literal notranslate\"><span class=\"pre\">tags</span></code> keduanya <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>, semua pemeriksaan sistem dilakukan. <code class=\"docutils literal notranslate\"><span class=\"pre\">tags</span></code> dapat menjadi daftar dari etiket pemeriksaan, seperti <code class=\"docutils literal notranslate\"><span class=\"pre\">compatibility</span></code> atau <code class=\"docutils literal notranslate\"><span class=\"pre\">models</span></code>.</p>\n</dd></dl>\n\n</section>\n<section id=\"basecommand-subclasses\">\n<span id=\"ref-basecommand-subclasses\"></span><h3>Subkelas <code class=\"docutils literal notranslate\"><span class=\"pre\">BaseCommand</span></code><a class=\"heading-anchor\" href=\"#basecommand-subclasses\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.AppCommand\">\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\">AppCommand</span></span><a class=\"heading-anchor\" href=\"#django.core.management.AppCommand\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Sebuah pengelolaan perintah yang mengambil satu atau lebih label aplikasi terpasang sebagai argumen, dan melakukan sesuatu dengan masing-masing dari mereka.</p>\n<p>Daripada menerapkan <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.handle\" title=\"django.core.management.BaseCommand.handle\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">handle()</span></code></a>,  subkelas harus menerapkan <a class=\"reference internal\" href=\"#django.core.management.AppCommand.handle_app_config\" title=\"django.core.management.AppCommand.handle_app_config\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">handle_app_config()</span></code></a>, yang akan dipanggil sekali untuk setiap aplikasi.</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.AppCommand.handle_app_config\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AppCommand.</span></span><span class=\"sig-name descname\"><span class=\"pre\">handle_app_config</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">app_config</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">options</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.management.AppCommand.handle_app_config\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Melakukan tindakan perintah untuk <code class=\"docutils literal notranslate\"><span class=\"pre\">app_config</span></code>, yang akan menjadi sebuah instance <a class=\"reference internal\" href=\"/id/1.9/ref/applications/#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> terhubung ke sebuah label aplikasi yang diberikan pada baris perintah.</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.LabelCommand\">\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\">LabelCommand</span></span><a class=\"heading-anchor\" href=\"#django.core.management.LabelCommand\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Sebuah pengelolaan perintah yang mengambil satu atau lebih argumen (label) yang berubah-ubah pada baris perintah, dan melakukan sesuatu dengan masing-masing dari mereka.</p>\n<p>Daripada menerapkan <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.handle\" title=\"django.core.management.BaseCommand.handle\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">handle()</span></code></a>,  subkelas harus menerapkan <a class=\"reference internal\" href=\"#django.core.management.LabelCommand.handle_label\" title=\"django.core.management.LabelCommand.handle_label\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">handle_label()</span></code></a>, yang akan dipanggil sekali untuk setiap label.</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.LabelCommand.handle_label\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">LabelCommand.</span></span><span class=\"sig-name descname\"><span class=\"pre\">handle_label</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">label</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">options</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.management.LabelCommand.handle_label\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Melakukan tindakan perintah untuk <code class=\"docutils literal notranslate\"><span class=\"pre\">label</span></code>, yang akan menjadi deretan karakter seperti yang diberikan pada baris perintah.</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.NoArgsCommand\">\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\">NoArgsCommand</span></span><a class=\"heading-anchor\" href=\"#django.core.management.NoArgsCommand\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<aside class=\"version-note version-deprecated\" data-version=\"1.8\">\n<p class=\"version-note-title\">Deprecated since Django 1.8</p><p><span class=\"versionmodified deprecated\">Ditinggalkan sejak versi 1.8: </span>Gunakan <a class=\"reference internal\" href=\"#django.core.management.BaseCommand\" title=\"django.core.management.BaseCommand\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">BaseCommand</span></code></a>, yang tidak mengambil argumen secara awal.</p>\n</aside>\n<p>Sebuah perintah yang tidak mengambil argumen dalam baris perintah.</p>\n<p>Daripada menerapkan <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.handle\" title=\"django.core.management.BaseCommand.handle\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">handle()</span></code></a>,  subkelas harus menerapkan <a class=\"reference internal\" href=\"#django.core.management.NoArgsCommand.handle_noargs\" title=\"django.core.management.NoArgsCommand.handle_noargs\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">handle_noargs()</span></code></a>; <a class=\"reference internal\" href=\"#django.core.management.BaseCommand.handle\" title=\"django.core.management.BaseCommand.handle\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">handle()</span></code></a> itu sendiri dikesampingkan untuk memastikan tidak ada argumen dilewatkan ke perintah.</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.NoArgsCommand.handle_noargs\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">NoArgsCommand.</span></span><span class=\"sig-name descname\"><span class=\"pre\">handle_noargs</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">options</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.management.NoArgsCommand.handle_noargs\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Melakukan tindakan perintah ini</p>\n</dd></dl>\n\n</section>\n<section id=\"command-exceptions\">\n<h3>Perintah pengecualian<a class=\"heading-anchor\" href=\"#command-exceptions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py exception\">\n<dt class=\"sig sig-object py\" id=\"django.core.management.CommandError\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">exception</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">CommandError</span></span><a class=\"heading-anchor\" href=\"#django.core.management.CommandError\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Kelas pengecualian mengindikasikan sebuah masalah selama menjalankan perintah pengelolaan.</p>\n<p>Jika pengecualian ini muncul selama peerjalanan dari pengelolaan perintah dari sebuah perintah baris tempat tuts, dia akan ditangkap dan dirubah menjadi pesan kesalahan tercetak yang bagus ke aliran keluaran yang sesuai (yaitu, stderr); sebagai sebuah hasil, memunculkan pengecualian ini (dengan sebuah gambaran yang mudah dimengerti dari kesalahan) adalah jalan yang dipilih untuk menunjukkan bahwa sesuatu telah salah dalam menjalankan sebuah perintah.</p>\n<p>Jika sebuah pengelolaan perintah dipanggil dari kode melalui <a class=\"reference internal\" href=\"/id/1.9/ref/django-admin/#django.core.management.call_command\" title=\"django.core.management.call_command\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">call_command()</span></code></a>, itu terserah kamu untuk menangkap pengecualian ketika dibutuhkan.</p>\n</section>\n</section>","rootId":"module-django.core.management","toc":[{"title":"Menerima argumen pilihan","anchor":"accepting-optional-arguments","children":[]},{"title":"Pengelolaan perintah dan lokal","anchor":"management-commands-and-locales","children":[]},{"title":"Pengujian","anchor":"testing","children":[]},{"title":"Obyek perintah","anchor":"command-objects","children":[{"title":"Atribut","anchor":"attributes","children":[]},{"title":"Cara","anchor":"methods","children":[]},{"title":"Subkelas BaseCommand","anchor":"basecommand-subclasses","children":[]},{"title":"Perintah pengecualian","anchor":"command-exceptions","children":[]}]}],"breadcrumbs":[{"docname":"howto/index","title":"Panduan \"Bagaimana\"","url":"/id/1.9/howto/"}],"prev":{"docname":"howto/auth-remote-user","title":"Otentikasi menggunakan REMOTE_USER","url":"/id/1.9/howto/auth-remote-user/"},"next":{"docname":"howto/custom-model-fields","title":"Menulis bidang model penyesuaian","url":"/id/1.9/howto/custom-model-fields/"},"formats":{"html":"/id/1.9/howto/custom-management-commands/","markdown":"/id/1.9/howto/custom-management-commands.md","json":"/id/1.9/howto/custom-management-commands.json"},"source":"https://github.com/django/django/blob/stable/1.9.x/docs/howto/custom-management-commands.txt","official":"https://docs.djangoproject.com/id/1.9/howto/custom-management-commands/","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","fr","ja","id","pt-br","es"]}