Valid XHTML     Valid CSS2    

DECRA, T.P. 4 :

     MVC en Python via Django

Décomposition, Conception et Réalisation d'Applications

                    gilles.hunault "at" univ-angers.fr

Table des matières cliquable

  1. Installation et test de Django (première partie)

  2. Deuxième partie : base de données

  3. Les vues (troisième partie)

  4. Les formulaires (partie quatre)

  5. Les tests (partie cinq) et la fin du tutoriel

  6. Une application plus complète entièrement en français

Il est possible d'afficher toutes les solutions via ?solutions=1 et de les masquer via ?solutions=0.

 

On se propose ici de reproduire le début du tutoriel de Django, en version anglaise ici et en version française .

Toutes les manipulations sont à faire dans un terminal, avec un éditeur de textes comme Geany ou Gedit.

 

1. Installation et test de Django (première partie)

Quels sont les deux sites les plus connus qui utilisent Django ?

Dans un terminal, taper pip3 install django==2.1.

Attendre que le système ait fini de télécharger et de décompresser l'archive pytz avant de continuer.


     gilles.hunault@h002-0:~$ pip3 install django
     Collecting django
       Downloading https://files.pythonhosted.org/packages/32/ab/22530cc1b2114e6067eece94a333d6c749fa1c56a009f0721e51c181ea53/Django-2.1.2-py3-none-any.whl (7.3MB)
         100% |                   | 7.3MB 219kB/s
     Collecting pytz (from django)
       Downloading https://files.pythonhosted.org/packages/52/8b/876c5745f617630be90cfb8fafe363c6d7204b176dc707d1805d1e9a0a35/pytz-2018.6-py2.py3-none-any.whl (507kB)
         100% |                   | 512kB 623kB/s
     Installing collected packages: pytz, django
     Successfully installed django pytz-2014.10
     

Que répond le système si on exécute python -m django --version ?

Ecrire l'alias suivant :


     alias "python=python3"
     

Si le fichier ~/.local/bin/django-admin existe, écrire l'alias suivant :


     alias "django-admin=~/.local/bin/django-admin"
     

Que répond désormais le système si on exécute python -m django --version ?

Lire le début du tutoriel partie 1, jusqu'à python manage.py runserver.

Commencer par créer un répertoire MVC-Django. Si, dans ce répertoire on exécute la commande django-admin startproject mysite combien de fichiers et de répertoires sont créés ? Quelles commandes Unix le prouvent ? Mettre dans liste1.txt la liste de tous les fichiers avec leur chemin d'accès relatif.

Vérifier que, dans le répertoire mysite, la commande python manage.py runserver lance bien le serveur. A quelle URL est-il accessible ? Qu'affiche la page Web ? Qu'affiche le terminal si on ouvre la page d'index du serveur ?

Quels fichiers sont créés si on exécute, dans le répertoire mysite, la commande python manage.py startapp polls ? Essayer de sauvegarder la liste des fichiers dans le fichier liste2.txt et comparer avec liste1.txt.

Pourquoi faut-il exécuter python manage.py migrate ?

Lire la suite du tutoriel et recopier ce qui est mis dans le tutoriel pour l'écriture de la première vue. Peut-on avoir comme texte Bonjour à tout le monde au lieu de Hello, world avec prise en compte de l'accent sur le a ?

Le code produit pour la page d'index est-il valide au sens de la grammaire XHTML 1.0 Strict ? Serait-ce difficile de le modifier pour qu'il le soit ? Est-ce simple de changer l'image affichée (la fusée) ?

Quelle erreur y a-t-il dans le tutoriel Django partie 1 ?

Quelle commande aurait-il fallu exécuter pour installer Django 2.0 au lieu de Django 2.1 ?

Si l'installation ne fonctionne pas, vous pouvez toujours regarder la série de vidéos Tutoriel Django Français ou la série Python Django Tutorial English.

Solution :  

 

2. Deuxième partie : base de données

Suivre ce qui est indiqué dans la deuxième partie du tutoriel. On utilisera sqlite3 comme moteur de base de données avec db.sqlite3 comme nom de la base de données.

Quels fichiers sont créés suite à la commande python manage.py makemigrations polls ? Essayer de sauvegarder la liste de tous les fichiers dans le fichier liste4.txt. Comment comparer liste2.txt de la question précédente et liste4.txt ?

Dans la section Jouer avec l'interface de programmation (API), essayer de mettre comme question Est-ce que tout va bien ? en plus de What's new?.

Dans la section Création d'un utilisateur administrateur, essayer d'ajouter un utilisateur nommé tintin.

Comment dans le terminal lister la structure de toutes les tables SQL créées en mode interactif avec sqlite3 ? Et comment afficher tous les utilisateurs en mode interactif avec sqlite3 ? Et par programme, avec redirection du résultat dans listeUtilisateurs.txt ou dans liste3.txt ?

Qu'est-ce qui ne fonctionne pas dans cette partie du tutoriel dans les salles du département informatique ?

Solution :  

 

3. Les vues (troisième partie)

Suivre ce qui est indiqué dans la troisième partie du tutoriel.

Après avoir ajouté les vues avec les textes en anglais, essayer de modifier ces vues pour que les textes soient en français.

Solution :  

 

4. Les formulaires (partie quatre)

Suivre ce qui est indiqué dans la quatrième partie du tutoriel.

Après avoir ajouté le code de la fonction vote() comme indiqué avec les textes en anglais, essayer de modifier ce code pour que le retour du render soit en français.

Pouvez-vous aussi afficher en français le message d'erreur 404 ?

Solution :  

 

5. Les tests (partie cinq) et la fin du tutoriel

Vérifier que tout ce qui est écrit sur les tests dans la partie cinq du tutoriel fonctionne comme indiqué.

Est-ce compliqué d'écrire des tests avec Django ?

Essayer d'ajouter un test pour garantir que dans l'ajout d'un utilisateur, le nom comporte au moins 3 caractères.

Terminer le tutoriel en effectuant toutes les manipulations demandées.

Solution :  

 

6. Une application plus complète entièrement en français

Visiblement le tutoriel utilise des noms anglais partout, comme mysite au lieu de monsite, polls au lieu de sondage, Question text au lieu de Texte de la question, User au lieu d'utilisateur, Date published au lieu de Date de publication. Recommencer tout le tutoriel dès le début en nommant tout en français, des noms de fichiers aux champs de la base de données.

Compléter le site du tutoriel initial avec la gestion de deux polls nommés sondage et questionnaire. Le premier poll consiste à demander à l'utilisateur s'il est fumeur, réponse obligatoire OUI ou NON. Le second poll demande à l'utilisateur sa taille en centimètres, son poids actuel en kilogrammes et le poids idéal qu'il/elle aimerait atteindre.

En option, fournir la liste des gens fumeurs et puis celle des non fumeurs dans un document PDF généré à la volée, afficher un histogramme des fréquences relatives des fumeurs et des non fumeurs (axes de 0 à 100 %) sous forme d'un graphique au format PNG, fournir une liste alphabétique des personnes ayant donné leur poids avec les informations taille, poids actuel, IMC actuel, poids idéal et IMC idéal ainsi qu'un graphique au format SVG qui fournit un box-plot des poids réels et actuels, un graphique au format PNG de l'histogramme de la distribution des poids réels...

Solution :  

 

       retour au plan de cours  

 

Code-source PHP de cette page ; code Javascript associé.

 

retour gH    Retour à la page principale de   (gH)