【发布时间】:2016-06-27 09:42:11
【问题描述】:
运行此代码时,使用 相同的 site_id:
int_id= int(self.request.get("site_id"))
site_draft = SiteDraft.get_by_id(int_id)
我收到此错误:
INFO 2016-06-27 12:39:19,040 module.py:788] minisites: "GET /edit/5891733057437696 HTTP/1.1" 500 -
return self.handle_exception(e, self.app.debug)
File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 545, in dispatch
return method(*args, **kwargs)
File "C:\Users\Yuri\Documents\WiseStamp\Server\minisites\web\pages\edit_site.py", line 21, in get
self.post(args)
File "C:\Users\Yuri\Documents\WiseStamp\Server\minisites\web\pages\edit_site.py", line 44, in post
site_draft = SiteDraft.get_by_id(int_id)
File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\ext\ndb\utils.py", line 160, in positional_wrapper
return wrapped(*args, **kwds)
File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\ext\ndb\model.py", line 3602, in _get_by_id
return cls._get_by_id_async(id, parent=parent, **ctx_options).get_result()
File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\ext\ndb\tasklets.py", line 378, in get_result
self.check_success()
File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\ext\ndb\tasklets.py", line 425, in _help_tasklet_along
value = gen.send(val)
File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\ext\ndb\context.py", line 765, in get
pbs = entity._to_pb(set_key=False).SerializePartialToString()
File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\ext\ndb\model.py", line 3167, in _to_pb
prop._serialize(self, pb, projection=self._projection)
File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\ext\ndb\model.py", line 1422, in _serialize
values = self._get_base_value_unwrapped_as_list(entity)
File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\ext\ndb\model.py", line 1192, in _get_base_value_unwrapped_as_list
wrapped = self._get_base_value(entity)
File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\ext\ndb\model.py", line 1180, in _get_base_value
return self._apply_to_values(entity, self._opt_call_to_base_type)
File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\ext\ndb\model.py", line 1352, in _apply_to_values
value[:] = map(function, value)
File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\ext\ndb\model.py", line 1234, in _opt_call_to_base_type
value = _BaseValue(self._call_to_base_type(value))
File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\ext\ndb\model.py", line 1255, in _call_to_base_type
return call(value)
File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\ext\ndb\model.py", line 1331, in call
newvalue = method(self, value)
File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\ext\ndb\model.py", line 1781, in _validate
(value,))
BadValueError: Expected string, got None
它曾经在一天前工作,但现在只有 20% 的时间工作(这也很奇怪 - 它似乎在某些时候工作)。更奇怪的是我提供了一个int 作为site_id,但它告诉我它得到了一个None。
请指教。
【问题讨论】:
-
似乎 site_id 没有在请求对象中定义。我建议您首先在请求中记录 site_id。
-
嗨@TimHoffman,site_id 确实已定义,否则会破坏int 转换。谢谢。
-
只需在您的 2 个语句之间打印
site_id的值(和类型) -get_by_id()的灵活性(接受字符串、整数和长整数)可以在它喷出的错误消息中发挥作用out (对于格式不正确的请求,例如,意外与否)。就我个人而言,在将请求值输入我的数据库之前,我会添加(很多)更多检查... -
只需重新检查您的堆栈跟踪我认为问题不在于您的身份。请显示 SiteDraft 的模型,并且您最近是否添加/更改了 SiteDraft 模型中定义的属性类型。我敢打赌,一些预先存在的实体不符合当前模型。请注意,在从数据存储区检索到某些内容后,错误出现在
_to_pb中。 -
@TimHoffman 这正是问题所在。如果您将其发布为答案,我会接受。谢谢
标签: python google-app-engine google-cloud-datastore