我正在寻找将Django项目迁移到Google App Engine并使用Google数据存储区的指南。我发现的大多数指南都使用Django-nonrel与Django-Appengine相关联(但我想使用GAE的原生支持)。
通过GAE getting started guide,它说:
Google App Engine支持使用纯Python编写的任何使用CGI(以及任何使用CGI适配器的WSGI兼容框架)的框架,包括Django,CherryPy,Pylons,web.py和web2py。 您可以将自己选择的框架与应用程序代码捆绑在一起,方法是将其代码复制到应用程序目录中。
据我所知,在这种情况下我将无法使用Django的某些功能(主要是管理功能),还需要重新构建模型。
从其他阅读中,我还发现最新的GAE SDK现在包含了Python 2.5上的Django 1.3。
我试图将我的Django应用程序中的所有文件放到GAE项目中,但无法将它们全部合并到一起工作。
请提供一些基本指南,用于将我的Django项目迁移到Google App Engine的代码。
感谢。
答案 0 :(得分:2)
我使用的是django-nonrel,它的行为与django非常相似,只不过使用JOIN的操作会返回错误。我基本上通过避免ManyToMany字段来解决这个问题,并且基本上使用中间表手动构建该功能。
到目前为止,我遇到了Django-nonrel的两个问题: 1.无法访问可以在事务中运行的祖先查询。但是有一个待处理的拉取请求。 2.您不能指定未编制索引的字段。这可能会显着增加您的写入成本。我有想法解决这个问题,但我还没有这样做 (编辑:您可以指定未编制索引的字段,我已经验证了这种方法很有效)。 2(新)。谷歌正在推动一个名为ndb的新数据库后端,该后端执行自动缓存和批处理,django-nonrel将无法使用。
如果您决定不使用django-nonrel,主要区别在于Django模型不能在App Engine下运行。您必须重写模型以从App Engine的db.Model继承。您使用Django的ModelForm的表单需要继承google.appengine.ext.db.djangoforms。一旦你使用App Engine,你就必须移植Django,如果你曾经把你的应用程序带到其他地方。
答案 1 :(得分:2)
对于现有的Django应用程序,使用django-nonrel是最简单的方法;它非常受欢迎,因此您应该能够快速找到有关特定错误的帮助。
本文中写了另一种方法:http://code.google.com/appengine/articles/pure_django.html - 它采用另一种方式,采用使用Django进行调度,模板和表单的App Engine应用程序,但不用于模型,并描述如何让它在原生的Django环境中运行。也许你可以从中收集一些有用的提示。
答案 2 :(得分:1)
如果您已有Django应用程序,则可能需要检查this。您不会使用App Engine的数据存储区,但Google Cloud SQL可能符合您的需求。