|
|
Línia 1: |
Línia 1: |
− | Django és un ''framework'' per sites web basat en Python. | + | Django és un ''framework web'' basat en Python molt popular. Està orientat a la rapidesa de desenvolupament. |
| | | |
− | OJU amb les versions. Per GAE 1.8.7 cal Django <= 1.5 , és a dir <strike>no Django 1.6</strike> (Nov 2013).
| + | Django or "The web framework for perfectionists with deadlines". |
| | | |
| | | |
− | == Referències vàries == | + | == Introducció == |
| + | Es basa en un '''paradigma MTV o Model-Template-View'''. És similar al arxiconegut MVC o Model-View-Controller, però la terminologia pot induir a confusions. En el cas de MVC, la ''view'' és la part visual o GUI, mentre que en el MTV, la ''view'' és el codi amb la lògica de negoci (equivaldria al ''controller'' del MVC). |
| | | |
− | TODO: revisar: http://w144.bcn.cat/cibernarium/cat/activitats/editActivitat-ws/programacio-amb-python-amb-l-entorn-django.do?id=683753
| + | ULL doncs amb els noms! |
| + | Model - '''View''' - Controller |
| + | Model - Template - '''View''' |
| | | |
− | Algunes referències:
| + | Django està molt implantat a tot el món web, disposa de gran prestigi i té un creixement ràpid de desenvolupadors i ofertes de feina relacionades. |
− | * 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:
| |
− | ** 1.5 https://docs.djangoproject.com/en/1.5/topics/db/models/
| |
− | ** DEV https://docs.djangoproject.com/en/dev/ref/models/fields/
| |
− | * Enllaçar pàgines del front i back end (admin):
| |
− | ** http://stackoverflow.com/questions/9873582/adding-link-to-django-admin-page
| |
− | * Projecte exemple GAE+Django (amb django-nonrel): https://github.com/ecoopro/ecoop
| |
− | * Forms:
| |
− | ** https://docs.djangoproject.com/en/dev/topics/forms/
| |
− | ** https://docs.djangoproject.com/en/dev/topics/forms/modelforms/
| |
− | * 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
| |
− | * ...
| |
| | | |
| <br> | | <br> |
| | | |
− | == Django == | + | == Preparatius i instal·lació == |
| + | Per desenvolupar amb Django ens serà molt útil (per no dir imprescindible) utilitzar [[Virtualenv]]. |
| | | |
− | Setup:
| + | Abans de començar, [[Virtualenv|configura el teu entorn com s'explica en aquest article]]. |
− | * Virtualenv
| |
− | * Iniciar projecte <pre>$ django-admin.py startproject myproj</pre>
| |
− | * Iniciar app: <pre>$ python manage.py startapp myapp</pre>
| |
− | * settings.py:
| |
− | ** Ajustar DB
| |
− | ** Afegir app
| |
− | ** Activar admin
| |
− | * myapp/admin.py
| |
− | ** registrar models a administrar (admin forms) <pre>admin.site.register( Soci )</pre>
| |
− | * Crear myapp/models.py
| |
− | * Crear taules: <pre>$ python manage.py syncdb</pre>
| |
− | * Engegar site: <pre>$ python manage.py runserver</pre>
| |
| | | |
| <br> | | <br> |
| | | |
− | == Google App Engine == | + | == Backend == |
− | GAE:
| + | Per treballar el ''backend'' podem fer ús dels tutorials oficials de Django: |
− | * 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:<pre>$ wget http://googleappengine.googlecode.com/files/google_appengine_1.8.7.zip</pre>
| |
− | # Descomprimir l'arxiu al vostre ''home'' directory.
| |
− | # Afegir al PATH la ruta del SDK:<pre>$ export PATH=$PATH:~/google_appengine</pre>
| |
− | # 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'''
| |
| | | |
| <br> | | <br> |
| | | |
− | == Django i GAE == | + | == Frontend == |
− | Unint Django i GAE:
| |
− | * Django i GAE: https://developers.google.com/appengine/articles/django-nonrel
| |
− | * http://www.allbuttonspressed.com/projects/djangoappengine
| |
− | * Per [https://django-nonrel.readthedocs.org/en/latest/content/All%20Buttons%20Pressed%20-%20CMS%20&%20blog%20for%20Django-nonrel.html provar un CMS fet amb Django-nonrel] i per GAE.
| |
− | * Projecte GAE+Django (cooperativa):
| |
− | ** https://github.com/ecoopro/ecoop
| |
− | * ...
| |
− | | |
− | === Tutorial ===
| |
− | Realitzat amb Django 1.5.5 i GAE 1.8.7
| |
− | | |
− | | |
− | # Instal·la GIT i Mercurial: <pre>$ apt-get install git mercurial</pre>
| |
− | # Descarregueu el [https://developers.google.com/appengine/downloads#Google_App_Engine_SDK_for_Python GAE SDK], descomprimiu-lo (unzip) al vostre ''home directory'' i incloïu-ho al PATH amb: <pre>$ export PATH=$PATH:~/google_appengine</pre>
| |
− | # Descarregar la testapp amb:<pre>$ git clone https://github.com/django-nonrel/django-testapp.git</pre>
| |
− | # Descarregar la resta de paquets. Es pot fer de 2 maneres:
| |
− | ## Automàtica: <pre>$ ./build.sh</pre>
| |
− | ## Instal·lació manual (per diversos projectes):
| |
− | ##* Descarregar els paquets indicats aquí: <pre>http://www.allbuttonspressed.com/projects/djangoappengine</pre>
| |
− | ##* Instal·lar-los creant ''symlinks'' a l'arrel del nostre directori (tal i com explica la web).
| |
− | # Crear una app amb <pre>$ python manage.py startapp app1</pre>
| |
− | # Afegir la nova app al projecte. Modificar '''settings.py''': <pre>INSTALLED_APPS = ( ... ,'app1', ...)</pre>
| |
− | # Afegir el mòdul messages (no ve per defecte) a '''settings.py''':
| |
− | #: <pre>INSTALLED_APPS = ( ... , 'django.contrib.messages', ...)</pre>
| |
− | #: <pre>MIDDLEWARE_CLASSES = ( ... , 'django.contrib.messages.middleware.MessageMiddleware' , ... )</pre>
| |
− | # Crear usuari admin amb <pre>$ python manage.py createsuperuser</pre>
| |
− | # Editar model de dades;
| |
− | #* app1/models.py <pre>class ElmeuModel1(models.Model): ...</pre>
| |
− | #* app1/admin.py <pre>admin.site.register(ElMeuModel1)</pre>
| |
− | # Posar el server en marxa amb:<pre>$ python manage.py runserver</pre>
| |
− | # Visitar la site a
| |
− | #: http://localhost:8080/app1
| |
− | #: http://localhost:8080/app1/admin
| |
| | | |
| <br> | | <br> |
− |
| |
− | == 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
| |
Django és un framework web basat en Python molt popular. Està orientat a la rapidesa de desenvolupament.
Django or "The web framework for perfectionists with deadlines".
Introducció
Es basa en un paradigma MTV o Model-Template-View. És similar al arxiconegut MVC o Model-View-Controller, però la terminologia pot induir a confusions. En el cas de MVC, la view és la part visual o GUI, mentre que en el MTV, la view és el codi amb la lògica de negoci (equivaldria al controller del MVC).
ULL doncs amb els noms!
Model - View - Controller
Model - Template - View
Django està molt implantat a tot el món web, disposa de gran prestigi i té un creixement ràpid de desenvolupadors i ofertes de feina relacionades.
Preparatius i instal·lació
Per desenvolupar amb Django ens serà molt útil (per no dir imprescindible) utilitzar Virtualenv.
Abans de començar, configura el teu entorn com s'explica en aquest article.
Backend
Per treballar el backend podem fer ús dels tutorials oficials de Django:
Frontend