2010-01-08 11 views
7

Wydaje się, że 2 sposoby używać Django 1.1 z GAEDjango + Google App Engine: helper mechanizmu aplikacji dla django lub use_library?

Obecnie wykorzystywane pierwsze. Czy powinniśmy się przełączyć? I jaka jest różnica między tymi dwoma?

+0

Duplikat: http://stackoverflow.com/questions/1237516/should-i-use-google-app-engine-django-or-app-engine-patch-or-neither-or-something – Casebash

Odpowiedz

9

ładuje niezałatowaną wersję django w środowisku produkcyjnym, więc wiele rzeczy nie będzie działać po wyjęciu z pudełka na silniku aplikacji.

Pomocnik stosuje szereg poprawek do bibliotek django, aby włączyć takie rzeczy jak sesje, test, szkielet pamięci podręcznej itp. Jeśli nie dodasz własnej kopii django do aplikacji pomocniczej i używasz najnowszej wersji (r100 lub wyższy), pomocnik najpierw próbuje załadować django 1.1, a jeśli się nie uda, ładuje 1.0. Możesz to zobaczyć w appengine_django/__init__.py::LoadDjango.

W produkcyjnym GAE django 1.1 zawsze istnieje, więc jest ładowany jako pierwszy.

Jednak w środowisku programistycznym pakiet SDK serwera dev nie dystrybuuje Django. Dlatego używa jakiejkolwiek wersji Django, którą może znaleźć, najpierw próbując 1.1, a potem 1.0, a jeśli nie może znaleźć, wtedy rzuca UnacceptableVersionError.

Prawdopodobnie chcesz użyć helpera, a nie use_library, ponieważ wtedy będziesz musiał sam załatać surowe biblioteki django, powielając pracę w pomocniku. Niezależnie od tego, czy dystrybuujesz własną wersję django, czy jako folder lub plik zip jest do Ciebie. Jedną z zalet nie dystrybuowania własnej kopii django jest to, że gdy Google stosuje poprawki zabezpieczeń, automatycznie otrzymuje je bez konieczności ponownego wdrażania aplikacji.

+0

Używaj więc Django Helper, ale upewnij się, że używamy najnowszej wersji. Świetna odpowiedź, dzięki. –

+0

Końcowe zapytanie - uważam, że musimy jeszcze uwzględnić plik 1.1 w pliku django.zip? –

+0

Nie, jeśli chcesz użyć 1.1, helper załaduje 1.1 dla Ciebie, nie musisz dołączać pliku 1.1 do pliku zip Django. – dar

1

FYI, istnieje co najmniej jeden sposób na uzyskanie Django 1.1 w GAE.

Spójrz na http://code.google.com/p/app-engine-patch/

To pozwala na korzystanie korzystać z większości funkcji, w tym Django Admin.

+0

Skomentował: Wydaje się, że Chango, łatka mechanizmu aplikacji, jest [dead] (http://code.google.com/p/app-engine-patch/issues/detail?id=253). – Casebash

3

wymiana nazywa django-nonrel (i djangoappengine) ... można go znaleźć w http://www.allbuttonspressed.com ... z django- nonrel, powinieneś być w stanie uruchamiać czyste aplikacje Django na App Engine bez ulepszania swoich modeli!

1

Od wersji GAE 1.5.0 istnieje znacznie prostszy sposób określania wersji Django.

W appengine_congif.py, to linia

webapp_django_version = '1.2' 

Spowoduje to use_libary() się dziać pod kołdrą.

Powiązane problemy