【发布时间】:2014-11-13 09:59:08
【问题描述】:
我有错误:
BadRequestError: 应用“dev~myapp”无法访问应用“s~myapp”的数据
类似,但the opposite way around to this question。
虽然答案似乎不适用于我的应用程序(甚至试图将其完全颠覆)——我只有一个应用程序,而且我没有使用远程 API,也没有使用 urlsafe 密钥,并且我所有的关键属性都是db.ReferencePropertys 或db.ListProperty( db.Key )s。
错误出现在我尝试渲染的模板的第一行:
顶级模板代码中的文件“/.../template.html”,第 1 行
{% extends "page.html" %}
如果我注释掉该行,则会发生错误:
顶级模板代码中的文件“/.../template.html”,第 1 行
<!--{% extends "page.html" %}-->
这向我暗示错误是在应用模板魔法之前实际使用 Jinja 加载模板。
template.html 使用实体列表(不是Query 对象,而是[e for e in queryObject]s)的变量呈现。如果我将这些替换为空列表,则页面呈现正常。
我的开发服务器的数据存储区填充了来自生产服务器的备份,但直到现在我在访问这些条目时都没有遇到问题。我得到这些实体列表如下:
@staticmethod
def gql(query, *a, **kw):
keys = super(Model, Model).gql(query, *a, **kw).run(keys_only=True)
cached = []
for key in keys:
inCache = memcache.get('Model_'+str(key))
if inCache:
cached.append(inCache)
else:
fromDB = Model.get(key)
memcache.set('Model_'+str(key), fromDB)
cached.append( fromDB )
return cached
在使用 Jinja 进行渲染之前,我可以使用 logging 打印结果。在交互式控制台中也很好。
为什么这会成为访问另一个应用程序数据的尝试,并在 Jinja 呈现时引发此异常?
【问题讨论】:
标签: python google-app-engine jinja2 wsgi webapp2