我需要为我的Google App Engine项目存储设置。目前我有:
class Settings(db.Model):
rate = db.IntegerProperty(default=4)
...
当我想要使用它时:
Settings.get_or_insert('settings')
这种方式感觉很笨拙,有没有更好的方法(不使用Django)?
我需要为我的Google App Engine项目存储设置。目前我有:
class Settings(db.Model):
rate = db.IntegerProperty(default=4)
...
当我想要使用它时:
Settings.get_or_insert('settings')
.yaml
(但是“只读”)文件。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
您的应用程序可以通过以下方式获取一个值:
API_KEY = Settings.get('API_KEY')
如果数据存储中存在该键的值,则会返回该值。如果不存在,则会创建一个占位记录并抛出异常。异常将提醒您前往开发人员控制台并更新占位记录。
我发现这样可以消除设置配置值时的猜测。如果您不确定要设置哪些配置值,只需运行代码,它就会告诉您!