diff --git a/source/forms.rst b/source/forms.rst index 1648eaf..5de4f83 100644 --- a/source/forms.rst +++ b/source/forms.rst @@ -1,6 +1,6 @@ -=========== -Formulaires -=========== +======================================== +Formulaires: comment valider des données +======================================== Quand on parle de ``forms``, on ne parle pas uniquement de formulaires Web. On pourrait considérer qu'il s'agit de leur objectif principal, mais on peut également voir un peu plus loin: on peut en fait voir les ``forms`` comme le point d'entrée pour chaque donnée arrivant dans notre application: il s'agit en quelque sorte d'un ensemble de règles complémentaires à celles déjà présentes au niveau du modèle. diff --git a/source/specs.rst b/source/gwift.rst similarity index 67% rename from source/specs.rst rename to source/gwift.rst index d0813e8..bb8db13 100644 --- a/source/specs.rst +++ b/source/gwift.rst @@ -10,4 +10,18 @@ La première chose à faire est de définir nos besoins du point de vue de l'uti Ensuite, nous pourrons traduire ces besoins en fonctionnalités et finalement effectuer le développement -.. include:: specs/00-specs.rst +.. include:: gwift/00-specs.rst +.. include:: gwift/01-models.rst +.. include:: gwift/tests.rst + +.. todo:: Ajouter pourquoi on hérite de ``models.Model``, etc. + +.. include:: gwift/key-points.rst + +.. include:: gwift/refactoring.rst + +.. include:: gwift/user-management.rst + +.. include:: gwift/console.rst + +.. include:: gwift/metamodel.rst diff --git a/source/specs/00-specs.rst b/source/gwift/00-specs.rst similarity index 100% rename from source/specs/00-specs.rst rename to source/gwift/00-specs.rst diff --git a/source/models/models.rst b/source/gwift/01-models.rst similarity index 87% rename from source/models/models.rst rename to source/gwift/01-models.rst index e2d521d..45c5812 100644 --- a/source/models/models.rst +++ b/source/gwift/01-models.rst @@ -137,3 +137,41 @@ Ceci nous donne après implémentation: email = models.CharField(email = models.CharField(max_length=255, unique=True) +************ +Modélisation +************ + +L'ORM de Django permet de travailler uniquement avec une définition de classes, et de faire en sorte que le lien avec la base de données soit géré uniquement de manière indirecte, par Django lui-même. On peut schématiser ce comportement par une classe = une table. + +Comme on l'a vu dans la description des fonctionnalités, on va *grosso modo* avoir besoin des éléments suivants: + + * Des listes de souhaits + * Des éléments qui composent ces listes + * Des parts pouvant composer chacun de ces éléments + * Des utilisateurs pour gérer tout ceci. + +Nous proposons dans un premier temps d'éluder la gestion des utilisateurs, et de simplement se concentrer sur les fonctionnalités principales. +Cela nous donne ceci: + +.. code-block:: python + + # wish/models.py + + from django.db import models + + + class Wishlist(models.Model): + pass + + + class Item(models.Model): + pass + + + class Part(models.Model): + pass + + +Les classes sont créées, mais vides. Entrons dans les détails. + + diff --git a/source/models/console.rst b/source/gwift/console.rst similarity index 100% rename from source/models/console.rst rename to source/gwift/console.rst diff --git a/source/models/key-points.rst b/source/gwift/key-points.rst similarity index 100% rename from source/models/key-points.rst rename to source/gwift/key-points.rst diff --git a/source/models/metamodel.rst b/source/gwift/metamodel.rst similarity index 100% rename from source/models/metamodel.rst rename to source/gwift/metamodel.rst diff --git a/source/models/refactoring.rst b/source/gwift/refactoring.rst similarity index 100% rename from source/models/refactoring.rst rename to source/gwift/refactoring.rst diff --git a/source/tests.rst b/source/gwift/tests.rst similarity index 100% rename from source/tests.rst rename to source/gwift/tests.rst diff --git a/source/models/user-management.rst b/source/gwift/user-management.rst similarity index 100% rename from source/models/user-management.rst rename to source/gwift/user-management.rst diff --git a/source/index.rst b/source/index.rst index f0708a5..01491e3 100644 --- a/source/index.rst +++ b/source/index.rst @@ -13,16 +13,13 @@ Contents: :numbered: intro - specs - models - tests + gwift + integration + production mvc forms auth admin - docs - integration - production summary Indices and tables diff --git a/source/intro.rst b/source/intro.rst index cda8e55..9d24991 100644 --- a/source/intro.rst +++ b/source/intro.rst @@ -16,3 +16,5 @@ Django se présente comme un `Framework Web pour perfectionnistes ayant des dead .. include:: intro/02-create-django-app.rst .. include:: intro/03-before-going-further.rst + +.. include:: intro/04-docs.rst diff --git a/source/intro/02-create-django-app.rst b/source/intro/02-create-django-app.rst index 9cf1b6b..ff26267 100644 --- a/source/intro/02-create-django-app.rst +++ b/source/intro/02-create-django-app.rst @@ -1,6 +1,6 @@ -********************** -Une application Django -********************** +******************* +L'espace de travail +******************* Comme on l'a vu ci-dessus, ``django-admin`` permet de créer un nouveau projet. On fait ici une distinction entre un **projet** et une **application**: diff --git a/source/docs.rst b/source/intro/04-docs.rst similarity index 100% rename from source/docs.rst rename to source/intro/04-docs.rst diff --git a/source/models.rst b/source/models.rst deleted file mode 100644 index 4b8e529..0000000 --- a/source/models.rst +++ /dev/null @@ -1,50 +0,0 @@ -============ -Modélisation -============ - -L'ORM de Django permet de travailler uniquement avec une définition de classes, et de faire en sorte que le lien avec la base de données soit géré uniquement de manière indirecte, par Django lui-même. On peut schématiser ce comportement par une classe = une table. - -Comme on l'a vu dans la description des fonctionnalités, on va *grosso modo* avoir besoin des éléments suivants: - - * Des listes de souhaits - * Des éléments qui composent ces listes - * Des parts pouvant composer chacun de ces éléments - * Des utilisateurs pour gérer tout ceci. - -Nous proposons dans un premier temps d'éluder la gestion des utilisateurs, et de simplement se concentrer sur les fonctionnalités principales. -Cela nous donne ceci: - -.. code-block:: python - - # wish/models.py - - from django.db import models - - - class Wishlist(models.Model): - pass - - - class Item(models.Model): - pass - - - class Part(models.Model): - pass - - -Les classes sont créées, mais vides. Entrons dans les détails. - -.. todo:: Ajouter pourquoi on hérite de ``models.Model``, etc. - -.. include:: models/models.rst - -.. include:: models/key-points.rst - -.. include:: models/refactoring.rst - -.. include:: models/user-management.rst - -.. include:: models/console.rst - -.. include:: models/metamodel.rst