2010-01-01 104 views
27

我想檢查當前在Google App Engine上運行的Django的狀態,以及在GAE上運行django而不是簡單地使用Webapp的好處。Django和App Engine

Django的主要殺手功能,恕我直言,是可重複使用的應用程序和中間件。不幸的是,大多數當前的Django應用程序使用模型或模型表單(django-tags,django-reviews,django-profiles,Pinax應用程序)。

那麼django仍然可以在Google App Engine中運行的其他功能或優點是什麼(除了什麼被禁用:流行的django應用程序,會話和身份驗證中間件,用戶和管理員,模型等)。

另外,有沒有在App Engine中工作的Django應用程序的列表?

+3

可能的重複:http://stackoverflow.com/questions/1011599/django-on-google-app-engine。 – jbochi 2010-01-02 08:55:19

回答

11

app-engine-patch目前django功能最多,包括會話,contrib.auth,網站和其他一些標準的django應用程序。然而,它的主要缺點是(我認爲)它使用了一個修改版本的django的zip文件來實現這個功能,而且當前的維護者似乎沒有跟上當前的django版本。目前,似乎過去和現在的維護人員都認爲這種方法太難維護,因此目前沒有人維護它。

google-app-engine-django,使用生產GAE運行時中包含的最新django版本的猴子補丁方法,只要谷歌繼續跟蹤django發佈,您將會了解有關django的最新信息。但是,它目前尚未完全移植contrib.auth,因此您只能使用Google帳戶進行身份驗證 - 這可能是一個很大的缺陷,具體取決於您是否想要contrib.auth用戶模型在SQL後端上按照您所知的方式工作。在輔助程序中也沒有django管理員支持,就像在app-engine-patch中一樣。 A fork of django-app-engine-django存在,其中添加了一些contrib應用程序,例如flatpages,網站和站點地圖。另外請注意,它只能在Django版本1.1以前使用,直到issue #3230將Django 1.2添加到use_library,除非您將django作爲zip文件上傳。

在地平線上,app-engine-patch的原始開發人員一直致力於django-nonrel分支,但這可能離django發行版還有很遠的距離。這django developers thread有很多關於這些努力的信息。

另外,有一個google summer of code項目正在集成nonrel db的某些方面。

+0

謝謝。很高興看到django支持gae朝着更好的方向前進,並且這個目標還沒有被放棄。 – notnoop 2010-01-04 16:47:10

+3

app-engine-patch似乎被放棄 – Casebash 2010-05-31 05:40:44

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是由Google發佈的,然後派生出來創建應用程序引擎補丁程序。 app-engine-patch的維護人員似乎與google-app-engine-django的創建者有一些不同的目標,因此您可能會發現其中一個適合您的需求比另一個更好。

Google已經提供some articles在appengine上運行Django應用程序;最近的一篇實際上是來自app-engine-patch作者的嘉賓文章。

+1

過去四個月,app-engine-patch似乎已被放棄,並且這兩個項目都無助於重用應用程序(Ponix等)。谷歌的文章看起來有點老了(2009年5月份只有一篇文章,其他所有內容都是從2008年開始的)。 – notnoop 2010-01-01 16:36:59

1

通過簡單地選擇並選擇我需要的Django功能並將它們修補到webapp中,我獲得了最佳成功。在我最近的項目中,我實際上完全刪除了webapp的東西。我仍然導入並調用幾個webapp實用程序函數,但它主要是一個由GAE和Django的良好部分構建的手動應用程序。

1

您可能有興趣查看另一個Python框架web2py,它認爲GAE和「普通」Web服務器之間的摩擦較小。

0

隨最新SDK版本(1.4.2,changelog)一起提供的應用引擎has been updated to 1.2.5的Django版本。該版本可通過use_library()聲明獲得,因此您不再需要在相同的程度上解決猴子修補問題。

0

除了Python標準庫,GAE工具和GAE Python運行時環境外,GoogleAppEngine(GAE)Python 2.7運行時還提供了幾個應用程序可以使用的第三方庫。其中之一是Django。下面從GAE文檔頁面上覆制third-party libraries

在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" 
+0

「但是,使用Django數據建模界面的第三方Django應用程序(最值得注意的是Django的Admin應用程序)可能無法直接與App Engine搭配使用。 – notnoop 2012-02-16 13:53:14

+0

@notnoop確實。但是,通過[Google雲端SQL](https://developers.google.com/cloud-sql/),這可能很快就會改變。一旦使用託管的App Engine應用程序部署了數據庫,應該支持標準的Django模型相關功能(包括Django管理員)。更多關於[這裏](https://developers.google.com/cloud-sql/docs/django)。 – 2012-02-16 17:32:35