Django est un framework web sur Python inspiré en partie de Ruby on Rails. Ses Leitmotiv sont:
Source: http://docs.djangoproject.com/en/dev/misc/design-philosophies/
Source: http://docs.django-fr.org/intro/tutorial01.html
django-admin.py startproject mysite
mysite
__init__.py
(package python)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
Editer settings.py
:
DATABASE_ENGINE
: 'postgresql_psycopg2', 'mysql' ou 'sqlite3'.DATABASE_NAME
: obvious!DATABASE_USER
: obvious!DATABASE_PASSWORD
: obvious!DATABASE_HOST
: obvious!
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
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.Django comporte une module d'administration pré-installé. Pour l'activer:
django.contrib.admin
dans votre option INSTALLED_APPS
.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.
urls.py
en décommentant le pattern adéquat (commençant sans doute par (r'^admin
)from mysite.polls.models import Poll from django.contrib import admin admin.site.register(Poll)
dans admin.py
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).