Je cherche un moyen de remplacer / définir un paramètre Django individuel de la ligne de commande sans fichiers de paramètres supplémentaires. P>
Ce dont j'ai besoin maintenant, c'est de définir le réglage de débogage ou le niveau de journalisation à chaque fois lorsque j'exécute ma commande de gestion. Mais ce serait bien de pouvoir définir n'importe quoi. P>
4 Réponses :
Vous pouvez ajouter une option personnalisée (ex. niveau de journal) à votre commande. docs
Exemple: p>
from optparse import make_option class Command(BaseCommand): option_list = BaseCommand.option_list + ( make_option('--delete', action='store_true', dest='delete', default=False, help='Delete poll instead of closing it'), ) # ...
Merci Denis. Bien sûr que je peux. Mais je ne veux pas ajouter cette option à chaque commande dans chaque projet. Je cherche une méthode plus universelle.
Vous pouvez faire vos paramètres.py plus conscient de son environnement actuel:
'ENGINE': 'sqlite3' if 'test_coverage' in sys.argv else 'django.db.backends.postgresql_psycopg2',
Merci. Cette méthode nécessite des modifications pour toute constante que je dois remplacer. Pas exactement ce que je veux.
Il n'existe pas de constante dans Python, toute variable peut être reliée. Bonne chance.
Ce ne est pas important. Disons le réglage, pas constant :)
Voici ma solution. Ajoutez le code ci-dessous au bas de votre fichier de paramètres.
./manage.py runserver --set="DEBUG=True ; TEMPLATE_DEBUG=True"
Je pense que cela n'est possible que car Django n'offre aucun crochet pour les arguments de la ligne de commande de prétraitement. Je me demande pourquoi vous en avez besoin?
Salut Kirill. Merci pour votre commentaire. Je n'étais pas sûr de cela. Aussi ce que je n'aime pas sur ma solution, c'est la façon dont je stocke la valeur d'option. Mais je n'ai pas trouvé de meilleur moyen de sauvegarder l'option entre les importations.
Pourquoi j'en ai besoin que cela soit simplement parce que c'est un moyen rapide et facile de modifier tout réglage pendant le processus de développement. Je peux jouer avec des paramètres sans modifier le fichier de paramètres. Et je peux être sûr d'oublier d'oublier de changer les choses (cela fait parfois problème). En outre, cela peut être utile pour la production. Il est possible de modifier des paramètres pour une tâche individuelle sur cron / céleri / etc. En ce moment, ce dont j'ai besoin, c'est d'exécuter une commande de gestion pour moi avec la sortie de débogage et pour mon partenaire avec une sortie utile uniquement. Je n'ai pas l'impression de changer la commande pour de tels besoins.
Vous pouvez utiliser un fichier de paramètres local. Vous en avez probablement déjà un, car vous avez différentes informations de connexion de la base de données dans le développement comme dans la production. Ce fichier de paramètres local ne serait pas remplacé par la caisse et vous risquez de ne pas risquer d'oublier les paramètres de connexion.
@Andrasgyomrey La question concerne les arguments de la ligne de commande.
dans Paramètres.py Vous pouvez vérifier les arguments de ligne de commande, comme celui-ci: Utilisation: P> ./manage.py test --enable-wiki MyApp.tests
Voulez-vous définir le débogage chaque fois
python manage.py runserver code> appelé ou vous avez votre commande personnalisée
python manage.py foo code> et vous voulez définir le débogage à l'intérieur?
Je veux définir n'importe quel paramètre pour n'importe quelle commande. Comme ceci:
./ manage.py --set = "débogue = true" runserver code>. Peut-être le moyen le plus facile est d'exécuter une valeur de paramètre de ligne de commande directement dans les paramètres.py. Mais j'espérais qu'il y a un moyen de ne pas modifier du tout le code source.