我使用以下代码根据urlsafe key
获取实体:
q_key = ndb.Key(urlsafe=key)
q = q_key.get()
return q
但是如果没有给定urlsafe密钥的此类实体,则返回
第一行ProtocolBufferDecodeError: Unable to merge from string
,我希望q
等于None
。除了捕获ProtocolBufferDecodeError
异常之外,还有其他正确的方法来处理这种情况吗?
答案 0 :(得分:7)
There is an open bug report for it here
解决方法是......
from google.net.proto.ProtocolBuffer import ProtocolBufferDecodeError
try:
q_key = ndb.Key(urlsafe=key)
q = q_key.get()
except ProtocolBufferDecodeError:
q = None
return q
我有点疑惑为什么这不是一个更常见的抱怨。没有人用无效密钥测试他们的网址吗?
答案 1 :(得分:0)
你可以试试这个
try:
q_key = ndb.Key(urlsafe=key)
q = q_key.get()
except ProtocolBufferDecodeError:
q = None
return q