User Tools

Site Tools


django

This is an old revision of the document!


Django

Django est un framework web sur Python inspiré en partie de Ruby on Rails. Ses Leitmotiv sont:

  • Faible couplage
  • Aussi peu de code que possible
  • Développement rapide
  • Ne pas se répéter
  • Le très pythonique “L'explicite est mieux que l'implicite”

Source: http://docs.djangoproject.com/en/dev/misc/design-philosophies/

Ressources

Django & Ajax

Création d'un projet

Source: http://docs.django-fr.org/intro/tutorial01.html

  • S'assurer que Django est bien installé
  • Se placer dans le répertoire de son choix et taper:
    django-admin.py startproject mysite
    • Cela crée:
      • Un répertoire nommé mysite
      • __init__.py (package python)
      • manage.py (utilitaire CLI de gestion du projet)
      • settings.py (configuration)
      • urls.py (controleur)

Serveur de dev

Pour le lancer:

python manage.py runserver
# ou:
python manage.py runserver 0.0.0.0:8000

, ilest accessible à l'adesse: http://127.0.0.1:8000

Base de données

Editer settings.py:

  • DATABASE_ENGINE: 'postgresql_psycopg2', 'mysql' ou 'sqlite3'.
  • DATABASE_NAME: obvious!
  • DATABASE_USER: obvious!
  • DATABASE_PASSWORD: obvious!
  • DATABASE_HOST: obvious!

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.

python manage.py syncdb

Création d'une application

Dans le répertoire mysite:

python manage.py startapp polls

Cela crée un nouveau répertoire appelé polls avec dedans:

polls/
    __init__.py
    models.py
    views.py
  • 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
    python manage.py syncdb

    . 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:
    from mysite.polls.models import Poll
    from django.contrib import admin
     
    admin.site.register(Poll)

    dans admin.py

Installer django sur un hébergement

Common Bad Programming Pattern

Importation croisée

Lorsque l'on rencontre l'erreur suivante:

Caught ViewDoesNotExist while rendering: Could not import reporter.reports2.mesure.views. Error was: ...

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.1286550633.txt.gz · Last modified: 2010/10/08 17:10 by ginko