Django : ajouter des commandes à manage.py

In: Django

11 juin 2009

Vous avez normalement déjà manipulé les commandes console de Django, accessibles via manage.py.
./manage.py runserver

Cependant il peut être utile, dans plus d’une application, d’avoir des méthodes console pour lesquelles vous désirez obtenir l’environnement web, mais en console.
Pour charger des données depuis un flux XML par exemple. Ou encore vider une base de données.
Ainsi, vous pourrez faire :

./manage.py votre_commande

Dans l’application de votre choix, et qui doit être présente dans le INSTALLED_APPS de settings.py, créez l’arborescence suivante :
- management
|- __init__.py
|- commands
|– __init__.py

Ainsi, vous aurez ceci :
- votre_application
|- management
|– __init__.py
|– commands
|— __init__.py

Puis créez un fichier, que vous nommerez comme votre nouvelle commande dans le dossier commands.
Par exemple export.py

Dans ce fichier, vous placerez le code suivant :
from django.core.management.base import NoArgsCommand
class Command(NoArgsCommand):
  help = "Message d'aide concernant votre commande"
  def handle_noargs(self, **options):
    # Le contenu de votre commande
    print("Hello World")

Si, maintenant, vous tapez dans une console :

./manage.py export

Et le code présent dans votre méthode handle_noargs() sera exécuté :)

Cet article est rédigé par Damien MATHIEU.
Et est disponible sous licence creative common by-nc-nd.
Si vous appréciez son contenu, n'hésitez pas à me recommander.

Comment Form

Photostream

    I'm BackFrom the BackGoing DownNativity ChurchIn the streets of BethlehemNazareth by MorningNazareth by NightThe Jordan RiverJerusalem Wall
  • Damien: Il utilise limit et startkey (et définit "skip" à 0). [...]
  • DarkSmith: Interessant. Pour la pagination est-ce que tu sais comment CouchREST se débrouille ? Utilise-t-il l [...]
  • brice: Et oui une page se tourne, ça fait bizarre vu que je t'ai toujours connu à la source. Bonne co [...]
  • Florent V.: Bonne continuation et tout. Mais on te le redira pour ton pot de départ, avec deux verres dans le n [...]
  • Damien: @Ishiro les articles proviennent de problèmes rencontrés en développant. Ne faisant plus de Djan [...]