shell
命令¶Django的 shell
是一个交互式Python环境,提供对模型和设置的访问,使其对于测试代码、实验查询以及与应用程序数据交互很有用。
自定义 shell
命令允许添加额外功能或预加载特定模块。为此,请创建一个新的管理命令,该命令将其进行子分类 django.core.management.commands.shell.Command
并覆盖现有的 shell
管理命令。有关详细信息,请参阅 overriding commands .
要自定义的自动导入行为 shell
管理命令,重写 get_auto_imports()
法此方法应该返回应用程序中可用的对象或模块的导入路径序列。例如:
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",
]
上面的定制添加了 resolve()
和 reverse()
到默认命名空间,该命名空间已包括中列出的应用程序中的所有型号 INSTALLED_APPS
.这些对象将在 shell
无需手动导入。
运行这个定制的 shell
命令与 verbosity=2
会显示:
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
如果被覆盖 shell
命令包含无法导入的路径,则当 verbosity
设置为 1
或更高.重复的导入会自动处理。
请注意,可以针对特定的禁用自动导入 shell
使用 --no-imports
旗要永久禁用自动导入,请覆盖 get_auto_imports()
返回 None
class Command(shell.Command):
def get_auto_imports(self):
return None
5月 28, 2025