User Tools

Site Tools


django

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
django [2010/05/18 17:26] ginkodjango [2010/10/12 10:54] (current) ginko
Line 7: Line 7:
   * Le très pythonique "L'explicite est mieux que l'implicite"   * Le très pythonique "L'explicite est mieux que l'implicite"
 Source: [[http://docs.djangoproject.com/en/dev/misc/design-philosophies/]] Source: [[http://docs.djangoproject.com/en/dev/misc/design-philosophies/]]
 +===== Ressources ===== 
 +  * [[astuces_django|Astuces]] 
 +  * [[http://www.django-fr.org/|django-fr]] 
 +  * [[http://www.djangobook.com/en/1.0/|The Django Book]] 
 +===== Django & Ajax ===== 
 +  * [[http://www.b-list.org/weblog/2006/jul/02/django-and-ajax/|Un article de blog intéressant sur le sujet]] 
 +  * [[http://www.dajaxproject.com/|Un projet d'intégration d'Ajax dans Django]] 
 +===== Advocacy ===== 
 +  * [[http://stackoverflow.com/questions/1293361/how-to-convince-my-boss-to-use-django]]
 ===== Création d'un projet ===== ===== Création d'un projet =====
 Source: [[http://docs.django-fr.org/intro/tutorial01.html]] Source: [[http://docs.django-fr.org/intro/tutorial01.html]]
Line 24: Line 32:
 # ou: # ou:
 python manage.py runserver 0.0.0.0:8000</code>, ilest accessible à l'adesse: [[http://127.0.0.1:8000]] python manage.py runserver 0.0.0.0:8000</code>, ilest accessible à l'adesse: [[http://127.0.0.1:8000]]
-=== Base de données ===+==== Base de données ====
 Editer ''settings.py'': Editer ''settings.py'':
   * ''DATABASE_ENGINE'': 'postgresql_psycopg2', 'mysql' ou 'sqlite3'.   * ''DATABASE_ENGINE'': 'postgresql_psycopg2', 'mysql' ou 'sqlite3'.
Line 31: Line 39:
   * ''DATABASE_PASSWORD'': obvious!   * ''DATABASE_PASSWORD'': obvious!
   * ''DATABASE_HOST'': obvious!   * ''DATABASE_HOST'': obvious!
-== SyncDB == +=== SyncDB === 
-SyncDB est une option de ''manage.py''; elle permet de s'assurer que la base possède une structure apte à héberger les données de toutes les applications indiquées dans les ''INSTALLED_APPS'' de settings.py''. Elle crée donc ce qu'il faut en plus si c'est nécessaire.+SyncDB est une option de ''manage.py''; elle permet de s'assurer que la base possède une structure apte à héberger les données de toutes les applications indiquées dans les ''INSTALLED_APPS'' de ''settings.py''. Elle crée donc ce qu'il faut en plus si c'est nécessaire.
 <code python>python manage.py syncdb</code> <code python>python manage.py syncdb</code>
 +==== Création d'une application ====
 +Dans le répertoire ''mysite'':<code python>python manage.py startapp polls</code>
 +Cela crée un nouveau répertoire appelé ''polls'' avec dedans:
 +<code python>polls/
 +    __init__.py
 +    models.py
 +    views.py</code>
 +  * ''models.py'' contient le modèle des données (généré par l'ORM via SyncDB).
 +  * ''views.py'' contient les vues.
 +==== Admin ====
 +Django comporte une module d'administration pré-installé. Pour l'activer:
 +  * Ajouter ''django.contrib.admin'' dans votre option ''INSTALLED_APPS''.
 +  * Lancer <code python>python manage.py syncdb</code>. Puisque vous avez ajouté une nouvelle application à ''INSTALLED_APPS'', les tables de la base de données ont besoin d’être mises à jour.
 +  * Editer ''urls.py'' en décommentant le pattern adéquat (commençant sans doute par ''(r'^admin'')
 +  * Rendre une appli modifiable par l'admin:<code python>from mysite.polls.models import Poll
 +from django.contrib import admin
  
 +admin.site.register(Poll)</code> dans ''admin.py''
 +==== Installer django sur un hébergement ====
 +  * [[http://rabaix.net/en/articles/2007/08/31/how-to-install-django-on-ovh-net|Installer Djangi sur un hébergement OVH]]
 +===== Common Bad Programming Pattern =====
 +==== Importation croisée ====
 +Lorsque l'on rencontre l'erreur suivante:
 +<code>Caught ViewDoesNotExist while rendering: Could not import reporter.reports2.mesure.views. Error was: ...</code>
 +Et que cette erreur se produit sur n'importe quelle url de l'appli, il y a des chances qu'elle provienne d'une importation croisée: un module importe une ressource provenant d'un second module qui lui-même importe une ressource du premier module. Python n'arrive pas à réaliser le second import.
 +Cette erreur est d'autant plus perfide que la stack est très obscure et provient en apparence d'un truc qui n'a rien à voir avec le problème (sauf bien sur le module que Python n'arrive pas à importer).
django.1274196384.txt.gz · Last modified: 2010/05/18 17:26 by ginko