Par moment, avec une application django tu voudrai créer des scripts en dehors de l’environnement d’exécution django pour automatiser certaines tâches … La mienne étant de générer des données faussement bidons…
S’en suit une recherche sur internet et quelques éléments de réponse :
1. Un script :
import os
import syssys.path.append(“/Users/said/path/monprojet_web/”)
os.environ[‘DJANGO_SETTINGS_MODULE’] = ‘monprojet_web.settings’
Qui fonctionnera si ta structure du projet n’a pas changé d’un ioata, ou qui plantera à coup sûr si tu as suivi ce tuto. (apps/monapp)
Pour remerdier à ce foutu problème, ajoute cette ligne pour que le script finale ressemble à ça :
import os
import syssys.path.append(“/Users/said/path/monprojet_web/”)
sys.path.append(“/Users/said/path/monprojet_web/apps/”)os.environ[‘DJANGO_SETTINGS_MODULE’] = ‘monprojet_web.settings’
Ensuite pour éviter de réécrire toutes ces lignes, tu peux les incorporer dans un module et faire un import de celui-ci.
A la fin, tu pourra importer tes modèles comme ceci :
import Standalone_django_script
from monapp.models import MaClasse
# Anything you want:
print MaClasse.objects.all()
Sinon une des solutions les plus sympa, c’est d’utiliser django-extensions, avec sa commande runscript. Allez c’est par ici …
Pour résumer :
1 – Installer l’extension et ajouter l’application au fichier settings.py
2 – Créer un repertoire “scripts” et un fichier “__init__.py” dans ce répertoire
3 – Crée ton script dans le répertoire “scripts”. Sache que chaque fichier doit posséder une méthode “run” qui est le point d’entrée.
4 – “python manage.py runscript monscript” sans l’extension “py”
Et j’oubliais, pour générer mes données, j’utilise model-mommy
Enjoy !