Lorsque vous souhaitez effectuer un traitement par lots dans Django, vous écrivez une commande de gestion.
Cependant, il existe parfois des traitements par lots qui ne suffisent pas pour écrire des commandes de gestion. Un script de migration de données qui est écrit. Un outil de comptage uniquement pour le dépannage.
Dans un tel cas, vous pouvez accéder aux fonctions de Django à partir d'un fichier Python placé en dehors du projet Django sans l'enregistrer en tant que commande de gestion.
Préparez un script comme celui-ci.
django_setup.py
"""
django_setup()Lorsque vous exécutez, Django propose(Importation de modèle, etc.)Sera disponible.
"""
import os
import sys
import django
def django_setup():
os.environ.setdefault(
'DJANGO_SETTINGS_MODULE', 'myapp.settings')
base_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.append(os.path.join(base_dir, 'myproject'))
django.setup()
Tout ce que vous avez à faire est d'ajouter la racine du projet Django (où ./manage.py est) à sys.path
et d'exécuter django.setup ()
.
Si vous utilisez votre propre fichier de configuration, spécifiez-le dans la variable d'environnement DJANGO_SETTINGS_MODULE
.
Je suis __file__
avec ʻos.path.dirname`, mais veuillez changer cela en fonction de votre environnement.
On suppose que base_dir est le répertoire "one level up" du projet Django (myproject).
Si vous faites cela, vous pouvez utiliser un script d'écriture, etc.
from django_setup import django_setup
def main():
from myapp.models import MyModel
for item in MyModel.objects.filter(...):
...
if __name__ == '__main__':
django_setup()
main()
De cette façon, vous pouvez accéder aux fonctionnalités de votre projet Django.
Recommended Posts