2010-01-01 15 views
27

Ich wollte den Status von laufenden Django auf der Google App Engine derzeit überprüfen und welche Vorteile der Betrieb von Django auf GAE über Webapp einfach.Django und App Engine

Django Hauptkiller Feature, IMHO, ist die wiederverwendbare Apps und Middleware. Leider verwenden die meisten aktuellen Django-Apps Modelle oder Modellformen (Django-Tags, Django-Reviews, Django-Profile, Pinax-Apps).

Was sind die verbleibenden Funktionen oder Vorteile, die django noch in Google App Engine ausführen kann (außer was deaktiviert ist: die beliebten Django-Apps, Session- und Authentifizierungs-Middleware, Benutzer und Admin, Modelle usw.).

Gibt es auch eine Liste der Django-Apps, die auch in App Engine funktionieren?

+3

Mögliche Betrogene: http://stackoverflow.com/questions/1011599/django-on-google-app-engine. – jbochi

Antwort

11

app-engine-patch hat derzeit die meisten Funktionen von django, einschließlich Sitzungen, contrib.auth, Seiten und einigen anderen Standard-Django-Apps. Der Hauptnachteil (meiner Meinung nach) ist jedoch, dass es eine Zip-Datei einer modifizierten Version von Django verwendet, um diese Funktionalität zu erreichen, und die derzeitigen Betreuer scheinen nicht mit den aktuellen Django-Veröffentlichungen Schritt gehalten zu haben. Gegenwärtig scheint es der Konsens der bisherigen und derzeitigen Projektbetreuer zu sein, dass dieser Ansatz zu mühsam zu pflegen ist und daher derzeit niemand ihn aufrecht erhält.

google-app-engine-django, verwendet einen Affen Patch-Ansatz der neuesten Django-Version in der Produktion GAE-Laufzeit enthalten, so lange wie Google weiterhin Django-Versionen verfolgen werden Sie auf dem Laufenden über django gehalten werden. Es ist jedoch zur Zeit nicht vollständig portred.auth portiert, so dass Sie nur mit Google-Konten authentifizieren können - was ein großer Nachteil sein kann, abhängig davon, ob die Benutzermodelle von contrib.auth so funktionieren sollen, wie Sie sie auf sql-Backends kennen. Es gibt auch keinen Django-Admin-Support im Helper wie in App-Engine-Patch. Eine fork of django-app-engine-django ist vorhanden, die einige der Contrib-Apps wie Flatpages, Sites und Sitemaps hinzufügt. Beachten Sie auch, dass es nur bei Django-Versionen bis 1.1 funktioniert, bis issue #3230 Django 1.2 zu use_library hinzugefügt wird, es sei denn, Sie laden django als Zip-Datei hoch.

Am Horizont hat der ursprüngliche Entwickler von app-engine-patch am Zweig django-nonrel gearbeitet, aber das ist ziemlich weit davon entfernt, in einem Django-Release enthalten zu sein. Diese django developers thread hat eine Menge Informationen über diese Bemühungen.

Separat gibt es ein google summer of code Projekt, das an der Integration einiger Aspekte von nonrel db's arbeitet.

+0

Danke. Es ist sehr schön, Djangos Unterstützung für Gae in eine bessere Richtung zu sehen und dass dieses Ziel nicht aufgegeben wurde. – notnoop

+3

app-engine-patch scheint aufgegeben zu werden – Casebash

3

app-engine-patch bekommt die meisten dieser Dinge in App Engine arbeiten - so können Sie (meist) gerade Modelforms verwenden, verwenden Sie die Django Benutzer und admin, usw.

ich es nur für recht einfache Projekte verwendet haben (ganz zu sein Neu bei Django), aber sie behaupten, dass die meisten Django-Apps mit (höchstens) kleineren Änderungen an der Appengine arbeiten. App-Engine-Patch verwendet zum Beispiel die AppEngine Model-Klassen und nicht die Django-Klassen. und es gibt einige der grundlegenden Ansichten, die zu ineffizient auf Apengine laufen.

hinzugefügt: google-app-engine-django ist ähnlich; bietet aber ein BaseModel, das identisch mit Djangos BaseModel erscheint. Mein Verständnis ist, dass Google-App-Engine-Django von Google veröffentlicht wurde, dann gegabelt, um App-Engine-Patch zu erstellen. Die Betreuer von app-engine-patch scheinen verschiedene Ziele von den Entwicklern von Google-app-engine-django zu haben, so dass Sie vielleicht feststellen werden, dass einer der beiden Ihren Anforderungen besser entspricht als der andere.

Google hat some articles zum Ausführen von Django-Apps auf appengine bereitgestellt; Das Neueste ist eigentlich ein Gastbeitrag von den Autoren von app-engine-patch.

+1

App-Engine-Patch scheint in den letzten vier Monaten aufgegeben worden zu sein, und beide Projekte helfen nicht bei den wiederverwendbaren Apps (Ponix, etc.). Google-Artikel scheinen ein bisschen alt zu sein (nur ein Artikel vom Mai 2009 und alles andere stammt aus dem Jahr 2008). – notnoop

1

Ich hatte den besten Erfolg, indem ich einfach die Django-Funktionen, die ich brauche, auswähle und auswähle und sie selbst in webapp einfüge. In meinem letzten Projekt habe ich eigentlich nur die Webapp-Sachen komplett ausgeschnitten. Ich importiere und rufe immer noch mehrere Webapp Utility-Funktionen auf, aber es ist meistens eine Hand-Roll-Anwendung, die aus den guten Teilen von GAE und Django aufgebaut ist.

1

Sie könnten daran interessiert sein, web2py, ein anderes Python-Framework, das angeblich weniger Reibung zwischen GAE und einem "normalen" Webserver hat.

0

Die Django-Version mit App Engine has been updated to 1.2.5 mit der neuesten SDK-Version (1.4.2, changelog). Diese Version ist über die use_library() Deklaration erhältlich, so dass Sie nicht mehr im gleichen Maße mit Affenflicken herumalbern müssen.

0

Die GoogleAppEngine (GAE) Python 2.7-Laufzeitumgebung bietet neben der Python-Standardbibliothek, den GAE-Tools und der GAE Python-Laufzeitumgebung mehrere Bibliotheken von Drittanbietern, die von Ihrer Anwendung verwendet werden können. Einer von ihnen ist Django. Die unten von der GAE docs Seite auf third-party libraries kopiert:

verwenden Django in Python 2.7, geben Sie die WSGI Anwendung und Django Bibliothek in app.yaml:

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

libraries: 
- name: django 
    version: "1.2" 
+0

"Allerdings können Django-Anwendungen von Drittanbietern, die die Django-Datenmodellierungsschnittstelle verwenden, insbesondere Djangos Admin-Anwendung, nicht direkt mit App Engine funktionieren" - von der Seite. – notnoop

+0

@notnoop Tatsächlich. Dies kann sich jedoch durch [Google Cloud SQL] (https://developers.google.com/cloud-sql/) bald ändern. Standard-Django-modellabhängige Funktionen (einschließlich des Django-Administrators) sollten unterstützt werden, sobald eine DB mit der gehosteten App Engine-App bereitgestellt wird. Mehr dazu [hier] (https://developers.google.com/cloud-sql/docs/django). –