---
title: "Comment personnaliser la commande shell"
version: 6.0
locale: fr
source: https://docs.djangoproject.com/fr/6.0/howto/custom-shell/
canonical: https://djangodocs.dev/fr/6.0/howto/custom-shell/
---
# Comment personnaliser la commande `shell`

Le [`shell`](/fr/6.0/ref/django-admin/#django-admin-shell) Django est un environnement Python interactif donnant accès aux modèles et aux réglages, ce qui en fait un outil important pour tester du code, expérimenter avec des requêtes ou pour interagir avec les données d’une application.

La personnalisation de la commande [`shell`](/fr/6.0/ref/django-admin/#django-admin-shell) permet d’ajouter des fonctionnalités supplémentaires ou de précharger des modules spécifiques. Pour cela, créez une nouvelle commande d’administration héritant de `django.core.management.commands.shell.Command` et surchargez la commande `shell` existante. Pour plus de détails, référez-vous au guide sur la [surcharge des commandes](/fr/6.0/howto/custom-management-commands/#overriding-commands).

## Personnalisation des importations automatiques

> **New in Django 5.2**

Pour personnaliser le comportement d’importation automatique de la commande d’administration [`shell`](/fr/6.0/ref/django-admin/#django-admin-shell), surchargez la méthode `get_auto_imports()`. Cette méthode doit renvoyer une séquence de chemins d’importation pour des objets et des modules disponibles dans l’application. Par exemple :

*`polls/management/commands/shell.py`*

```python
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",
        ]
```

La personnalisation ci-dessus ajoute [`resolve()`](/fr/6.0/ref/urlresolvers/#django.urls.resolve) and [`reverse()`](/fr/6.0/ref/urlresolvers/#django.urls.reverse) à l’espace de noms par défaut, qui contient déjà tous les modèles des applications présentes dans [`INSTALLED_APPS`](/fr/6.0/ref/settings/#std-setting-INSTALLED_APPS), en plus de ce qui est importé par défaut. Ces objets seront disponibles dans le `shell` sans devoir les importer manuellement.

Le lancement de cette commande `shell` personnalisée avec `verbosity=2` va afficher :

```console
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
```

> **Changed in Django 6.0**
>
> Les importations automatiques d’utilitaires communs, tels que `django.conf.settings`, ont été ajoutées.

Si une commande `shell` personnalisée inclut des chemins qui ne peuvent pas être importés, ces erreurs sont affichées si `verbosity` est à `1` ou plus. Les importations à double sont gérées automatiquement.

Notez que les importations automatiques peuvent être désactivées pour une session `shell` spécifique en utilisant l’option [`--no-imports`](/fr/6.0/ref/django-admin/#cmdoption-shell-no-imports). Pour désactiver les importations automatiques de manière permanente, surchargez `get_auto_imports()` pour qu’elle renvoie `None`:

```
class Command(shell.Command):
    def get_auto_imports(self):
        return None
```
