- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Deviens membre Premium magic_button
Débloque cette session en devenant Membre Premium 🚀
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte personlive_helpToutes les questions
De716
1 décembre 2023 - 01 décembre 2023 à 18:00
checkConversation résolue
10 réponses
page admin accessible sans migration
Bonsoir, j'ai repis la formation django depuis le début comme indiqué sur le forum. J'ai effacé le cache de mon navigateur (mozilla), lorsque je lance runserver je tombe bien sur …
00:00:00 :Dans cette partie, on va voir comment créer un chemin d'URLpour afficher une vue dans notre projet.On a déjà des chemins d'URL qui sont créés par défautdans le fichier urls.py, donc je vais l'ouvrir en double-cliquant dessus.
00:00:13 :Et vous voyez que par défaut, on a un chemin qui existe,qui est défini avec cette fonction pathet qui pointe vers l'admin.Donc comme je vous avais dit, par défaut,on a une interface d'administration qui est disponible avec Djangoet donc tout ça est géré pour nous grâce à ce chemin.
00:00:29 :Avant ça, je vais vous montrer pourquoi ce fichierest automatiquement reconnu par Django.Donc tout ça, ça va se passer à l'intérieur de settings.py,donc je vais l'ouvrir et on a à l'intérieur de ce fichierune variable d'environnement qui s'appelle root-urlconfqui pointe vers ce fichier d'URL.
00:00:46 :Donc tous les chemins dans notre projet Djangovont partir de ce dossier docblog ici.Donc on a docblog.url qui correspond bien à ce module ici urls.py.
00:00:56 :Donc quand on va aller sur notre site web,Django va regarder quelle est la valeur de cette variable,donc root-urlconf,là dans ce cas-ci c'est docblog.url,
00:01:06 :donc il va se rendre dans le fichier urls.py,il va regarder tous les chemins qui ont été définiset il va essayer de résoudre l'URL.
00:01:13 :Donc en fait, il va regarder le chemin qui est défini iciet si le chemin existe,eh bien il va nous renvoyer vers la page correspondante.
00:01:21 :Donc dans ce cas-ci, on a juste admin qui est défini.Donc ça veut dire que je peux me rendre sur mon site,sur l'URL admin pour afficher l'interface d'administration.
00:01:30 :Donc avant ça, je vais lancer mon serveur de développement.Donc ici dans mon terminal,je vais faire python manage.py run server pour lancer le serveur
00:01:39 :et on va se rendre sur notre serveur de développement,donc à l'adresse 127.0.0.1 2.8000.Donc je lance, j'ai bien mon serveur qui fonctionne iciet si on va dans la barre d'adresse,on va pouvoir rajouter slash adminpour aller sur l'interface d'administration.
00:01:55 :Et là, vous voyez qu'on a une erreur.Donc cette erreur, c'est normal,c'est parce qu'on n'a pas appliqué les migrationsdans notre base de données.
00:02:02 :Si vous vous souvenez bien,je vous avais dit que le message d'erreur qu'on aquand on lance notre serveur,donc ce message en rouge que je retrouve ici,eh bien en fait, il apparaît parce qu'on n'a pas appliquéles migrations sur notre base de données.
00:02:14 :Donc je vais lancer cette commande ici python manage.py migratepour appliquer ces migrations pour qu'on n'ait plus l'erreur.Donc ici, dans mon terminal,je fais python manage.py migrate.
00:02:24 :J'appuie sur entrée pour valideret vous voyez que ça va créer toutes ces migrationsà l'intérieur de notre base de données.Donc la base de données, c'est cette base de données ici,db.sqlite3,
00:02:34 :qui est une base de données assez légère,très pratique pour réaliser des tests au début.Donc maintenant qu'on a appliqué ces migrations,on va pouvoir relancer notre serveur,donc python manage.py run server.
00:02:44 :Et cette fois-ci, on va pouvoir se rendresur l'interface d'administration sans avoir de problème.Vous voyez par la même occasion qu'on n'a plus les erreursqui sont affichées lorsqu'on lance le serveur de développement.
00:02:54 :Donc si je reviens ici, on va pouvoir relancer cette page.Donc je rafraîchis la pageet là vous voyez qu'on a l'interface d'administration qui apparaît.
00:03:02 :On a également pas mal de choses qui sont rajoutées après l'URL.Donc ça c'est normal, c'est parce qu'on n'est pas identifié dans l'interface.Donc il va nous afficher la pagepour que l'on se log à l'intérieur de cette interface d'administration.
00:03:13 :Mais vous voyez ici que slash admin nous renvoie bienvers cette interface d'administration.Par contre si je mets autre chose, si je mets test ici,là on a une erreur 404, page not found,qui est affichée puisque cette URL n'est pas définiedans notre fichier urls.py.
00:03:29 :Donc si je zoome un petit peu ici,on a Django qui nous indique ce qu'il a essayé de faire.Donc il a utilisé l'URL canv qui est définie dans docblog.url
00:03:38 :et il a essayé de résoudre ce chemin d'URL.Donc nous on lui a passé l'URL testet dans son fichier urls, lui il a juste une URL admin.
00:03:48 :Donc ça ne fonctionne pas puisque test n'est pas égal à admin.Donc c'est ce qu'il nous indique ici que le chemin actuel,donc le chemin test, n'a concordé avec aucun des cheminsqui sont définis dans nos fichiers d'URL.
00:04:00 :Donc ce qu'on peut faire c'est revenir iciet on pourrait ajouter d'autres chemins.Avant ça je vais vous montrer que ce cheminon peut mettre n'importe quoi ici.
00:04:07 :Là on a admin, à la place si je veuxje peux mettre Patrick sans problèmeet on va aller retourner sur notre interface.Donc là vous voyez par la même occasionque le serveur a détecté des changementsdonc c'est ce que je vous expliquais avec ce serveur.
00:04:20 :Automatiquement vous voyez qu'il va détecterque le fichier urls.py a été modifiéet il va relancer le serveur.Donc on n'a pas besoin de le faire nous-mêmeset si je reviens ici pour à la place de test mettre Patricket bien cette fois-ci on va bien se retrouveravec notre interface d'administration.
00:04:37 :Donc vous voyez que ça c'est vraimentjuste des chaînes de caractèrequi nous permettent de définir des urlsqui vont ensuite renvoyer des pages.Alors dans ce cas-ci on ne renvoie pas une pageon renvoie admin.site.url.
00:04:48 :Donc je vais me déplacer à l'intérieur de ce fichierpour ça je vais mettre mon curseur sur l'urldonc sur le mot url iciet on va pouvoir utiliser ctrl B ou commande B sur Mac.
00:04:58 :Vous pouvez retrouver également ce raccourcisi on va dans navigate si je me souviens biendonc navigate declaration or usage icidonc c'est ce raccourci sur macOS commande B.
00:05:07 :Donc vous cliquez là-dessus avec le curseurqui est placé sur urlset ça va vous emmener dans le fichier en question.Donc là on a plusieurs choixon a l'url dans tags dans modèle adminnous ce qui nous intéressec'est celui qui se retrouve dans admin.sites
00:05:21 :puisque c'est bien ce module icidonc admin.site.url.Donc on clique dessuset là on va se retrouver dans cette fonctionqui retourne self.geturls.Donc on va refaire le même chemin icion va mettre notre curseur iciet là dans ce cas-ci je vais utiliser le raccourcidonc commande B
00:05:36 :et on se retrouve à l'intérieur de cette fonction.Donc dans cette fonction qu'est-ce qu'on trouveon va trouver d'autres patterns d'url.Là vous voyez qu'on a d'autres fonctions pathqui vont retourner d'autres urlet donc ça ces url en fait elles vont être concaténéesavec le chemin qu'on avait ici
00:05:51 :donc le chemin Patrickon va avoir Patricket ensuite on va avoir ces chemins qui vont être concaténés.Le premier chemin c'est la vue indexdonc la vue index elle est représentéepar une chaîne de caractère videdonc c'est la vue sur laquelle on va tomberquand on ne met rien après Patrick
00:06:04 :donc si je mets Patrick slashet que je ne mets rien après le slashet bien on va tomber sur la page d'index.Si par contre je mets loginon va tomber sur la page de loginsi je mets logout on va tomber sur la page de logout etc.
00:06:16 :Donc si je viens ici et qu'à la place je mets loginon va se retrouver sur la page de login.Donc là vous voyez que toutes ces url elles marchentpar contre si je mets autre chosesi je mets slash testlà ça ne va pas marcheron va avoir la même erreur
00:06:28 :donc cette fameuse erreur 404page not foundet on a encore une fois Djangoqui nous spécifie tout le cheminqu'il a essayé de faire.
00:06:35 :Donc là encore une foisen utilisant le fichier dogblog.urlon nous indique que Djangoa essayé de trouver une correspondanceentre notre urlet tous ces patterns d'urlqui sont définis dans ces fichierset il nous indique égalementque ça a été résolu dans cet ordre.
00:06:50 :Donc il a déjà essayé de trouverPatrick avec rien aprèsdonc ça c'est notre première urlqui correspond à la vue d'indexdonc cette url avec une chaîne de caractère videdonc là il n'a pas trouvépuisque nous on a Patrick slash testdonc ça n'a pas matché ce chemin d'url
00:07:05 :il a essayé ensuitePatrick slash logging slashça n'a pas matché non pluset il a essayé comme çaavec toutes les urls qui sont définisdans le fichieret il n'y en a aucune qui a matchéce pattern icidonc Patrick slash testet donc on se retrouve avec une erreur 404.
00:07:20 :Si par contre j'essaye un autre chemindonc par exemple le loginqui lui est spécifié dans notre fichier urlet bien là il va trouverune correspondance entre notre urlet la vue qu'on lui dit d'afficheret on a bien cette page qui s'affichedonc ça c'est vraiment la logique des urls
00:07:37 :on va avoir un chemin qui va être définiavec la fonction pathen premier on a le chemin de l'urlet ensuite on a les vues qu'on veut retournerdonc là dans ce cas-cion fait juste indiquerqu'on veut relier tout ce chemin d'urlà d'autres urlsqui sont donc les urls qui sont définis
00:07:52 :ici dans cette fonctionet par contre icivous voyez que pour chaque chemince qu'on a ce n'est plus un autre fichier d'urlon pourrait très bienmais là dans ce cas-ci ce n'est pas çaon a en fait une fonction qui est retournéedonc quand on appelle login
00:08:05 :on va retourner cette fonction self.loginet là si je me rends dans cette fonctionencore une fois en mettant mon curseur sur loginet en faisant commande Bvous voyez que cette fois-cion a bien tout simplement une fonction pythonqui va nous retourner une vue à afficherdonc là dans ce cas-ci c'est login view
00:08:20 :qui est retourné donc la vuepour qu'on se log sur l'interface d'administrationdonc moi je vais vous montrer maintenantcomment créer notre propre chemindu url pour retourner une vuedonc dans ce cas-ci la vue qu'on va retournerc'est une vue qui n'a pas grand intérêtmais je vous la montre rapidement
00:08:35 :parce que je n'ai pas envie dans cette partiedirectement de partir dans la créationd'une vue au completce serait un petit peu trop longdonc ce que je vais faire à la placec'est que je vais importer dans ce fichierla vue de l'erreur 500donc cette vue on va l'importer de
00:08:48 :django.views.defaultet elle s'appelle tout simplement serveur erreurdonc from django.views.defaultimport serveur erreurdonc on a notre fonction iciet on va pouvoir la retourner dans un chemindonc je vais faire une fonction cheminet on va indiquer une chaîne de caractèredonc par exemple ici on va mettre bonjour
00:09:09 :et on va dire que quand on accède à bonjouron veut retourner la vue serveur erreurdonc c'est aussi simple que çaon définit un chemin du urlon définit une vue à retourneret là je peux donc retourner sur mon serveuret à la place de patrick je vais mettre bonjour
00:09:25 :j'appuie sur entrée et automatiquementon a bien l'erreur 500 qui nous est retournéesi je mets quelque chose d'autredonc par exemple testlà on a bien le page not founddonc là pour l'instant c'est juste une vue d'erreurqu'on a retourné sur bonjourdonc ça n'a pas vraiment d'intérêt
00:09:37 :mais comme je vous disaisc'est juste pour vous montrer l'exempleet ici on pourrait mettre un chemin bien plus complexesi je mets bonjour comment ça vadonc comme ceci je peux copier cette urlje reviens sur mon siteet là je vais mettre bonjour comment ça vaj'appuie sur entrée
00:09:52 :et j'ai bien encore une fois l'erreur 500qui m'est retournéeet si je mets quelque chose d'autre aprèsdonc je vais remettre testlà cette fois-ci on a l'erreur 404et on voit dans les urls qui sont testésqu'on a déjà le chemin patrickdonc là on commence pas par patrick
00:10:06 :on commence par bonjourdonc ça ne marche pasensuite on a bonjour comment ça vamais là on a rajouté test aprèsdonc là encore on n'a aucune correspondanceentre l'url défini dans notre navigateuret l'url défini dans notre cheminet on se retrouve donc avec cette erreur 404
00:10:21 :donc voilà comment créer des chemins d'urlqui vont être reliés à des vuesdonc c'est pas plus compliqué que çabien sûr il y a beaucoup de particularitésque l'on n'a pas vu dans cette partiemais ce qu'il faut retenir icic'est bien qu'on a d'un côtéune chaîne de caractère
00:10:36 :qui va contenir un chemin d'urlet cette chaîne de caractèreva être reliée à une vuequi va nous être retournée par Djangolorsqu'il y a une correspondanceentre l'url qu'on utilisedans notre navigateur internetet les chemins qui sont définis icidans ce fichier d'urlça peut aller beaucoup plus loin
00:10:53 :ça peut être beaucoup plus complexec'est sûr on va avoir après dans les applicationsplusieurs fichiers comme cecidonc plusieurs fichiers urls.pyqui vont être utiliséspour différentes parties de notre applicationet il arrive également par exemplecomme pour l'interface d'administration icique ces urls pointent vers d'autres fichiers d'url
00:11:10 :qui ultimement vont pointer vers des vuesdonc il n'y a pas de secreton a vraiment un cheminqui pointe vers une vuequi nous est retournéeet Django qui automatiquementva essayer de trouver des correspondancesentre ce que nous on tapedans le navigateur internetet ce qui est défini dans tous ces fichiers.
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.