我有一个适用于 python2.7 的 appengine 应用程序,我想迁移到 python3.9。我首先在我的 appengine 应用程序中调用 google ndb cloud。我使用 python3.9 和 django 作为网络框架。 这是我的代码:
from django.shortcuts import render,redirect
from google.cloud import ndb
class Book(ndb.Model):
title = ndb.StringProperty()
client = ndb.Client()
def get_books():
with client.context():
books = Book.query()
return books
def main(request):
return HttpResponse(get_books())
这是回溯
File "/Users/hizan/Desktop/venvdjango/lib/python3.9/site-packages/google/cloud/ndb/query.py" in wrapper
1213. context = context_module.get_context()
File "/Users/hizan/Desktop/venvdjango/lib/python3.9/site-packages/google/cloud/ndb/context.py" in get_context
118. raise exceptions.ContextError()
Exception Type: ContextError at /
Exception Value: No current context. NDB calls must be made in context established by google.cloud.ndb.Client.context.
您应该创建一个中间件,以便自动处理上下文,而不是在使用 NDB 的每个函数/方法中定义上下文。
参见 Google for Django 的示例