27 votes

Django et App Engine

Je voulais vérifier l'état de l'exécution de Django sur Google App Engine actuellement et quels sont les avantages de l'exécution de django sur GAE par rapport à simplement utiliser Webapp.

La principale fonctionnalité meurtrière de Django, à mon humble avis, est les applications et middleware réutilisables. Malheureusement, la plupart des applications Django actuelles utilisent des modèles ou des formulaires de modèle (django-tags, django-reviews, django-profiles, applications Pinax).

Quelles sont donc les fonctionnalités ou avantages restants que django possède qui peuvent toujours fonctionner sur Google App Engine (autres que ce qui est désactivé : les applications Django populaires, les middleware de session et d'authentification, les utilisateurs et l'administrateur, les modèles, etc.)

De plus, existe-t-il une liste des applications Django qui fonctionnent également sur App Engine ?

11voto

dar Points 4508

app-engine-patch possède actuellement la plupart des fonctionnalités de django, y compris les sessions, contrib.auth, sites, et quelques autres applications django standard. Cependant, son principal inconvénient (à mon avis) est qu'il utilise un fichier zip d'une version modifiée de django pour obtenir cette fonctionnalité et les mainteneurs actuels ne semblent pas avoir suivi le rythme des versions actuelles de django. Actuellement, il semble être le consensus des mainteneurs passés et présents que cette approche est trop complexe à maintenir et donc personne ne le maintient actuellement.

google-app-engine-django utilise une approche de correctif monkey patch de la dernière version de django incluse dans le runtime GAE de production, donc tant que google continue de suivre les versions de django, vous serez mis à jour en ce qui concerne django. Cependant, il n'a pas encore complètement porté contrib.auth, donc vous pouvez seulement vous authentifier avec des comptes google - ce qui peut être un gros inconvénient selon que vous souhaitez que les modèles d'utilisateurs contrib.auth fonctionnent comme vous les connaissez sur des bases sql. Il n'y a également aucun support de l'admin django dans l'assistant comme c'est le cas dans app-engine-patch. Une fork de django-app-engine-django existe qui ajoute certaines des applications contrib, telles que flatpages, sites, et sitemaps. Notez également que cela ne fonctionne que sur les versions de django jusqu'à 1.1, jusqu'à ce que l'issue #3230 Django 1.2 soit ajouté à use_library, à moins que vous ne téléchargiez django sous forme de fichier zip.

À l'avenir, le développeur original de app-engine-patch travaille sur la branche django-nonrel, mais cela pourrait être assez loin de faire partie d'une version de django. Ce thread des développeurs django contient beaucoup d'informations sur ces efforts.

À part cela, il y a un projet google summer of code qui travaille sur l'intégration de certains aspects des bases de données nonrel.

3voto

James Polley Points 4258

app-engine-patch fait fonctionner la plupart de ces choses à l'intérieur d'AppEngine - donc vous pouvez (principalement) utiliser directement Modelforms, utiliser les utilisateurs et l'administration de Django, etc.

Je ne l'ai utilisé que pour des projets assez simples (étant assez nouveau dans Django), mais ils affirment que la plupart des applications Django fonctionneront avec (au plus) de légères modifications sur appengine. Par exemple, app-engine-patch utilise les classes de modèle de AppEngine plutôt que les classes de Django; et il y a certaines des vues de base qui sont trop inefficaces pour fonctionner sur Appengine.

ajouté : google-app-engine-django est similaire; mais fournit un BaseModel qui semble identique au BaseModel de Django. J'ai compris que google-app-engine-django a été publié par Google, puis forké pour créer app-engine-patch. Les mainteneurs de app-engine-patch semblent avoir des objectifs différents de ceux des créateurs de google-app-engine-django, donc vous pourriez trouver que l'un des deux correspond mieux à vos besoins que l'autre.

Google a fourni quelques articles sur l'exécution d'applications Django sur AppEngine; le plus récent est en fait un article invité des auteurs de app-engine-patch.

1voto

Kris Walker Points 433

J'ai eu le plus de succès en choisissant simplement les fonctionnalités de Django dont j'ai besoin et en les intégrant moi-même dans l'application web. Dans mon dernier projet, j'ai en fait complètement supprimé les éléments de l'application web. J'importe toujours et j'appelle plusieurs fonctions utilitaires de l'application web, mais c'est principalement une application personnalisée construite à partir des bonnes parties de GAE et de Django.

1voto

user94154 Points 2945

Vous pourriez être intéressé de vérifier web2py, un autre framework Python qui prétend avoir moins de friction entre GAE et un serveur web "normal".

1voto

Alon Gutman Points 310

Il est maintenant assez facile d'utiliser Django complet sur GAE : https://developers.google.com/appengine/articles/django-nonrel#ps

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X