Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Exécuter un script externe dans l'environnement Django

0 votes

J'ai un problème que je n'arrive pas à résoudre même après moultes recherches sur les internets.

Je voudrais lancer un script externe à un de mes projets Django pour faire joujou avec l'ORM, seulement je rencontres quelques soucis à l'exécution dont voici le message d'erreur:

AttributeError: module 'monprojet.settings' has no attribute 'LOGGING_CONFIG'

Voici le code qui m'emmerde en question:

import django
from django.conf import settings
from monprojet import settings as project_settings

settings.configure(default_settings=project_settings)
django.setup()

from mon_app.models import MonModele

[...]

Là j'avoue que je ne vois pas du tout ce qui pourrais poser problème. 'fin en même temps j'suis un newbie sur Django.

Édit: Ah et je précise que je suis sur Django 1.10, si ça peut aider.

demandé 21-Nov-2016 par daimebag (182 points)
edité 21-Nov-2016 par daimebag

2 Réponses

+2 votes
 
Meilleure réponse

Tu peux aussi utiliser les management commands :

https://docs.djangoproject.com/fr/1.10/howto/custom-management-commands/

qui se lancent à coup de
$ ./manage.py ma_commande mes_params
Ça parse les paramètres tout seul, t'es dans ton projet, tu peux deboguer avec ton IDE, t'as tout sous la main...

Courage !

répondu 23-Nov-2016 par frague (484 points)
sélectionné 27-Nov-2016 par daimebag

Cool merci! J'vais regarder ça!

0 votes

Bon j'ai trouvé une solution...enfin internet l'a trouvé pour moi.
Au lieu de mettre ça:

import django
from django.conf import settings
from monprojet import settings as project_settings

settings.configure(default_settings=project_settings)
django.setup()

Il aurait fallu que je mette ça:

import os
import django

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'monprojet.settings')
django.setup()

Et ça marche impec!
Après je sais pas si c'est la meilleure manière de le faire...
En fait je ne sais pas vraiment pourquoi ça marche ou pas, j'viens de voir que c'est ce qui se trouve dans manage.py mais j'osais pas trop m'y fier pour pas faire de conneries.

Bref, j'suis un newbie quoi.

répondu 21-Nov-2016 par daimebag (182 points)
edité 21-Nov-2016 par daimebag
...