Django和App Engine

时间:2010-01-01 07:57:48

标签: django google-app-engine

我想检查当前在Google App Engine上运行Django的状态,以及在GAE上运行django而不仅仅是使用Webapp的好处。

Django主要杀手功能,恕我直言,是可重复使用的应用程序和中间件。不幸的是,目前大多数Django应用程序都使用模型或模型形式(django-tags,django-reviews,django-profiles,Pinax应用程序)。

那么django仍然可以在Google App Engine中运行的剩余功能或优势是什么(除了禁用的内容:流行的django应用程序,会话和身份验证中间件,用户和管理员,模型等)。

此外,是否有适用于App Engine的Django应用程序列表?

7 个答案:

答案 0 :(得分:11)

app-engine-patch目前拥有大部分django功能,包括sessions,contrib.auth,sites和一些其他标准django应用程序。但是,它的主要缺点(我认为)是它使用了django的修改版本的zip文件来实现这一功能,而且当前的维护者似乎没有跟上当前的django版本。目前似乎是过去和现在的维护者的共识,这种方法维护过于繁琐,因此目前没有人维护它。

google-app-engine-django,使用生产GAE运行时中包含的最新django版本的猴子补丁方法,因此只要谷歌继续跟踪django版本,您就会了解有关django的最新信息。但是,它目前尚未完全移植contrib.auth,因此您只能使用Google帐户进行身份验证 - 这可能是一个很大的缺点,具体取决于您是否希望contrib.auth用户模型在sql后端上运行。在app-engine-patch中,帮助程序中也没有django管理员支持。存在fork of django-app-engine-django,其中添加了一些contrib应用程序,例如flatpages,站点和站点地图。另请注意,它仅适用于最高1.1的django版本,直到将issue #3230 Django 1.2添加到use_library,除非您将django作为zip文件上传。

即将开始,app-engine-patch的原始开发人员一直在django-nonrel分支上工作,但这可能远非被包含在django版本中。这个django developers thread有很多关于这些努力的信息。

另外,有一个google summer of code项目正致力于整合nonrel db的某些方面。

答案 1 :(得分:3)

app-engine-patch获取大部分在AppEngine中运行的东西 - 所以你可以(大部分)使用直接的Modelforms,使用Django用户和管理员等。

我只是将它用于相当简单的项目(对django来说很新),但是他们声称大多数Django应用程序都会(最多)对appengine进行微小的修改。例如,app-engine-patch使用AppEngine Model类而不是Django类;并且有一些基本视图效率太低,无法在Appengine上运行。

补充说:google-app-engine-django类似;但是提供了一个与Django的BaseModel相同的BaseModel。据我所知,google-app-engine-django是谷歌发布的,然后分叉创建app-engine-patch。 app-engine-patch的维护者似乎与google-app-engine-django的创建者有一些不同的目标,所以你可能会发现两者中的一个比另一个更适合你的需求。

Google提供了some articles关于在appengine上运行Django应用程序的信息;最近的实际上是来自app-engine-patch作者的客座文章。

答案 2 :(得分:1)

我通过简单地挑选和选择我需要的Django功能并将其自己修补到webapp中,取得了最大的成功。在我最近的项目中,我实际上完全删除了webapp的东西。我仍然导入并调用几个webapp实用程序函数,但它主要是由GAE和Django的优秀部分构建的手动应用程序。

答案 3 :(得分:1)

您可能有兴趣查看另一个Python框架web2py,该框架据称GAE与“普通”Web服务器之间的摩擦较小。

答案 4 :(得分:1)

现在很容易在GAE上使用完整的Django: https://developers.google.com/appengine/articles/django-nonrel#ps

答案 5 :(得分:0)

随App Engine has been updated to 1.2.5提供的Django版本以及最新的SDK版本(1.4.2changelog)。此版本可通过use_library()声明获得,因此您不再需要在相同程度上使用猴子修补。

答案 6 :(得分:0)

除了Python标准库,GAE工具和GAE Python运行时环境之外,GoogleAppEngine(GAE)Python 2.7运行时还提供了应用程序可以使用的多个第三方库。其中一个是Django。以下内容是从third-party libraries上的GAE文档页面复制的:

要在Python 2.7中使用Django,请在app.yaml中指定WSGI应用程序和Django库:

...
handlers:
- url: /.*
  script: main.app  # a WSGI application in the main module's global scope

libraries:
- name: django
  version: "1.2"