Dans mes projets, je mets des données de configuration dans le magasin de données (un enregistrement par valeur de configuration) en utilisant cette classe:
from google.appengine.ext import ndb
class Settings(ndb.Model):
name = ndb.StringProperty()
value = ndb.StringProperty()
@staticmethod
def get(name):
NOT_SET_VALUE = "NOT SET"
retval = Settings.query(Settings.name == name).get()
if not retval:
retval = Settings()
retval.name = name
retval.value = NOT_SET_VALUE
retval.put()
if retval.value == NOT_SET_VALUE:
raise Exception(('Setting %s not found in the database. A placeholder ' +
'record has been created. Go to the Developers Console for your app ' +
'in App Engine, look up the Settings record with name=%s and enter ' +
'its value in that record\'s value field.') % (name, name))
return retval.value
Votre demande serait faire pour obtenir une valeur:
API_KEY = Settings.get('API_KEY')
S'il existe une valeur pour cette clé dans le magasin de données, vous l'obtiendrez. Si ce n'est pas le cas, un enregistrement d'espace réservé sera créé et une exception sera générée. L'exception vous rappellera d'aller à la Developers Console et de mettre à jour l'enregistrement d'espace réservé.
Je trouve que cela permet de ne pas deviner les valeurs de configuration. Si vous n'êtes pas sûr de ce que les valeurs de configuration à définir, il suffit de lancer le code et il vous le dira!
Les paramètres changeront-ils entre les déploiements de versions de l'application? –
oui, et peut être mis à jour pendant le déploiement aussi – hoju