Dans Django, les paramètres sont stockés dans un fichier, settings.py. Ce fichier fait partie du code et va dans le dépôt. Ce sont seulement les développeurs qui s'occupent de ce fichier. L'administrateur traite les modèles, les données dans la base de données. Ce sont les données que le personnel non-développeur modifie et les visiteurs du site voient s'afficher dans les modèles. Le fait est que notre site, et beaucoup d'autres, ont de nombreuses options de paramétrage qui devraient être éditées par du personnel non-développeur. Nous parlons de constantes autonomes à l'échelle du site qui n'ont vraiment pas leur place dans la base de données. Les mettre dans la base de données se traduira par de nombreuses requêtes inutiles. La mise en cache peut remédier à cela, mais cela semble inutilement complexe pour gérer ce qui peut être fait avec une seule ligne dans le fichier settings.py. J'ai remarqué this dbsettings app, mais il est vieux et non maintenu. J'ai également remarqué que l'application de commerce électronique django, Satchmo, inclut une fourchette spécifique au cas d'utilisation de cette application dbsettings. Nous pourrions construire quelque chose de similaire sur notre site, une application qui stocke certains paramètres en tant que paires clé/valeur dans une seule table de base de données, mais cela semble vraiment être la mauvaise approche. Pourquoi mettre quelque chose dans la BD qui ne lui appartient pas juste pour le rendre plus facilement modifiable par des non-développeurs?Comment rendre certains paramètres Django accessibles au personnel?
Nous avons une liste de paramètres à l'échelle du site sur notre site Django que nous souhaitons être modifiables par des administrateurs non développeurs. Quelle est la meilleure façon d'y parvenir?
+1 car cela pourrait faciliter la gestion des projets Django dans VCS. Les développeurs doivent veiller à ne pas valider localement les modifications de settings.py. –
la mise en cache permettra d'éviter cela (lorsque les paramètres locaux sont mis dans la base de données) à une seule requête par instance de processus django. – Evgeny
pour redémarrer le serveur afin de recharger les paramètres, vous pouvez simplement appeler le fichier "touch site.wsgi", par exemple. avec une tâche cron, mais cela ne fonctionnera que si votre processus de wsgi fonctionne en mode démon – Evgeny