EDITADO:Obsoleto. Para crear aplicaciones django sobre GAE en la actualidad es mejor usar
django-nonrel¿Qué es Google App Engine (GAE)?GAE te permite ejecutar aplicaciones Web en la infraestructura de google. Existe una versión Java y otra Python.
http://code.google.com/intl/es-ES/appengine/docs/GAE admite cualquier framework creado en su totalidad con Python que utilice el estándar CGI (y cualquier framework compatible con WSGI que utilice un adaptador de CGI), incluidos Django, CherryPy, Pylons y web.py. Como ya tengo experiencia con Django me he decantado por este framework. El principal problema a la hora de usar Django con GAE, es la diferencia que hay entre las bases de datos y por lo tanto en los modelos. GAE sólo permite el uso de su base de datos por lo que es necesario adecuar los modelos de Django a este almacén de datos.
Para poder usar Django con GAE, se ha creado un helper que se puede encontrar en
http://code.google.com/p/google-app-engine-django/. funciona prácticamente igual que Django solo que los modelos hay que crearlos de forma diferente.
Mi intención no es crear un tutorial de como usar Django en GAE, sino que voy a enlazar a github un par de ejemplos que estoy haciendo. Para mi, lo mejor siempre es ver código y analizar lo que hace. Si no se tiene ningún conocimiento ni de GAE ni de Django, recomiendo primero realizar los siguientes tutoriales.
https://docs.djangoproject.com/en/dev/intro/tutorial01/http://code.google.com/intl/es/appengine/docs/python/gettingstarted/EjemplosEl primero es una aplicación de lo más simple. Es el primer ejemplo que he hecho con GAE + Django. Es un libro de visitas lo más simple posible. Me parece importante que el primer ejemplo sea muy simple para poder entenderlo sin problemas, luego, añadir funcionalidades será más fácil.
[GITHUB]:
https://github.com/pablito80/testgaedjg[APPSPOT]:
http://app-pablog.appspot.com/guestbook/ (Si entras, déjame algún comentario.)
El otro es un poco más complicado, es mi página personal aunque tampoco es nada del otro mundo.
[GITHUB]:
https://github.com/pablito80/pablovieytes-app[APPSPOT]:
http://pablovieytes-app.appspot.com/ o
http://www.pablovieytes.comSi vas a usar alguna de mis pruebas, asegurate de cambiar el nombre de la app en el fichero "app.yaml"
y el código secreto de Django en "settings.py".
Para que funcionen correctamente es necesario usar python 2.6 y Django 1.1 ya que es lo que usa GAE, lo suyo es crearse un
entrono virtual con estas características.
Ejemplo de como crear un virtualenv en Ubuntu.
Si no se tiene Python 2.6 hay que instalarlo
sudo aptitude install python2.6
crear el entorno virtual con python 2.6
virtualenv --no-site-packages --python=python2.6 GAEVENV
activamos el virtualenv:
source GAEVENV/bin/activate
instalamos Django1.1 en el virtualenv que hemos creado:
Para comprobar que todo está correcto ejecutar el siguiente comando
El resultado tiene que incluir Django==1.1
Paso a paso
Vamos a ver paso a paso como se ejecutaría en local el primer ejemplo.
clonamos el proyecto:
git clone git@github.com:pablito80/testgaedjg.git
Entramos en el directorio del proyecto
Copiamos el contenido del
sdk de GAE en el directorio del proyecto dentro del directorio .google_appengine.
El árbol del directorio del proyecto quedará más o menos así:
testgaedjg
├── appengine_django
│ ├── auth
│ ├── ...
├── .google_appengine
│ ├── appcfg.py
│ ├──BUGS
│ ├──...
├── app.yaml
├── guestbook
│ ├── __init__.py
│ ├── ...
├── __init__.py
├── main.py
├── manage.py
├── readme.md
├── requirements.txt
├── settings.py
├── templates
│ ├── base.html
│ ├── guestbook
│ │ └── guestbook.html
│ └── home.html
├── urls.py
└── views.py
Para iniciar el servidor de pruebas en local, se inicia de la misma manera que Django. Hay que tener activado el virtualenv.
source path/del/virtualenv/bin/activate
python manage.py runserver
y la página estará disponible en:
Si vas a hacer corta y pega con alguno de mis ejemplos, acuerdate de cambiar el nombre de la aplicación y el código secreto.
Yo utilizo el siguiente comando desde el directorio del proyecto para actualizar la aplicación en los servidores de google:
.google_appengine/appcfg.py update .