Django: où dois-je les paramètres d'appel.configurer?
Le Django docs dire que je peux appeler settings.configure
au lieu d'avoir un DJANGO_SETTINGS_MODULE
. Je voudrais que mon site web du projet pour ce faire. Dans quel fichier dois-je mettre de l'appel à settings.configure
de sorte que mes paramètres aurez configuré au bon moment?
Modifier en réponse à Daniel Roseman commentaire:
La raison pour laquelle je veux faire c'est que settings.configure
vous permet de passer dans les paramètres variables comme kwargs dict, par exemple {'INSTALLED_APPS': ..., 'TEMPLATE_DIRS': ..., ...}
. Cela permettrait à mon application aux utilisateurs de spécifier les paramètres dans un dict, puis passer que dict à une fonction dans mon application qu'il augmente avec certains paramètres nécessaires pour rendre mon application, p. ex. l'ajout d'entrées à INSTALLED_APPS
.
Ce que je vois ressemble à ceci. Nous allons l'appeler mon application "rexe_app". Dans wsgi.py, mon application utilisateurs à faire:
import rexe_app
my_settings = {'INSTALLED_APPS': ('a','b'), ...}
updated_settings = rexe_app.augment_settings(my_settings)
# now updated_settings is {'INSTALLED_APPS': ('a','b','c'), 'SESSION_SAVE_EVERY_REQUEST': True, ...}
settings.configure(**updated_settings)
configure
dans le même endroit que vous définissez cette variable de toute façon, donc je ne vois pas l'intérêt.merci. J'ai édité la question.
Pourquoi ne pas utiliser
from rexe_app.default_settings import *
et INSTALLED_APPS += ('a', 'b')
directement dans de l'utilisateur du fichier de paramètres de projet si vous voulez les choses de cette façon?J'ai commencé avec cette approche, mais il ne fonctionne pas bien avec les mises à jour de mon logiciel. Par exemple, si je veux ajouter une autre application pour
INSTALLED_APPS
, ou modifier un autre paramètre comme TEMPLATE_DIRS
, j'ai besoin de dire à tous mes utilisateurs à changer dans leur fichier de paramètres. Ma base d'utilisateurs préfèrent pour être traité automatiquement et de manière invisible.ne pas l'obtenir. il suffit d'ajouter une nouvelle application à
INSTALLED_APPS
dans rexe_app.default_settings
et c'est géré par +=
opérateur, vos utilisateurs ne pip install rexe_app upgrade
OriginalL'auteur RexE | 2013-11-08
Vous devez vous connecter pour publier un commentaire.
Ses pas tout à fait équivalent, depuis que les paramètres
DJANGO_SETTINGS_MODULE
mises à jour par défaut, trouvé dansdjango.conf.settings.global_settings
, tout en paramètre pourconfigure
ignore complètement, de sorte que vous devez ajouter à un traitement supplémentaire.Méfiez-vous, d'abord, que vous ne pouvez pas modifier
INSTALLED_APPS
à la volée, comme ils sont examinés à la fois sur les paramètres de traitement. Par exemple, pour appliquer les modifications à INSTALLED_APPS dans Apache-application déployée, vous devez redémarrer Apache.Seconde, tant que les paramètres sont importés, donc ce point est sujette à des injections de quelques sortes, et est très vulnérable à les exposer à des utilisateurs.
Si c'est un méta app, il y a deux possibilités:
Assurez-vous de ne pas importer "default_settings.py" dans votre application, et de faire vos utilisateurs à ajouter à leur settings.py
que efficace, le set "INSTALLED_APPS" à " ('default_app', 'users_app', )` pour vos utilisateurs finaux.
ainsi, lorsque les besoins de l'utilisateur pour modifier la valeur par défaut `REXE_APP_CONFIG_PARAM` il doit juste ajouter
à son " settings.py`.
settings.configure
approche du travail, donc je vais essayer pour l'instant.OriginalL'auteur alko
Il serait dans votre wsgi script. veuillez avoir regarder les docs.
Vous pourriez exécuter
mysite.settings.configure()
au lieu deos.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
OriginalL'auteur scriptmonster
Si vous utilisez wsgi puis appelez dans votre wsgi script avant d'exécuter l'application.
Si vous voulez faire cela pour le serveur de dev, passer comme option de ligne de commande (mentionné sur la même page).
OriginalL'auteur Rohan