2012-02-12 79 views
2

我正在寻找将Django项目迁移到Google App Engine并使用Google数据存储区的指南。我发现的大多数指南都使用Django-nonrel链接到Django-Appengine(但我想使用GAE的本机支持)。如何将Django项目迁移到Google App Engine

通过GAE getting started guide去,它说:

谷歌App Engine支持写的讲CGI纯Python任何框架(以及使用CGI适配器,任何符合WSGI的框架),包括Django的,CherryPy的,主塔, web.py和web2py。 您可以将您选择的框架与您的应用程序代码捆绑在一起,方法是将其代码复制到您的应用程序目录中。

我知道我不能在这种情况下使用Django的某些功能(主要是管理功能),并且还需要重新构建模型。

从其他阅读中,我还发现最新的GAE SDK现在包含Python 2.5中的Django 1.3。

我试图将我的Django应用程序中的所有文件放到GAE项目中,但是无法一起工作。

请提供一些基本指南,我可以将我的Django项目迁移到Google App Engine的代码。

谢谢。

回答

1

如果你已经有一个Django应用程序,你可能需要检查this。您不会使用App Engine的数据存储,但Google Cloud SQL可能会满足您的需求。

+0

Google Cloud SQL迁移指南相当不错。 [在此页](https://developers.google.com/cloud-sql/docs/django)“将您的Django项目移植到App Engine”部分提供了完整的详细信息。 – Pratyush 2012-02-17 07:20:42

2

我已经使用了django-nonrel,它的行为非常像django,只不过JOINs的操作会返回错误。我基本上通过避免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。

2

对于现有的Django应用程序,使用django-nonrel是最简单的方法;它非常受欢迎,所以你应该能够找到帮助你快速得到的具体错误。

另一种方法写在这篇文章中:http://code.google.com/appengine/articles/pure_django.html - 另一种方式,采用一个App Engine应用程序,该应用程序使用Django作为调度,模板和表单,但不适用于模型,并描述如何使其运行在本地Django环境中。也许你可以从中为你的情况收集一些有用的提示。

+1

链接已死亡。 – 2016-04-30 14:53:10

相关问题