Django
Django és un framework per sites web basat en Python.
OJU amb les versions. Per GAE 1.8.7 cal Django <= 1.5 , és a dir no Django 1.6 (Nov 2013).
Contingut
Referències vàries
TODO: revisar: http://w144.bcn.cat/cibernarium/cat/activitats/editActivitat-ws/programacio-amb-python-amb-l-entorn-django.do?id=683753
Algunes referències:
- http://www.djangoproject.com
 - Tutorial estupendu: https://docs.djangoproject.com/en/1.6/intro/tutorial01/
 - Extendre els camps del User: http://stackoverflow.com/questions/44109/extending-the-user-model-with-custom-fields-in-django
 - Model camps (fields) en Django:
 - Enllaçar pàgines del front i back end (admin):
 - Projecte exemple GAE+Django (amb django-nonrel): https://github.com/ecoopro/ecoop
 - Forms:
 - Singletons en Django (útil per la config): http://goodcode.io/blog/django-singleton-models/
 - Uploading files: https://docs.djangoproject.com/en/dev/topics/http/file-uploads/
 - Static files: https://docs.djangoproject.com/en/dev/howto/static-files/
 - Deployment amb buildout: https://pypi.python.org/pypi/djangorecipe/1.7
 - ...
 
Django
Setup:
- Virtualenv
 - Iniciar projecte 
$ django-admin.py startproject myproj
 - Iniciar app: 
$ python manage.py startapp myapp
 - settings.py:
- Ajustar DB
 - Afegir app
 - Activar admin
 
 - myapp/admin.py
- registrar models a administrar (admin forms) 
admin.site.register( Soci )
 
 - registrar models a administrar (admin forms) 
 - Crear myapp/models.py
 - Crear taules: 
$ python manage.py syncdb
 - Engegar site: 
$ python manage.py runserver
 
Google App Engine
GAE:
- Tutorial Python: https://developers.google.com/appengine/docs/python/gettingstartedpython27/introduction
 - Darreres versions: https://developers.google.com/appengine/downloads#Google_App_Engine_SDK_for_Python
 - ...
 
Per instal·lar la darrera versió de GAE per Python:
- Descarrega-la del link indicat més amunt. Per exemple, en aquests moments la darrera versió és:
$ wget http://googleappengine.googlecode.com/files/google_appengine_1.8.7.zip
 - Descomprimir l'arxiu al vostre home directory.
 - Afegir al PATH la ruta del SDK:
$ export PATH=$PATH:~/google_appengine
 - Si voleu deixar aquesta configuració permanent per no haver de fer-la cada cop que engegues la màquina, afegeix la darrera línia al teu .bashrc
 
Django i GAE
Unint Django i GAE:
- Django i GAE: https://developers.google.com/appengine/articles/django-nonrel
 - http://www.allbuttonspressed.com/projects/djangoappengine
 - Per provar un CMS fet amb Django-nonrel i per GAE.
 - Projecte GAE+Django (cooperativa):
 - ...
 
Tutorial
Realitzat amb Django 1.5.5 i GAE 1.8.7
- Instal·la GIT i Mercurial: 
$ apt-get install git mercurial
 - Descarregueu el GAE SDK, descomprimiu-lo (unzip) al vostre home directory i incloïu-ho al PATH amb: 
$ export PATH=$PATH:~/google_appengine
 - Descarregar la testapp amb:
$ git clone https://github.com/django-nonrel/django-testapp.git
 - Descarregar la resta de paquets. Es pot fer de 2 maneres:
- Automàtica: 
$ ./build.sh
 - Instal·lació manual (per diversos projectes):
- Descarregar els paquets indicats aquí: 
http://www.allbuttonspressed.com/projects/djangoappengine
 - Instal·lar-los creant symlinks a l'arrel del nostre directori (tal i com explica la web).
 
 - Descarregar els paquets indicats aquí: 
 
 - Automàtica: 
 - Crear una app amb 
$ python manage.py startapp app1
 - Afegir la nova app al projecte. Modificar settings.py: 
INSTALLED_APPS = ( ... ,'app1', ...)
 - Afegir el mòdul messages (no ve per defecte) a settings.py:
INSTALLED_APPS = ( ... , 'django.contrib.messages', ...)
MIDDLEWARE_CLASSES = ( ... , 'django.contrib.messages.middleware.MessageMiddleware' , ... )
 - Crear usuari admin amb 
$ python manage.py createsuperuser
 - Editar model de dades;
- app1/models.py 
class ElmeuModel1(models.Model): ...
 - app1/admin.py 
admin.site.register(ElMeuModel1)
 
 - app1/models.py 
 - Posar el server en marxa amb:
$ python manage.py runserver
 - Visitar la site a
 
Projecte step by step
Install
Develop:
- Model
- Aprofitar herències
 
 - Admin
- Cerques: modelAdmin
 
 - Extending user
 - Forms
- Formsets
 - Multiforms
 
 
Deploy:
- Apache mod_wsgi / nginx?
 - WSGIScriptAlias
- Redirect problem: http://stackoverflow.com/questions/1036186/django-apache-redirect-problem
 - Solució 1: afegir site a la BBDD
 - Solució 2: utiltizar subdominis (alias al /)
 
 - WSGIPythonPath (libs virtualenv)
 - Serving static/media files