【问题标题】:Using GAE version of django使用 django 的 GAE 版本
【发布时间】:2013-12-11 09:53:49
【问题描述】:

我有一个在 Google App Engine 上运行的 django 应用程序。我使用 djangoappenginedjango-nonrel 并且它工作正常(在我的 App Engine 项目目录中使用 django 的完整源代码)。 我注意到 GAE 通过将以下几行添加到 app.yaml 来提供对 django 的支持:

libraries:
- name: django
  version: 1.5

我想使用它而不是将整个 django-nonrel 源代码放在我的项目目录中。 当我从项目目录中删除 django-nonrel 时,我从 djangoappengine/boot.py 收到以下 ImportError:

ImportError: No module named django.conf

看起来 djangoappengine 找不到任何版本的 django - 不是我的 python 安装中安装的那个,也不是 AppEngine 附带的那个。

如何让开发服务器使用 AppEngine 版本的 django? 还是我错过了什么?

更新: 当我手动编辑djangoappengine/boot.py 并添加

sys.path.append(r'<PATH TO GAE API>/google_appengine/lib/django-1.5')

它有效。有什么方法可以在不编辑djangoappengine的情况下添加到路径?

【问题讨论】:

  • 您还需要在相应的模块中import django
  • 感谢@AshishNitinPatil 的回复。 “适当的模块”是什么意思? import django 不会像 import django.conf 一样提高 ImportError 提高吗?
  • 不。我认为,app.yaml 指示服务器将django 作为服务器包含的外部库。因此,import django 不会失败。 (虽然我可能错了)
  • @AshishNitinPatil 我刚刚尝试过import django,它引发了同样的错误。还有其他想法吗?
  • 如果 djangoappengine 具有 django-nonrel 作为依赖项(我认为确实如此),在这种情况下,恐怕您必须包含 django-nonrel 包。

标签: python django google-app-engine django-nonrel djangoappengine


【解决方案1】:

GAE SDK 中包含的 Django 模块是“常规”Django,而不是 django-nonrel。 "regular" Django 只能处理 SQL 数据库,不能处理 GAE 的数据存储。

如果您使用 CloudSQL,请使用“常规”Django。如果您使用 HRD 数据存储,请使用 django-nonrel。

您看到的错误是因为 djangoappengine(和 djangotoolbox)仅适用于 django-nonrel。它们不适用于“常规”django。

【讨论】:

  • 谢谢。只是为了澄清 - 如果直接使用 GAE 模型(db 和 ndb),也可以使用“常规”django。
  • 是的。但是很难找到这样做的充分理由,因为许多内置插件,如表单、大多数 contrib 库和大多数 3rd 方插件都不起作用。在这种情况下,你可能最好使用 webapp2+jinja。
  • 我这样做的原因是我需要非常优化的数据存储查询,而使用数据存储查询的 django-nonrel 包装很难甚至不可能实现。对于正常使用,我完全同意。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-12
  • 2011-07-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多