1

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

libraries: 
- name: django 
    version: 1.5 

我想用它而不是把整个Django的nonrel源代码在我的项目目录。 当我从我的项目目录中删除Django的nonrel,我从djangoappengine/boot.py得到下面的导入错误:

ImportError: No module named django.conf 

它看起来像djangoappengine找不到Django的任何版本 - 而不是一个安装在我的蟒蛇安装,不是AppEngine自带的。

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

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

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

它的工作原理。任何方式添加到路径而不编辑djangoappengine

+0

您还需要在适当的模块中导入django。 –

+0

感谢@AshishNitinPatil的回复。 “适当的模块”是什么意思?不会'import django'引发与'import django.conf'相同的'ImportError'引发? – Tzach

+0

不是。我认为,'app.yaml'指示服务器将'django'作为服务器的外部库。因此,'import django'不会失败。 (虽然我可能错了) –

回答

0

GAE SDK附带的Django模块是“常规”Django,而不是django-nonrel。 “常规”Django只能处理SQL数据库,它不能处理GAE的数据存储。

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

你看到的错误是因为djangoappengine(和djangotoolbox)只能与django-nonrel一起使用。他们不会使用“常规”django。

+0

谢谢。只是澄清 - 如果直接使用GAE模型(db和ndb),也可以使用'常规'django。 – Tzach

+0

是的。但很难想出一个很好的理由来做到这一点,因为许多内置函数,比如窗体,大部分contrib库以及大多数第三方插件都无法工作。在这种情况下,你可能更适合使用webapp2 + jinja。 – dragonx

+0

我这样做的理由是我需要非常优化的Data Store查询,这很难或者根本无法用Data Store查询的django-nonrel包装来实现。对于正常使用,我完全同意。 – Tzach