User Tools

Site Tools


django

Differences

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

Link to this comparison view

Next revision
Previous revision
django [2010/05/18 17:24] – created ginkodjango [2010/10/12 10:54] (current) ginko
Line 1: Line 1:
 ====== Django ====== ====== Django ======
-Django est un framework web sur Python inspiré en partie de Ruby on Rails. Ses Leitmotiv sont:+Django est un framework web sur [[python|Python]] inspiré en partie de Ruby on Rails. Ses Leitmotiv sont:
   * Faible couplage   * Faible couplage
   * Aussi peu de code que possible   * Aussi peu de code que possible
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 23: 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 30: 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.1274196286.txt.gz · Last modified: 2010/05/18 17:24 by ginko