2010-01-08 6 views

Respuesta

9

use_library carga una versión sin parchar de django en el entorno de producción, por lo que muchas cosas no funcionarán de la caja en el motor de la aplicación.

El asistente aplica una serie de parches a las bibliotecas django para habilitar cosas como Sesiones, prueba, marco de caché, etc. Si no agrega su propia copia de django a su aplicación auxiliar y está utilizando la última versión (r100 o superior), el ayudante primero intenta cargar django 1.1 y si no tiene éxito, carga 1.0. Puedes ver esto en appengine_django/__init__.py::LoadDjango.

En producción GAE, django 1.1 siempre existe, por lo que se carga primero.

Sin embargo, en su entorno de desarrollo, el SDK del servidor dev no distribuye Django. Por lo tanto, usa cualquier versión de Django que pueda encontrar, primero probando 1.1 y luego 1.0 y si no puede encontrar uno, arroja UnacceptableVersionError.

Probablemente desee utilizar el helper y no use_library porque entonces necesitará parchear las librerías de django en bruto, duplicando así el trabajo en el helper. Ya sea que distribuya su propia versión de django, ya sea como una carpeta o un archivo zip, depende de usted. Una de las ventajas de no distribuir su propia copia de django es que, a medida que Google aplica los parches de seguridad, los obtiene automáticamente sin tener que volver a implementar su aplicación.

+0

Así que use Django Helper, pero asegúrese de que usemos la última revisión. Gran respuesta, gracias. –

+0

Consulta final: ¿creo que todavía necesitamos incluir 1.1 en un django.zip? –

+0

No, si desea usar 1.1, el asistente cargará 1.1 para usted, no necesita incluir 1.1 en un archivo zip django. – dar

1

FYI, hay al menos una forma más de obtener Django 1.1 en GAE.

Tome un vistazo a http://code.google.com/p/app-engine-patch/

Se permite el uso de usar la mayor parte de Django características que incluyen administración.

+0

Según lo comentado por Chango, el parche de la aplicación del motor parece estar [muerto] (http://code.google.com/p/app-engine-patch/issues/detail?id=253). – Casebash

3

la sustitución se llama django-nonrel (y djangoappengine) ... se puede encontrar en http://www.allbuttonspressed.com ... con django- nonrel, ¡deberías poder ejecutar aplicaciones de Django puro encima de App Engine sin modificar tus modelos!

1

A partir de GAE 1.5.0, hay una manera mucho más simple de especificar una versión de Django.

En appengine_congif.py, incluyen la línea

webapp_django_version = '1.2' 

Esto hará que el use_libary() suceda bajo las sábanas.

Cuestiones relacionadas