Recherche…


Introduction

Les commandes de gestion sont des scripts puissants et flexibles pouvant effectuer des actions sur votre projet Django ou la base de données sous-jacente. En plus des diverses commandes par défaut, il est possible d’écrire votre propre commande!

Comparé aux scripts Python classiques, l'utilisation de la structure de commande de gestion signifie que des tâches d'installation fastidieuses sont effectuées automatiquement pour vous.

Remarques

Les commandes de gestion peuvent être appelées à partir de:

  • django-admin <command> [options]
  • python -m django <command> [options]
  • python manage.py <command> [options]
  • ./manage.py <command> [options] si manage.py a des droits d'exécution ( chmod +x manage.py )

Pour utiliser des commandes de gestion avec Cron:

*/10 * * * * pythonuser /var/www/dev/env/bin/python /var/www/dev/manage.py <command> [options] > /dev/null

Création et exécution d'une commande de gestion

Pour effectuer des actions dans Django en utilisant la ligne de commande ou d'autres services (où l'utilisateur / la demande n'est pas utilisé), vous pouvez utiliser les management commands .

Les modules Django peuvent être importés selon vos besoins.

Pour chaque commande, un fichier séparé doit être créé: myapp/management/commands/my_command.py
(Les répertoires de management et de commands doivent avoir un fichier __init__.py vide)

from django.core.management.base import BaseCommand, CommandError

# import additional classes/modules as needed
# from myapp.models import Book

class Command(BaseCommand):
    help = 'My custom django management command'

    def add_arguments(self, parser):
       parser.add_argument('book_id', nargs='+', type=int)
       parser.add_argument('author' , nargs='+', type=str)

    def handle(self, *args, **options):
       bookid = options['book_id'] 
       author = options['author']
       # Your code goes here
        
        # For example:
        # books = Book.objects.filter(author="bob")
        # for book in books:
        #    book.name = "Bob"
        #    book.save()

Ici, le nom de classe Command est obligatoire et étend BaseCommand ou l'une de ses sous-classes.

Le nom de la commande de gestion est le nom du fichier le contenant. Pour exécuter la commande dans l'exemple ci-dessus, utilisez ce qui suit dans votre répertoire de projet:

python manage.py my_command

Notez que le démarrage d'une commande peut prendre quelques secondes (à cause de l'importation des modules). Ainsi, dans certains cas, il est conseillé de créer des processus daemon au lieu de management commands de management commands .

Plus d'informations sur les commandes de gestion

Obtenir la liste des commandes existantes

Vous pouvez obtenir la liste des commandes disponibles de la manière suivante:

>>> python manage.py help

Si vous ne comprenez aucune commande ou recherchez des arguments facultatifs, vous pouvez utiliser l'argument -h comme ceci

>>> python manage.py command_name -h

Ici command_name sera le nom de votre commande désirée, cela vous montrera le texte d'aide de la commande.

>>> python manage.py runserver -h          
>>> usage: manage.py runserver [-h] [--version] [-v {0,1,2,3}]
                           [--settings SETTINGS] [--pythonpath PYTHONPATH]
                           [--traceback] [--no-color] [--ipv6] [--nothreading]
                           [--noreload] [--nostatic] [--insecure]
                           [addrport]

Starts a lightweight Web server for development and also serves static files.

positional arguments:
  addrport              Optional port number, or ipaddr:port

optional arguments:
  -h, --help            show this help message and exit
  --version             show program's version number and exit
  -v {0,1,2,3}, --verbosity {0,1,2,3}
                        Verbosity level; 0=minimal output, 1=normal output,
                        2=verbose output, 3=very verbose output
  --settings SETTINGS   The Python path to a settings module, e.g.
                        "myproject.settings.main". If this isn't provided, the
                        DJANGO_SETTINGS_MODULE environment variable will be
                        used.
  --pythonpath PYTHONPATH
                        A directory to add to the Python path, e.g.
                        "/home/djangoprojects/myproject".
  --traceback           Raise on CommandError exceptions
  --no-color            Don't colorize the command output.
  --ipv6, -6            Tells Django to use an IPv6 address.
  --nothreading         Tells Django to NOT use threading.
  --noreload            Tells Django to NOT use the auto-reloader.
  --nostatic            Tells Django to NOT automatically serve static files
                        at STATIC_URL.
  --insecure            Allows serving static files even if DEBUG is False.

Liste des commandes disponibles

Utiliser django-admin au lieu de manage.py

Vous pouvez vous débarrasser de manage.py et utiliser la commande django-admin place. Pour ce faire, vous devrez faire manuellement ce que manage.py :

  • Ajoutez le chemin de votre projet à votre PYTHONPATH
  • Définissez le DJANGO_SETTINGS_MODULE
export PYTHONPATH="/home/me/path/to/your_project"
export DJANGO_SETTINGS_MODULE="your_project.settings"

Ceci est particulièrement utile dans un virtualenv où vous pouvez définir ces variables d'environnement dans le script postactivate .

django-admin commande django-admin a l'avantage d'être disponible où que vous soyez sur votre système de fichiers.

Commandes de gestion intégrée

Django est livré avec un certain nombre de commandes de gestion intégrées, utilisant python manage.py [command] ou, lorsque manage.py a + x (exécutable) droits simplement ./manage.py [command] . Les éléments suivants sont parmi les plus fréquemment utilisés:

Obtenir une liste de toutes les commandes disponibles

./manage.py help

Exécutez votre serveur Django sur localhost: 8000; essentiel pour les tests locaux

./manage.py runserver

Exécutez une console python (ou ipython si installé) avec les paramètres Django de votre projet préchargé (toute tentative d'accès à des parties de votre projet dans un terminal Python échouera).

./manage.py shell

Créez un nouveau fichier de migration de base de données en fonction des modifications apportées à vos modèles. Voir Migrations

./manage.py makemigrations

Appliquez toutes les migrations non appliquées à la base de données en cours.

./manage.py migrate

Exécutez la suite de tests de votre projet. Voir les tests unitaires

./manage.py test

Prenez tous les fichiers statiques de votre projet et mettez-les dans le dossier spécifié dans STATIC_ROOT pour qu'ils puissent être STATIC_ROOT en production.

./manage.py collectstatic

Permet de créer un superutilisateur.

./manage.py createsuperuser

Modifiez le mot de passe d'un utilisateur spécifié.

./manage.py changepassword username

Liste complète des commandes disponibles



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow