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