Bagaimana menyesuaikan perintah shell
¶
shell
Django adalah lingkungan interaktif Python yang menyediakan akses ke model dan pengaturean, membuatnya berguna untuk pengujian kode, bereksperimen dengan permintaan, dan berinteraksi dengan data aplikasi.
Menyesuaikan perintah shell
mengizinkan menambahkan kegunaan tambahan atau pra-muat modul khusus. Untuk melakukan ini, buat perintah pengelolaan baru yang mensubkelaskan django.core.management.commands.shell.Command
dan menimpan perintah pengelolaan yang ada shell
. Untuk rincian lebih, mengacu pada guide on overriding commands.
Penyesuaian impor otomatis¶
Untuk menyesuaikan perilaku impor otomatis dari perintah pengelolaan shell
, timpa metode get_auto_imports()
. Metode ini harus mengembalikan urutan jalur impor untuk objek atau modul tersedia di aplikasi. Sebagai contoh:
polls/management/commands/shell.py
¶from django.core.management.commands import shell
class Command(shell.Command):
def get_auto_imports(self):
return super().get_auto_imports() + [
"django.urls.reverse",
"django.urls.resolve",
]
Penyesuaian diatas menambahkan resolve()
dan reverse()
ke namespace awalan, yang sudah menyertakan semua models dari aplikasi terdaftar dalam INSTALLED_APPS
. Objek-objek ini akan tersedia dalam shell
tanpa membutuhkan impor manual.
Menjalankan perintah penyesuaian shell
ini dengan verbosity=2
akan menampilkan:
8 objects imported automatically:
from django.contrib.admin.models import LogEntry
from django.contrib.auth.models import Group, Permission, User
from django.contrib.contenttypes.models import ContentType
from django.contrib.sessions.models import Session
from django.urls import resolve, reverse
Jika perintah shell
yang ditimpa menyertakan jalur yang tidak dapat diimpor, kesalahan-kesalahan ini ditampilkan ketika verbosity
disetel menjadi 1
atau lebih tinggi. Impor ganda otomatis ditangani.
Catat bahwa impor otomatis dapat ditiadakan untuk sesi shell
khusus menggunakan bendera --no-imports
. Untuk meniadakan secara tetap impor otomatis, timpa get_auto_imports()
untuk kembalian None
:
class Command(shell.Command):
def get_auto_imports(self):
return None