В Google App Engine объект имеет Ключ. Ключ может быть сделан из пути, в этом случае ул. (ключ) является непрозрачной шестнадцатеричной строкой. Пример:
from google.appengine.ext import db
foo = db.Key.from_path(u'foo', u'bar', _app=u'baz')
print foo
дает
agNiYXpyDAsSA2ZvbyIDYmFyDA
если Вы создаете правильные пути для выполнения кода.
Так, как можно взять шестнадцатеричную строку и вернуть путь? Я думал, что ответ будет в документах группы Ключа или объекта, но я не вижу его.
from google.appengine.ext import db
k = db.Key('agNiYXpyDAsSA2ZvbyIDYmFyDA')
_app = k.app()
path = []
while k is not None:
path.append(k.id_or_name())
path.append(k.kind())
k = k.parent()
path.reverse()
print 'app=%r, path=%r' % (_app, path)
при запуске в консоли разработки выводится:
app=u'baz', path=[u'foo', u'bar']
по запросу. Более короткая альтернатива - использовать (к сожалению, я считаю, недокументированный) метод to_path
из экземпляров Key
:
k = db.Key('agNiYXpyDAsSA2ZvbyIDYmFyDA')
_app = k.app()
path = k.to_path()
print 'app=%r, path=%r' % (_app, path)
с теми же результатами. Но первая, более длинная версия опирается только на документированные методы.
Когда у вас есть объект Key
(который можно создать, передав этот непрозрачный идентификатор конструктору), используйте Key.to_path ()
, чтобы получить путь к ключу
в виде списка. Например:
from google.appengine.ext import db
opaque_id = 'agNiYXpyDAsSA2ZvbyIDYmFyDA'
path = db.Key(opaque_id).to_path()