User Tools

Site Tools


django

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

Advocacy

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.txt · Last modified: 2010/10/12 10:54 by ginko