Archives Wild Code School
Django

05 Django: Commande personnalisée et API

Quête 5 sur 9 · 1 image archivée

Django: Commande personnalisée et API

Comme tu l'as compris tu vas réaliser une application web qui permet de trouver des produits de substitution avec un meilleur nutri-score, mais où allons nous trouver tous ses produits ?

Heureusement il existe une API, celle d'OpenFoodFact, qui permet de récupérer énormément d'informations sur un produit alimentaire ! C'est d'ailleurs sur celle ci que s'appuie l'application Yuka, si tu connais.

Objectifs:

  • Modéliser la base de données et modifier les modèles Django
  • Créer une commande personnalisée pour Django.
  • Récupérer des informations avec l'API OpenFoodFact

Modéliser la base de données et modifier les modèles Django

Dans la précédente quête je t'avais demandé de créer une table produit et un champ ingrédient de type texte, bien entendu c'était pour verifier que tu es bien compris les fonctionnement des modeles django.

Et oui il est temps pour toi de modéliser la base de donnée.

Je vais te présenter les fonctionnalités attendues sur l'application web afin de te faciliter la modélisation de la base donnée.

  • Faire une recherche de produits.
  • Trouver un produit similaire avec un meilleur nutri-score que le produit recherché.
  • Enregistrer le produit de base et son produit de remplacement dans un compte utilisateur.

Exemple: Je recherche du coca, le site me propose du coca-cola zéro !

C'est à toi de jouer !

Une fois que tu as fini ta modélisation il faut modifier/créer tes modèles Django

Pour rappel:

↗
https://docs.djangoproject.com/fr/3.1/intro/tutorial02/#creating-models

Tutoriel offiel sur la création et l'activation des modèles

docs.djangoproject.com
↗
https://docs.djangoproject.com/fr/3.1/ref/models/fields/

Référence des champs de modèle

docs.djangoproject.com

Créer une commande personnalisée pour Django.

C'est quoi une commande personnalisée ? Bon pour faire simple tu peux créer une commande personnalisée par exemple: python manage.py toto qui te permettrait de déclencher l’exécution d'un script.

Je vais te demander de créer une commande personnalisée qui se nommera maj_bdd_opfofa

↗
https://docs.djangoproject.com/fr/3.1/howto/custom-management-commands/

Écriture de commandes django personnalisées

docs.djangoproject.com

Récupérer des informations avec l'API OpenFoodFact:

Tu as créé une commande personnalisée mais elle ne fait rien pour l'instant! Il est temps de lui faire faire quelque chose.

Je vais te demande de récupérer des listes de produit par catégorie(5 catégories max au choix), 100 produits max par catégorie avec les informations de chaque produit en utilisant l'API à insérer dans la base de données .

Exemple d'information récupéré pour un seul produit:

image

↗
https://fr.openfoodfacts.org/data

Site web OpenFoodFact

fr.openfoodfacts.org
↗
https://documenter.getpostman.com/view/8470508/SVtN3Wzy?version=latest

Documentation de l'API OpenFoodFact

documenter.getpostman.com

💪 Challenge: trier, parser et persister les produits OpenFoodFact

Info

Information importante

Tout ce que tu vas trier et conserver comme information provenant de l'api sera utilisé pour retrouver un produit alternatif plus sain. Il faut donc que tu fasses les bons choix sur les informations que tu veux conserver dans ton modèle !

Bon je t'explique tu as créé une commande personnalisée qui fait une requête sur l'api Openfoodfact et qui récupère les informations de 100 produits pour 5 catégories....

Dans ce challenge tu vas devoir parcourir, trier, nettoyer et persister les informations des produits.

Et n'oublie pas d'envoyer ton code sur github !