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",
]
The customization above adds resolve() and
reverse() to the default namespace, which already includes
all models from the apps listed in INSTALLED_APPS plus what is
imported by default. These objects will be available in the shell without
requiring a manual import.
Menjalankan perintah penyesuaian shell ini dengan verbosity=2 akan menampilkan:
13 objects imported automatically:
from django.db import connection, reset_queries, models
from django.conf import settings
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
from django.utils import timezone
Automatic imports of common utilities, such as django.conf.settings,
were added.
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