Django 101 : Django pour les débutants absolus | Kalob Taulien | Skillshare

Vitesse de lecture


1.0x


  • 0.5x
  • 0.75x
  • 1 x (normale)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Django 101 : Django pour les débutants absolus

teacher avatar Kalob Taulien, Web Development Teacher

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Leçons de ce cours

    • 1.

      Bienvenue à Django 101

      1:07

    • 2.

      Utilisation d'un environnement virtuel

      2:44

    • 3.

      Configuration de Django

      4:44

    • 4.

      Créer une nouvelle application

      1:53

    • 5.

      Votre premier modèle Django

      8:12

    • 6.

      Votre première vue

      7:45

    • 7.

      Configurer votre dossier de modèles

      6:18

    • 8.

      Utilisation de blocs de modèles

      4:50

    • 9.

      Contexte de pages personnalisées

      6:51

    • 10.

      Affichage de messages dynamiques

      4:12

    • 11.

      Ajouter des images à votre modèle

      8:10

    • 12.

      Configurer votre dossier multimédia

      5:01

    • 13.

      Ajouter des images à votre modèle

      3:38

    • 14.

      Ajouter une vue de détail

      6:05

    • 15.

      Modèle de détail

      3:02

    • 16.

      Liens de modèles

      4:31

    • 17.

      Ajouter un formulaire de téléchargement

      15:10

    • 18.

      Trier les publications par défaut

      2:38

    • 19.

      Cadre de messages Django

      8:31

    • 20.

      Ajouter Bootstrap 5

      19:35

    • 21.

      Votre projet

      1:54

    • 22.

      Résumé

      0:57

  • --
  • Niveau débutant
  • Niveau intermédiaire
  • Niveau avancé
  • Tous niveaux

Généré par la communauté

Le niveau est déterminé par l'opinion majoritaire des apprenants qui ont évalué ce cours. La recommandation de l'enseignant est affichée jusqu'à ce qu'au moins 5 réponses d'apprenants soient collectées.

673

apprenants

5

projets

À propos de ce cours

Bienvenue dans le cadre Web Django 101 : Django pour les débutants absolus !

Django est l'un des cadres de développement Web les plus importants d'aujourd'hui, écrits en Python. Il rend le codage d'un site Web très rapide et facile et le garde en sécurité. Django est 100 % open source, mais ne vous laissez pas tromper — Django a été utilisé pour créer des sites Web et des applications comme Instagram et Pinterest — certains des sites Web les plus utilisés aujourd'hui.

Pourquoi apprendre le framework Web Django ?

.. Parce que Django est un framework web en demande. Et parce que Django est propulsé par Python, l'un des langages de programmation les plus importants d'aujourd'hui, il peut faire tout ce qu'un logiciel super puissant peut faire.

Et aussi parce que les développeurs Python et Django gagnent plus en tant que programmeurs professionnels (rappelez-vous : apprendre toujours ce qui est en demande ; n'apprenez pas quelque chose simplement parce que l'Internet dit que c'est "cool")

Deux façons d'apprendre Django :

1. Fonction basée
ou,2. Basé sur la classe.

La fonction basée sur la fonction est très simple mais ne tire pas parti de la puissance fournie avec Django. Il est bien entendu qu'il y a moins de "magie" qui se produisent avec des vues basées sur des fonctions, ce qui est parfois agréable.

Grâce à la classe, toute la puissance de Django. Cela vous permet d'écrire moins de code et d'en faire plus avec. C'est incroyablement puissant. Dans ce cours, nous utilisons du code basé sur des classes parce que c'est ce que les professionnels utilisent. Mon travail est de vous préparer au développement web en réalité

À qui s'adresse ce cours ?

débutants Django absolue. Mais soyez averti : vous devez connaître Python pour écrire un Django. C'est très important. Et il y a une attention accrue sur les cours de Python, parce que nous allons écrire beaucoup de ceux-ci.

Qu'allez-vous apprendre ? (Ne vous inquiétez pas si vous ne savez pas ce que l'un d'eux est ! )

  • Vues basées sur des classes
  • Gestion de modèles Django
  • Parsing de modèles
  • Formulaires Django
  • Vues de liste et de détails
  • Des URL dynamiques pour votre site
  • Créer une nouvelle application Django à partir de zéro
  • Comment utiliser Pipenv pour votre environnement virtuel
  • Télécharger des images
  • Créer des vignettes d'images
  • Utilisation d'un forfait tiers
  • Et bien plus

Qui est votre instructeur ?

Votre professeur est Kalob Taulien - il écrit des sites Web Django depuis plus de 4 ans. Le système de gestion de contenu #1 de Python appelé Wagtail CMS — Kalob fait également partie de cette équipe principale. Il est des développeurs formés et mentorés personnellement pour devenir suffisamment bons pour sécuriser un emploi de développeur Web professionnel.

Quel est votre projet ?

Dans ce cours, vous allez créer un tout nouveau site Web Django où vous pourrez partager des images à partir de votre ordinateur sur votre site Web. Fondamentalement, nous créons une forme de base d'Instagram.

Rencontrez votre enseignant·e

Teacher Profile Image

Kalob Taulien

Web Development Teacher

Enseignant·e

Hi everybody! I'm Kalob Taulien.

 

Here's the TL;DR (short) version about me:

I have been coding since 1999 and teaching people how to code since 2013 I have over 350,000 web development students world-wide I'm on the Wagtail CMS core development team (Wagtail is Python's #1 most popular website making system) I try my best to answer EVERY question my students have  I love teaching — it's definitely one of my natural talents  Also I love goats! (Great conversation starter with me if we ever get to meet in person)

Below you can find all my Skillshare courses. The categories go from easiest to hardest, except for the Misc. Coding Courses at the very end. 

If you're brand new to coding, start with BEGINNERS WEB DEV.&nb... Voir le profil complet

Compétences associées

Développement Développement Web
Level: Beginner

Notes attribuées au cours

Les attentes sont-elles satisfaites ?
    Dépassées !
  • 0%
  • Oui
  • 0%
  • En partie
  • 0%
  • Pas vraiment
  • 0%

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

Chaque cours comprend de courtes leçons et des travaux pratiques

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

Suivez des cours où que vous soyez avec l'application Skillshare. Suivez-les en streaming ou téléchargez-les pour les regarder dans l'avion, dans le métro ou tout autre endroit où vous aimez apprendre.

Transcription

1. Bienvenue à Django 101: Bonjour et bienvenue à Django 101. Dans ce cours, nous allons commencer avec Django, trois entreprises rayées pour que vous n'ayez besoin d'aucune expérience. Vous allez cependant vouloir connaître un peu de classes Python et Python afin de tirer le meilleur parti de ce cours et de tirer le meilleur parti de Django dans ce cours, vous pouvez réellement voir le projet derrière moi. Nous allons créer un projet de téléchargement d'images. C' est un peu comme Instagram. Il semble juste un peu différent et amusant fait, Instagram a été construit en utilisant Django. Et dans ce cours, je vais vous apprendre exactement comment vous pouvez télécharger des images comme Instagram et les partager dans une vue détaillée. Tout comme Instagram. Salut, je suis Caleb toluène. Et je lis Django depuis un certain nombre d'années. J' ai racé Django pour tous mes projets. Je pense que c'est le meilleur cadre. Je suis très passionné par Django, et je suis vraiment excité de vous apprendre à écrire Django. Django est construit sur Python, qui est l'un des langages de programmation les plus populaires au monde. Il est incroyablement puissant. Et aujourd'hui, nous allons construire ce projet. Bienvenue dans ma classe et j'ai hâte de vous voir à l'intérieur. 2. Utiliser un environnement virtuel: Bon, bienvenue à Django 101. Avant tout, nous avons besoin de créer un environnement virtuel. Nous le faisons toujours quand nous travaillons avec Django ou vraiment n'importe quel projet. Donc, pour écrire Django, vous devez connaître un peu de Python. Si vous ne connaissez pas Python, vous n'avez probablement pas d'éditeur de texte. Donc, devant moi, ce que vous voyez ici est le code VS. C' est mon éditeur de texte. Sur la gauche va être mon dossier, et en bas va être mon terminal. Donc, si je passe à View, puis terminal, et que le fond sera mon terminal. Nous allons donc créer un environnement virtuel et d'autres. Une pléthore de différentes façons de créer un environnement virtuel. Nous pouvons utiliser Vagrant, nous pouvons utiliser docker, wrapper virtualenv, un Python Vn via un événement, ou nous pouvons utiliser Pip env. Et dans ce module, je vais vous montrer comment nous pouvons le faire avec pip envie. Donc, tout d'abord, vous avez probablement déjà installé Python. Vous devriez être capable de faire Python Dash v. J'utiliserai Python 3.8. Si cela fonctionne pour vous, vous pouvez alors taper pip install PIP. Et maintenant, j'ai déjà Pip env installé. Donc ça va être très, très rapide. Cela peut être un peu plus lent pour vous, mais finalement cela devrait être installé. Et puis nous pouvons taper pip install Django. Et cela va créer un nouvel environnement PIP pour nous. Et nous donnons juste une petite seconde pour installer Django pour nous. Et cela va installer Django 3.1. Nous allons regarder la version exacte dans une seconde quand cela sera fait. Bon, maintenant que c'est fait, nous pouvons faire pip N shell pour entrer dans notre environnement Pippin et faire pip montrer Django. Et j'utilise la version 3.1.1 de Django pour l'instant pour sortir de notre shell, tout ce que nous avons à faire est de taper Control D ou quitter et ça va sortir pour nous. Et pour y revenir, il suffit de taper Pip nth shell. Et si nous jetons un coup d'oeil à nos fichiers ici, ls dash LA, ou si vous êtes sur Windows DIR, cela va nous donner un fichier Pip et un point de fichier Pip loc. Maintenant, à ce stade, si vous avez Git installé, vous pouvez faire git init, git, add, git commit. Numéro un, la mise en place d'un Pip env. Et puis si nous faisons cette vraie commande fantaisie, qui est un journal git fantaisie, vous pouvez voir que notre premier commit ici mettre en place un PIP et si vous n'utilisez pas bon, c'est correct. Vous pouvez simplement ignorer cette partie de cette vidéo. Je vais utiliser aller de l'avant. Mais encore une fois, si vous n'utilisez pas bon, si vous utilisez un système de contrôle de version différent, C'est totalement cool de, vous pouvez simplement ignorer cette partie. Dans la vidéo suivante. Allons de l'avant et obtenez réellement la configuration de Django. 3. Configurer Django: Ok, allons-y et installons Django. Donc, la première chose est que nous devons faire est que nous devons entrer dans nos environnements virtuels. Maintenant, j'utilise Pip env. Vous pouvez utiliser Venn, Docker, vagabond, quelle que soit la couche d'abstraction que vous voulez. C' est juste bon d'avoir une sorte d'environnement virtuel ici. Si on montre Pip Django, on devrait pouvoir voir que Django est là. Si vous n'avez pas Django là-dedans, vous pouvez toujours faire pip install. Django est égal à, égal à 3.1.4 ou quelle que soit la version la plus récente de Django. Et cela va installer Django pour vous. Ensuite, nous pouvons taper Django dash admin, démarrer le projet, et je vais l'appeler mon site. Et puis je tape point. Et ça va juste le mettre dans ce dossier exact. Alors regardons où nous en sommes au début. Je suis sur mon bureau dans un dossier appelé Django 101. On peut le voir à gauche, Django 101. Et donc je veux simplement taper Django Admin, commencer à projeter mon site. Et si vous ne le donnez pas, le point va créer un sous-dossier ici appelé mon site, qui peut ou non être ce que vous voulez. Je ne veux pas ça. Je veux juste que Django crée un tout nouveau projet dans ce répertoire dans lequel je suis. Maintenant, si je fais ls tiret l a, ou si vous êtes sur Windows, Windows, vous pouvez taper D-I-R dir. Et nous allons voir que nous avons maintenant géré dot py et mon site. Et si on ouvre ça à gauche, on a toutes sortes de trucs ici. Nous avons géré les paramètres d'URL de transfert de fichier a.py comme e et dans init dot pi. Maintenant, ce que nous pouvons faire ici, c'est que nous pouvons, si je viens d'effacer cela, tapez D JAR, serveur d'exécution Django. Donc, nous tapons python gérer dot py run server sur 0.0.0 port 8 mille. Et cela devrait dire que nous avons encore une migration appliquée. Maintenant, ce qu'est une migration, c'est simplement qu'elle se connecte à une base de données. Donc, je sais qu'il se connecte à une base de données SQLite trois ici. C' est juste un fichier simple et il essaie de provisionner ma base de données afin que nous puissions configurer les utilisateurs et les autorisations et toutes sortes de choses. Et chaque fois que vous voyez ce petit rouge et que ce n'est pas vraiment une erreur, c'est plutôt un message qui dit, hey, vous en avez 18 sur les migrations appliquées. Vous pouvez simplement taper Python managé up pi migrate. Et ce que cela va faire est de dire à Python quelle que soit la version de python que vous utilisez pour exécuter managé à pi et son paramètre ou argument sur la ligne de commande est juste le travail migrer. Et donc on fait ça et on va voir que tout ça est en cours d'exécution. Et puis pour exécuter à nouveau un serveur, j'ai juste le raccourci vers la virgule d j, r parce que je, j'exécute cette commande des centaines de fois par jour. Donc Python a géré le serveur haute exécution 0.0.0 point 0 deux-points 8 mille. Et on devrait voir ça. Maintenant, à ce stade. Si vous voyez cela, nous pouvons maintenant ouvrir notre navigateur et nous pouvons nous diriger vers localhost port 8 mille. Donc, nous avons juste tapé localhost huit mille. Huit mille correspond à ce que nous avons tapé dans notre ligne de commande. Et on devrait voir ça. Une fois que vous voyez cela, vous avez maintenant un projet Django en cours d'exécution avec succès. C' est cool, mais il n'y a rien ici. Alors allons-y et vérifions l'admission. Nous pouvons il y a un lien admin ici, Documentation, tutoriel, communauté Django. Il n'y a pas d'administrateur ici. Donc, nous pouvons aller directement à slash Admin et nous avons besoin d'un nom d'utilisateur et mot de passe. Alors, allons de l'avant et configurons un nom d'utilisateur et un mot de passe, qui sont transférés à notre terminal ici. Et nous pouvons taper Python géré dot py, créer un super utilisateur. Et tout ce que j'ai fait là, au fait, quand j'exécutais le serveur, c'est que j'ai juste frappé le contrôle C pour annuler. Donc je vais créer un nouveau superutilisateur. Je vais l'appeler Caleb. Pas de réponse. Ajouter IO point Caleb. Je vais lui donner un mot de passe et retaper mon mot de passe. Et cool. Superutilisateur créé avec succès c'est notre compte administrateur. Et puis nous exécutons simplement Python géré up.py exécuter le serveur est 0000 deux-points 8 mille à nouveau. Retournez à notre navigateur, rafraîchissez. Assurez-vous simplement que cette page se charge réellement de la façon dont nous nous attendons à ce qu'elle se charge. Saisissez notre nom d'utilisateur et notre mot de passe. Et voilà, nous sommes à l'intérieur de notre Django Admin. C' est là que nous allons éditer tout notre contenu. Nous pouvons gérer à peu près tout par ici, tant que nous disons à Django que c'est censé être gérable par un administrateur. Donc, votre tâche pour cette leçon est d'installer Django dans votre environnement virtuel et de créer un superutilisateur. Et n'oubliez pas d'exécuter vos migrations. Et une fois que vous voyez cette page et cette page, vous êtes prêt à passer à la leçon suivante. 4. Créer une nouvelle application: Ok, allons de l'avant et créons notre première application. Et donc Django fait cette drôle de chose où en fait je ne sais pas pourquoi ils les appellent des applications. C' est un peu déroutant parce que nous ne créons pas une application pour téléphone ou une application mobile, mais c'est comme une petite application à l'intérieur de notre application Django, et donc nous les appelons des applications. Et donc ce que nous pouvons faire ici est de créer une toute nouvelle application en utilisant une commande que Django nous donne. Donc, nous faisons Python gérer dot pi, et je suis juste à l'intérieur de mon environnement virtuel ici. Python géré dot py, démarrer l'application, et je vais appeler ce flux. Et si vous regardez à gauche, donnez-lui une petite seconde. Il crée un dossier appelé flux. Il a des migrations et tricoter des modèles d'applications d'administration haut test.py et des vues point pi. Maintenant, ce que nous voulons faire est d'activer ceci. Et pour activer cela, ce que nous devons faire est d'aller sur mon site, aller dans notre settings.js et de nous rendre juste un peu plus petits ici. Et ce que nous recherchons, c'est des applications installées. Et ici, nous voyons que nous avons installé des applications. Django, contrairement à l'admin, types de contenu d' authentification, les sessions , les messages et les fichiers statiques, sont toutes les choses qui viennent avec Django. Nous n'avons pas besoin de nous soucier de ce qu'ils sont en ce moment, car ce n'est qu'un cours de Django 101. Donc, c'est une liste, une liste Python, et je vais simplement taper le nom de ce dossier ici. C' est ce qu'on appelle le flux. Et continuons d'exécuter notre serveur une fois de plus. Et on voit que rien ne se passe. Si on voit que rien ne se passe, c'est une bonne nouvelle. Cela signifie probablement que vous avez installé votre flux correctement. C' est tout ce qu'il y a pour cette vidéo, j'espère que vous suivez le long, n'oubliez pas, et vous devez exécuter Python managé haut démarrage application, pas démarrer le projet, mais démarrer l'application. Et puis le nom de votre application et qui va créer un nouveau dossier pour vous. Ensuite, vous allez dans vos paramètres, applications installées et installez cette application. Il suffit de le mettre en bas de votre liste d'applications installées. 5. Votre premier modèle Django: D' accord, allons de l'avant et créons un nouveau modèle. Et donc ce qu'un modèle est censé faire n'est pas seulement qu' il génère automatiquement une table dans notre base de données pour nous. Django est donc très sympa en ce sens que nous n'avons pas à gérer notre base de données à peu près. Il le fait automatiquement à travers la forme de migrations et de modèles. Et donc un modèle est simplement un moyen d'écrire du code sous la forme d'une classe Python. Et il va automatiquement mappé à une base de données que nous ne pouvons même pas voir. Ensuite, nous pouvons aller modifier certaines de ces données. Donc, dans cette leçon, ce que je veux faire est de créer un nouveau modèle dans notre flux juste appelé posts. Ensuite, nous allons l'activer dans notre administrateur Django pour que nous puissions le voir. Alors je vais arrêter de diriger Django. Non pas que ce n'était pas que cela était préjudiciable pendant qu'il était en cours d'exécution. n'y a pas de problème à le garder en marche. En fait, je vais vous montrer qu'il peut continuer à courir pendant qu'on fait ça. Donc, nous allons ouvrir les modèles de flux dot py, et il dit créer vos modèles ici. Allons de l'avant et supprimons ce commentaire. Et nous allons taper les modèles de classe Post, modèle de point. Et ce que cela fait automatiquement, c'est si nous devions dire à Django, Hey, chercher de nouveaux changements appelés Migrations, il va alors générer un fichier de migration et ensuite provisionner notre base de données pour qu'elle ait une table appelée post de soulignement de flux. Et cela nous permet simplement de créer un moyen simple de stocker des données. Maintenant, dans ce post, nous allons commencer très simple. On va commencer par un texte de base. Et donc ici, nous disons que le texte en tant que propriété est égal à deux modèles, champ char point, et ce n'est qu'un champ de caractère. Il faut une longueur maximale. Et je crois que la longueur maxlength est généralement quelque part autour de 256 caractères. Mais faisons ça comme un tweet original, comme un 140 caractères. Ensuite, vous allez souvent voir un autre mot-clé ici appelé vide qui peut être vrai ou faux. Par défaut, la valeur « blank » est false. Et cela signifie que lorsque nous remplissons un formulaire, est-ce que ce champ doit être rempli ? Absolument. Oui, il doit être rempli. On va dire que c'est obligatoire. Et puis nous avons une autre option ici appelée null. Et null peut être vrai ou null peut être faux. Et quand null est vrai, cela signifie que notre base de données peut stocker soit aucune valeur et chaîne vide, soit une sorte de chaîne. Nous ne voulons pas que ce soit nul est égal à vrai, pour être vrai. Parce que nous voulons toujours que cela soit rempli dans notre base de données. Donc il y aura toujours des textos. Il ne peut pas être vide, il ne peut pas être du texte vide. Il doit toujours être là. Disons donc que null est égal à false. Maintenant, allons de l'avant et sauvegardons ceci. Et vous voyez Django redémarré automatiquement pour moi ici. Ce que je peux faire maintenant, c'est faire une migration. Donc, je fais Python gérer dot py, faire des migrations. Et cela va créer un tout nouveau fichier. Et vous pouvez voir ici, il a créé 0001 point py initial. Et tout cela fait est de créer un fichier python qui est maintenant exécutable. Et quand nous exécutons Python managé dot py migrate, il n'a aucune dépendance. C' est le premier et il y a des opérations ici. Il va créer un modèle ou créer une table dans notre base de données appelée post. Et ce sont les champs qu'il a un ID automatiquement, donc un ID de champ automatique unique. Chaque modèle est livré avec ceci. Et celui qu'on lui a donné, c'est du texte. Donc maintenant, nous avons une table que nous pouvons ajouter à notre base de données avec deux colonnes dedans. Et allons de l'avant et exécutons Python managé dot py migrate. Et cela va appliquer cette migration. Et maintenant, on ne voit rien se passer à ce stade. Tout ce que nous voyons est que l'application de l'alimentation 001 initiale était OK. C'est tout ce qu'on a besoin de savoir. C' est à peu près autant de gestion de bases de données que dans Django 101. Alors réexécutons le serveur Django run. Et quand nous retournerons à notre navigateur ici dans notre administrateur, nous ne verrons rien. Et c'est parce que par défaut, cette table existe. Mais ce n'est tout simplement pas encore gérable. Nous devons donc rendre cela gérable. Nous avons donc créé un modèle qui correspond à une table. On les a dirigés vers les migrations. Nous devons maintenant aller dans feed admin dot py, et nous devons enregistrer notre modèle ici. Alors allons-y et débarrassons-nous de ce commentaire. Et ça va ressembler à ce cours. Post admin ou tout ce que vous voulez l'appeler, admin, dot Model. Admin. Et l'administrateur vient juste d'ici. On peut simplement passer. On ne veut rien faire. Nous pouvons donner des paramètres supplémentaires, des fonctionnalités supplémentaires. Nous pouvons activer toutes sortes de fonctionnalités. On ne va pas faire ça maintenant. Nous voulons juste qu'il soit simplement modifiable. Ensuite, nous disons admin, point site, DOT registre, post et post admin. Et donc ce que cela va faire est de connecter post avec post Admin. Maintenant, la publication n'est pas encore importée. Nous devons importer cela afin que nous puissions dire de et parce que c'est dans le même dossier, admin et modèles sont dans le même dossier. Nous pouvons simplement dire des modèles de points, importer post. Et quand nous nous inscrirons ici, il est dit Connect post avec ce post Admin, qui va hériter de tout de l'admin dot admin modèle. Allons de l'avant et sauvegardons ça. Django est redémarré. Et rafraîchissons notre administrateur Django ici. Et encore une fois, je suis juste que le port localhost 8 mille slash Admin. Et maintenant, j'ai dans mes messages d'application de flux et nous pouvons aller de l'avant et créer un nouveau post. C' est mon premier message. Sauvegardez. Maintenant, si vous regardez cela, c'est l'objet post dans Django. Chaque fois que nous accédons à une donnée ou à une ligne dans notre base de données, cela s'appelle un objet. Et donc nous voulons changer ce nom d'objet car il dit toujours juste le nom de l'objet modèle un, objet à objet trois. On ne sait pas comment l'identifier. Allons de l'avant et rendons les choses identifiables. Donc, dans nos modèles dot pi ici, nous pouvons dire def soulignement, chaîne de soulignement. C' est une classe se prend toujours comme premier paramètre. Et puis nous allons dire retour self.age. Et quel que soit ce poste, c'est ce que cet objet va maintenant être appelé. Donc Django est redémarré. Rafraîchissons cette page et nous allons voir cela apparaître avec mon texte réel ici. Donc, nous avons donné un nom à cet objet, et c'est juste bon pour l'administrateur lorsque vous déboguez des choses ou ajoutez du contenu via votre administrateur. On peut cliquer dessus. Nous pouvons le modifier, mettre à jour, enregistrer et continuer à éditer. On pourrait l'effacer si on le voulait. Allons-y. Oui, je suis sûr qu'il supprime ce post. Allons en ajouter un autre. C' est un nouveau poste. Sauvegardez. Maintenant, voilà le truc. Beaucoup de gens pensent que juste parce que nous avons créé cet objet, qu'il devrait apparaître sur notre page, et ce n'est tout simplement pas vrai. Tout ce que nous avons fait était de créer un morceau de données dans notre base de données ou nous avons provisionné une table dans notre base de données. Nous avons ajouté une ligne dans cette table. Alors pensez à ça comme une feuille de calcul. Nous avons cette feuille de calcul géante, et c'est notre nouvelle table. Et puis nous avons deux colonnes là-dedans. Dans notre petite feuille de calcul métaphorique, nous avons deux colonnes. Nous avons un ID appelé et un texte appelé. Celui-ci est un champ entier. Et celui-ci est un champ de texte ou un champ de caractères, un champ de caractères. Donc, il ne peut pas avoir 10 mille caractères, mais il peut avoir un 140 caractères. Et nous appelons cela un champ char ou un champ de caractère. Mais là où les gens sont un peu confus, ça n'apparaît pas ici. Et c'est parce que c'est tout simplement qu'on ne sait pas comment on veut qu'il apparaisse. Comment voulons-nous styliser notre site Web ? Où voulons-nous placer les affaires ? Aucun cadre au monde ne peut vous dire qu'il ne saura pas automatiquement. Vous devez lui dire explicitement ce qu'il faut faire. Alors, dans notre prochaine leçon, ajoutons notre première vue et mettons-le à jour un peu. 6. Votre première vue: Très bien, nous devons ajouter notre premier point de vue et c'est un peu impliqué. Et une fois qu'on l'a installé, c'est vraiment agréable à utiliser. Mais pour commencer, ça peut être un peu délicat. Donc notre site est livré avec ce fichier, pas celui-ci, c'est le mauvais. Urls point pi m. Nous pouvons lire à travers cela. Je recommande certainement de lire cela. Je ne vais pas lire ça pour toi juste parce que c'est évidemment une perte de temps. Et puis nous avons ces choses appelées modèles d'URL. Et les modèles d'URL vont correspondre à une sorte de chemin à une sorte de logique. Et pour nous, cela se traduit par le port localhost 8 mille slash Admin. Maintenant, nous pouvons changer cet administrateur si nous le voulions, en le changeant à mon administrateur ou littéralement tout ce que nous voulons. Je vais le garder en tant qu'administrateur juste pour garder les choses simples. Mais maintenant, disons que nous voulons ajouter une nouvelle page d'accueil. Nous devons remplacer celui que Jangle nous a donné et Django nous a donné celui-là. On ne veut plus ça. C' est sympa. Ne vous méprenez pas, mais on voulait voir autre chose. Nous voulons en faire notre propre application. Maintenant, notre application va avoir l'air vraiment moche et ensuite nous allons la rendre vraiment agréable. Donc, nous allons d'abord travailler sur le backend, puis nous allons ajouter le front end plus tard. Nous devons donc ajouter des URL ici. Maintenant, peu importe où on commence. On doit faire un tas de choses en même temps. Donc ce que je vais faire, c'est dans ce dossier ici, je vais créer un nouveau fichier appelé URL dot py. Et ça va juste vivre à côté de mes mannequins haut et de mon admin dot py. Maintenant, ici, nous allons faire quelques choses différentes. Donc, tout d'abord, allons de l'avant et disons à partir de Django, dot URLs, import un chemin. Et nous avons vu cela dans le fichier précédent, chemin d'importation de l'URL Django, et nous voulons utiliser quelque chose comme ceci. Maintenant, nous allons créer nos propres modèles d'URL, et ceci est simplement une liste de chemins. Allons de l'avant et donnons aussi à cela un nom d'application et cela va être utilisé pour l'espacement des noms parlera quel espace de noms et peu plus tard. Mais pour l'instant, allons-y. On va donner à ça un nom d'application appelé flux. Ensuite, nous allons lui donner des modèles d'URL est égal à une liste. Et cela va prendre un chemin. Et on veut juste la page d'accueil. Donc on va lui donner un chemin vide. Et cela va avoir du sens dans une seconde. Ensuite, il doit rendre une vue. Et ça va être notre modèle. Et on lui donne un nom. Appelons cet index sont comme notre page d'accueil ou quelque chose comme ça. Maintenant, quand il s'agit de rendre une vue, nous avons besoin d'une vue pour rendre que nous allons utiliser dans les vues basées sur les classes dans ce cours parce que c'est la bonne façon d'écrire Django, au moins à mon avis c'est le cas. Nous pouvons écrire des vues basées sur la fonction ou nous pouvons écrire des vues basées sur la classe. Je vais vous apprendre la manière professionnelle dans ce cours, nous allons utiliser des vues en classe. Les vues basées sur les fonctions sont faciles à apprendre, mais il est plus facile d'apprendre en fonction des classes, puis fonctions plutôt que des fonctions, puis en fonction des classes. Cela doit venir de quelque part et nous devons créer une sorte de point de vue. Donc, nous allons juste, ne nous sauver pas encore, mais gardons cela ouvert et passons aux vues. Et vous pouvez voir qu'il importe déjà les raccourcis Django rendu. Nous pouvons honnêtement abandonner cela parce que nous n'allons pas utiliser une vue basée sur la fonction. Nous allons utiliser une vue basée sur la classe. Donc, nous allons aller ou non à MAIS importer à partir de Django dot views générique, importer une vue de modèle simple. Ensuite, nous allons créer une vue de page d'accueil. Donc, nous allons dire la vue de la page d'accueil de classe. Et cela va hériter de la vue du modèle. Et on va lui donner un nom de modèle. nom de soulignement du modèle est égal à home.html. Et cela dit à Django chercher un fichier appelé home.html. Et c'est tout ce qu'on va faire. Donc nous allons enregistrer ce fichier maintenant. Revenons aux URL point pi. Et si nous faisons de, parce que ce n'est pas le même dossier ici, tous sont dans le même dossier. Nous pouvons taper points vues import. Et comment s'appelait-on ce point de vue ? Affichage de la page d'accueil. Et puis nous pouvons dire, et ici la page d'accueil point de vue comme vue. Et cela va rendre notre logique pour nous. Ça va faire fonctionner notre point de vue. Maintenant, tout est bien et bien. Mais vous avez probablement remarqué que Django n'a pas vraiment redémarré ces derniers temps. Alors allons de l'avant et ouvrons nos URL mysite dot py et en ajoutant un nouveau modèle d'URL ici. Maintenant, ici, nous pouvons préfixer notre page d'accueil si nous le voulions. Donc, nous pouvons tout rendre sur mon site webe.com barre oblique d'accueil qu'une page, tout comme nous l'avons fait avec l'administrateur, mais nous ne voulons pas cela. Nous voulons que ce soit la page d'accueil, donc nous allons laisser ce chemin vide. Ensuite, nous allons dire inclure et nous allons nous inquiéter de ces importants juste une seconde. Flux les URL. Et donnons à cela un espace de noms de flux. Maintenant, les URL et les inclusions n'existent pas encore, pas du moins dans ce fichier. Nous devons donc les faire exister. Donc, nous allons faire à partir des URL de points Django.com, importer inclure. Et nous allons également importer nos vues et nos vues, mais nos modèles d'URL de notre flux. Faisons à partir des URL d'importation de flux comme URL de flux. Et donc on change juste le nom. Nous importons des URL en tant que module entier. Donc nous importons tout ce fichier ici. Ensuite, nous le renommons en URL de flux ou URL de flux. Et puis nous allons simplement mettre que tout, allons de l'avant et sauver ceci et regardé Django redémarrer. Et nous allons voir que j'ai une faute de frappe quelque part dans les URL de flux. Sur la ligne 1. Ce n'est pas une URL de point Django, ce sont des URL de point Django. Et revenons à l'endroit où il y a une erreur ici. Et c'est sympa. C' est juste que nous sommes en train de déboguer à ce stade. Et cela indique que les URL de flux de chemin n'sont pas définies. Et c'est parce que nous avons dit flux, URL. Le flux est singulier. Ok, cool, coucou, coucou, coucou, cool. Tout ça marche. Allons-y. Retour à notre navigateur et actualisons. Et nous obtenons cette erreur. Le modèle n'existe pas. Maintenant, où mettons-nous ce modèle ? Django va chercher ce modèle à quelques endroits. Par défaut, il regarde dans mon environnement Pip ici. Et puis il va regarder dans Django Admin templates Accueil. Django contra hors gabarits Accueil. On n'a pas accès à ça. Ce ne sont pas des dossiers qui sont dans notre projet. Nous devons donc dire à Django d'utiliser des modèles ailleurs. Et nous allons créer, dans la leçon suivante, nous allons créer un dossier appelé templates, et nous allons dire à Django de l'enregistrer comme un endroit pour rechercher nos modèles. Donc, pour l'instant, vous devriez avoir toutes ces URL. Cela devient un peu délicat parce que nous utilisons des modèles d'URL dans mon site. Nous utilisons également des modèles d'URL dans le fichier URL. Sous nos pieds app. Ils sont tous les deux appelés URL dot pi. C' est une convention de dénomination. C' est là que cela devient un peu délicat est des frameworks comme ils nomment des conventions. Nous avons une application nommée flux. Il correspond à notre application ici qui est également utilisée dans notre espace de noms. Donc, c'est tout de même à travers le tableau, nous parlerons des espaces de noms dans nos modèles un peu plus tard. Ensuite, dans nos vues, nous avons simplement créé une vue de page d'accueil , puis écrasé cette belle vue Django pour nous donner une erreur. Et une fois que vous voyez cette erreur, vous êtes prêt à passer à la leçon suivante. 7. Configurer votre dossier de modèles: Très bien, dans la dernière leçon, on a eu cette erreur. Ce modèle n'existe pas à la barre oblique n recherche home.html. Maintenant, nous savons qu'il cherche dans des endroits auxquels nous n'avons pas accès. Et donc nous pouvons aller dans ce dossier Utilisateurs Caleb Delian dot logos partagent Virgile possède Django 101, yada, yada, yada, yada, yada, yada, yada, slash Django, contra off templates. Ohm, c'est juste un cauchemar à gérer et il y a une meilleure façon de vivre ta vie. Et donc, dans cette leçon, c'est ce que nous allons faire. Nous allons dire à Django, Hey, il y a un meilleur endroit pour chercher des modèles. Donc, ce que nous devons faire ici, c'est que nous devons entrer dans le code VS qui ferme ça. Ce n'est pas pertinent dans cette leçon. Fermons les pieds et allons dans notre settings.js et les paramètres internes dot pi, nous avons cette chose appelée templates. Si nous faisons défiler vers le bas, nous verrons des modèles. Et il cherche des répertoires. Et donc ce que nous voulons faire ici est de créer un répertoire de modèles. Donc, je vais donner à cela une variable appelée template dire. Et cela n'existe pas encore. Nous devons le faire exister. Template Dyer est égal à. Et à ce stade, si vous ne vous souvenez pas de cela, si vous mettez en place un projet, disons dans un an, vous pouvez toujours juste Google ceci, cette partie est partout sur Internet. Il est facile de trouver cette façon particulière d'activer certains répertoires de modèles. Donc, nous faisons OS point chemin, point jointure, notre base désastreuse. Et nous allons lui donner un dossier appelé templates. Et c'est censé être la base désastreuse. Et voyons si nous pouvons trouver un désastre basé. Où es-tu ? C' est là qu'il est au sommet. Et donc c'est la recherche du chemin de ce fichier particulier est de le résoudre parent, parents. Donc, il monte. Et cela va nous donner notre projet basé sur ce qui est juste ici. Et puis il va créer un nouveau modèle ou un nouveau répertoire appelé templates. Maintenant, nous avons utilisé OS et nous avons donc besoin d'importer OS. Donc, nous disons importer OS en haut de ce fichier. Allons de l'avant et voyons de quoi Django se plaint maintenant. Donc, nous obtenons la même erreur, mais vous remarquez qu'il dit qu'il ne peut pas la trouver parce qu'il utilise un chargeur. Il ne peut pas le trouver dans les templates, home.html. Allons de l'avant et ajoutons ça. Tout ce que nous avons à faire maintenant est de créer un nouveau dossier appelé templates. Et ici, nous pouvons créer un nouveau fichier appelé home.html. Laissons ce vide. Non, j'ai menti. Disons HelloWorld et faisons de ça un H1. Donc, il va être activé HTML. Et rafraîchissons notre page. Et ça dit, bonjour monde. Si cela ne fonctionne pas pour vous et que vous avez tout fait correctement, kick Django, juste annuler Django et redémarré parfois et pas souvent. Mais parfois, vous devez redémarrer manuellement Django lorsque vous développez à l'aide de Django. Et maintenant, nous avons quelque chose ici, nous avons quelque chose avec lequel nous pouvons travailler. Mais allons de l'avant et cliquez avec le bouton droit et la source de la page Viewer. La seule chose qu'il dit ici, c'est HelloWorld. Et il a une étiquette H1 et fermeture H1 et c'est bon. Mais si nous voulions avoir un titre sur notre page, il n'y a pas de titre. Ou si nous voulions dire que la langue était l' anglais ou que cette page était censée être réactive par défaut. Eh bien, actuellement ce que nous avons à faire est HTML deux-points cinq hit tab et il construit cette page pour nous. Bonjour monde, sauver, rafraîchir votre source et nous obtenons tous ces trucs. Mais que se passe-t-il si nous avons un autre point de vue ? Ensuite, nous devons copier tout ça. On doit copier tous ces trucs. Remplacer le titre, écraser le corps, garder tout le reste le même. Et si nous voulions ajouter un nouveau métatag à toutes nos pages à l'avenir. Eh bien, nous pouvons ou ne pas vouloir écrire ça encore et encore et encore. Maintenant, si votre site est énorme et disons que vous avez comme peut-être un 100 vues différentes. Vous allez devoir copier et coller un 100 fois différentes dans 100 modèles différents. C' est douloureux, ce n'est pas une façon de vivre ta vie. Il y a une meilleure façon d'utiliser cette chose appelée un modèle de base. Alors allons-y et défaites tout ça. Et en fait, je vais supprimer tout cela et je vais créer un nouveau fichier ici dans le répertoire templates. Et je vais l'appeler point de base HTML. Et ici, je vais lui donner des trucs HTML deux-points de partage d'image ici. Et quand on retourne à notre page, on ne voit rien. C'est correct. On ne veut rien faire. Il essaie de rendre ce home.html, pas le point de base HTML. Parce que si nous regardons le flux, les vues disaient, regardez le modèle appelé home.html. Actuellement, il ne connaît pas le point de base HTML. C' est dans notre projet, mais Django n'en est pas encore au courant. Et donc ce que nous pouvons faire maintenant est d'écrire étend, point de base HTML. Et ça doit être une chaîne. Et donc nous utilisons un signe de pourcentage d'accolade bouclés le mot clé étend. Et puis ici une chaîne appelée point de base HTML qui correspond au nom de notre fichier HTML point de base ici. Et puis pour cent signe accolade. Et cela ferme cette logique. Allons de l'avant et rafraîchissons. Et ça dit des trucs ici. Et si je retourne à la source, tout est ici. Maintenant. C' est cool et tout. Mais si nous voulions vraiment changer quelque chose à la maison, disons que c'est ma nouvelle page d'accueil. Cela ne va tout simplement pas apparaître. Ce n'est pas le cas, il ne sait pas quoi en faire. Et donc dans la leçon suivante, nous allons parler de blocs et comment nous pouvons écrire un peu de code dans notre fichier HTML point de base et simplement y injecter des choses. Et vous pensez que vous pouvez penser à ça comme si vous aviez un morceau de papier et que vous avez un trou découpé dedans, et ce n'est qu'un cercle. Et puis vous en avez un autre, certainement avoir un autre morceau de papier, mais il est coupé en forme de cercle. Et donc tu mets ce morceau de papier dans un autre morceau de papier. Comme quand on était gamins, on jouait avec des blocs et on essayait d'ajuster le carré et le carré, et on essayait d'adapter le triangle et le triangle. C' est exactement ce que ça fait. Et nous allons en apprendre plus à ce sujet dans la prochaine leçon. 8. Utiliser les blocs de modèles: Très bien, dans la dernière leçon, nous avons parlé d'une sorte d'ajustement des formes dans des formes et, vous savez, en essayant de remplacer les choses ici, nous avons un fichier HTML point de base. Et la maison s'étend ensuite à partir du point de base HTML. Mais il ne fait rien d'autre que de tirer toutes ces choses et nous voulons être en mesure de les remplacer. Parlons donc de cette notion de blocs. Et donc un bloc ressemble à ceci. C' est un bloc de signe pour cent d'accolade bouclés, puis un nom. Et on va lui donner un nom de corps. Parfois, vous voyez le corps du nom, parfois vous voyez le nom. Contenu. Peu importe ce que vous nommez, tant qu'il est cohérent dans votre application. Et puis on dit « bloc de fin ». Et c'est tout ce que nous allons faire dans notre point de base HTML. Fermons les vues, fermons les paramètres. Nous n'en avons pas besoin et dans notre home.html, nous faisons la même chose. Bloquez, corps des trucs ici à partir de home.html et bloquez, et regardez cette syntaxe intéressante. Les modèles Django utilisent deux formes de syntaxe des symptômes. L' utilisation d'une accolade bouclée et d'un signe de pourcentage. Et cela dit essentiellement exécute une logique plus avancée. Ou si nous voulons vraiment juste imprimer des trucs, nous utilisons ce que j'appelle une double moustache et nous utilisons deux accolades côte à côte, puis les fermer avec les accolades opposées, parlerons de ceux dans un peu. Mais pour le moment, actualisons notre page et nous voyons qu'il dit des choses ici à partir de home.html. Rafraîchissons notre code source. Et il a tous ces trucs dedans maintenant, plus notre contenu de home.html. Maintenant, ce qui est bien à ce sujet est dans notre home.html et notre page d'accueil. On n'a pas besoin d'écrire tout ça. Tout ce qu'on a à faire, c'est dire salut, Django. Lorsque vous effectuez le rendu de ce modèle, saisir le point de base HTML, lisez-le pour nous. Et puis Django dit, ok, ouais, oui, j'ai compris. Je t'ai eu. Je lis le point de base HTML, mais hé, au fait, il y a un blocage de votre corps froid. Et si tu veux, je peux mettre des trucs en plus pour toi. Et on dit cool, coucou, cool. Oui, c'est vrai. On a des trucs en plus. Nous voulons remplacer votre bloc de corps vide par nos propres trucs. Et c'est littéralement tout ce que nous avons fait. Voici notre page d'accueil. Et quand je me rafraîchis, dit que c'est notre page d'accueil dans notre code source, revenez ici, et ceci est notre page d'accueil. Donc maintenant, nous travaillons en fait avec quelques modèles différents. La bonne chose à ce sujet est que nous pouvons changer une chose dans notre point de base HTML. Et si nous disons simplement étend point de base HTML de notre maison ou tout autre modèle à l'avenir. Chaque modèle héritera de ce code. Nous n'avons donc plus à nous soucier d'écrire la même pierre tombale à chaque fois, ou la même déclaration HTML ou la balise HTML. On n'a pas à s'inquiéter de tout ça. On peut le faire une fois. Maintenant, comme un autre exemple, allons de l'avant et écrivons un bloc ici, bloc, titre et bloc. Et on va voir que notre titre disparaît. Il va y avoir quelque chose là-dedans juste comme le port localhost 8 000. Et dans notre maison, bloquons le titre, accueil et bloquons, et appelons ça quelque chose de bien mieux. Maurice, super super super page d'accueil. Actualiser. Et il est écrit ma page d'accueil super génial. Et encore une fois, tout ce qu'ils ont fait c'est dire, Hey, il y a un titre de bloc ici. Nous étendons à partir du point de base HTML. Il y a un titre de bloc ici. Tout ce qu'on a vraiment fait, c'est dire, hé, attrape ce code et c'est comme si la COP le copiait et le collait ici. C'est comme ça. Maintenant, je vais juste annuler ça. Et une autre chose que nous pouvons faire est que nous pouvons donner du contenu par défaut ici. Donc titre par défaut au cas où j'oublierais d'ajouter le titre de bloc dans un modèle. Disons que Whoops, Caled a oublié d'ajouter ça là-dedans. Rafraîchissons notre page et il indique titre par défaut. Donc, si nous ne l'écrasons pas, nous avons maintenant une base ici, une valeur par défaut. Si nous l'écrasons, il va alors utiliser ce que nous avons utilisé à la place afin qu'il sauve cette actualisation et il dit ma page d'accueil super génial. Et c'est ainsi que nous utilisons des blocs. C' est littéralement tout ce qu'il y a à un bloc. C' est tout simplement comme la métaphore que j'ai faite dans la dernière leçon. Quand on était enfants et qu'on avait cette petite zone de jouets. C' était comme, voici un cercle intégré dans le cercle ou voici un carré ou un cube intégré dans la forme qui ressemble à un carré ou un triangle. C' est littéralement tout ça. C' est R cube. C'est r au carré. Nous ajustons juste une forme dans une autre. 9. context de la page personnalisée: Bon, parlons d'ajouter un contexte personnalisé à notre page parce que maintenant notre page d'accueil est cool, mais honnêtement c'est codé en dur. Il n'y a aucune variable. n'y a aucun moyen d'ajouter une logique personnalisée à cette chose. Et donc à ce moment où nous avons vraiment juste un site web statique vraiment fantaisie. Il utilise Python, il utilise Django, mais c'est statique. Il n'y a pas de contenu dynamique. Alors allons de l'avant et parlons de ce qu'on appelle le contexte. Alors fermons notre point de base HTML parce que nous n'avons plus besoin de cela. Et ouvrons nos vues et point py. Et dans notre vue de page d'accueil, nous pouvons avoir une méthode ici appelée getContext. C' est une méthode sur une classe, donc elle prend toujours elle-même comme premier paramètre, puis elle prend des arguments de mots clés. Et puis, fondamentalement, nous travaillons avec ce qu'on appelle le contexte. Et dans quel contexte est, est-ce que nous pouvons ajouter des données ici à partir de la logique Python personnalisée. Et puis nous pouvons jeter cela dans notre contexte de citation et l'utiliser à l'intérieur de notre page. Donc, nous allons rapidement fouetter un petit exemple ici et puis je vais vous montrer exactement comment j'ai découvert que les données GetContext existent même. Comment, comment cela existe-t-il ? Comment puis-je savoir que cela existe ? Je vais vous montrer comment j'ai découvert ça. Donc, je vais faire le contexte est égal à super, et cela va aller jusqu'au point de vue du modèle obtenir des données contextuelles. Et nous ne passerions jamais en soi, mais nous pouvons passer notre mot clé, args sont quarks, et nous renvoyons simplement le contexte. Ici. C' est essentiellement un dictionnaire. On pourrait dire, mon truc est égal à bonjour monde, visage souriant avec une langue qui traîne. Monde de l'espoir, Hello World. C' est dynamique. Django redémarre. Et ce que je peux faire ici, c'est que je peux prendre ceci, mon truc, aller à home.html. Et au lieu de lire, c'est notre page d'accueil parce que c'est simplement une variable. Nous, nous ne voulons pas faire de logique supplémentaire avec ça. On n'écrit pas de quatre boucles. Nous ne disons pas à Django d'adapter une forme à l'aide d'un bloc. On ne fait rien de tout ça. Nous voulons simplement imprimer quelque chose sur la page. Nous utilisons la syntaxe de la moustache double. Donc une accolade bouclée, accolade bouclée, puis quelques trucs dans l'accolade de fin, accolade bouclée. Maintenant à l'intérieur d'ici, nous disons simplement mon truc et que mon truc vient d'ici, mon truc. Allons de l'avant et rafraîchissons notre page. Et ça dit, bonjour monde, c'est dynamique. Maintenant, dans notre modèle, il ne dit pas cela, mais à notre avis, c'est le cas. Donc maintenant, nous pouvons avoir une certaine forme de logique et cela commence à devenir un peu plus dynamique. Maintenant, ce n'est toujours pas un excellent exemple et nous allons travailler avec cela pour en faire un meilleur exemple à l'avenir. Mais en ce moment, c'est un exemple assez décent de la façon dont nous pouvons fondamentalement effectuer une certaine logique Python. Mettez-le dans une chaîne ou un nombre ou tout ce que nous voulons vraiment, puis accèdez-le dans le modèle. Maintenant, j'ai mentionné, j'allais vous montrer d'où j'ai obtenu les données getContext. Et il y a quelques sites de Django incroyables là-bas. L' un d'eux est appelé CC BV, vues classe classe classe. Et il est donc CC-BY v point CIO Dot UK a différentes versions de Django. Et ici, nous utilisons Django trois, donc il est automatiquement sélectionné. Et j'utilise une vue de modèle. Et d'où je tire cela est cette vue de modèle. Et tout ce qu'il fait est de rendre un modèle. Ça ne fait rien de plus. Il y a beaucoup de vues différentes ici. Il y a une vue de connexion, Logo, faire une vue de détail, toutes sortes de choses. Nous allons travailler avec quelques-uns d'entre eux dans Django 101, mais en ce moment nous travaillons seulement avec notre vue de modèle. Donc, je clique sur la vue du modèle et il me dit quel type de contenu il peut être, noms de méthode HTTP de contenu supplémentaire. C' est donc autorisé à avoir un GET, post, PUT, patch, delete head options ou trace HTTP en-têtes. Honnêtement, on utilise seulement get. Vous pouvez donc définir ceci pour obtenir simplement un moteur de modèle de classe de réponse et un nom de modèle. Actuellement, nous utilisons uniquement le nom du modèle parce que tout le reste est automatiquement fait pour nous ou géré pour nous. Et ce que j'aime appeler ça parce que c'est une sorte de magie est manipulé de façon automatique pour nous. Et puis nous avons ces méthodes. Et nous avons comme vue que nous avons réellement utilisé, croyez-le ou non, dans nos URL dot py, accueil comme vue. Et nous pouvons voir ce que fait la vue. Et il fait tous ces trucs automatiquement pour nous, donc nous n'avons pas à écrire ça. Dispatch est comme notre méthode init presque, il fonctionne fondamentalement juste après init, plus ou moins c'est vrai. Et nous en avons un ici appelé données getContext. Et je savais que ce contexte est ce qu'on appelle ça. Et c'est parce que j'ai lu les documents Django à plusieurs reprises et donc je suis familier avec cette notion. Si vous n'avez pas lu les documents Django, passez certainement un peu de temps et lisez les documents Django chaque fois que, vous savez, chaque fois que vous avez cinq ou dix minutes supplémentaires, il y a beaucoup de documents, donc ça va vous prendre beaucoup de temps le temps. Ce n'est pas quelque chose qu'on peut lire en une heure. Et les chiens sont assez bien écrits. Donc, les données GetContext font cela. Il prend des arguments self et mot-clé, ce qui est faire, faire, faire, faire, faire, obtenir des données contextuelles. Soi. Args de mots-clés va faire des quarks qui définissent la vue par défaut est égale à soi. Si self.contents n'est pas none, faites d'autres choses sinon, retournez le mot-clé args. Et on a dit, oui, cool, peu importe ce que Jack faisait, faisons la même chose. Nous avons donc saisi notre contexte en utilisant des données de contexte super dot get, en passant les mêmes quarks qui nous sont transmis. Ajouté un peu de contexte et est revenu à l'ensemble de la chose. Donc à l'avenir, quand tu apprends, tu sais, un Django un peu plus avancé. Vous pouvez toujours aller à CC-BY V et Doo-doo-doo-doo, attendant que cela se charge. Il y a toutes sortes de trucs ici. Alors n'hésitez pas à prendre un peu de navigation à travers cela. Mais pour la plupart, nous allons juste rester avec quelque chose basique pour l'instant pour ne pas vous submerger. Dans les leçons futures, vous pourriez même me voir référence CCB v, Juste parce que honnêtement, il est une grande ressource pour avoir fin. Il nous dit des choses comme, comme, comme, quand nous utilisons des données contextuelles get, accepte-t-il une requête ? Accepte-t-il des arguments ? Ne sauf que moi et quarks. Qu' est-ce qu'il accepte ? On ne sait pas, et on pourrait avoir besoin de le savoir quand on utilise super. Et c'est donc une très bonne référence pour ça. Dans la leçon suivante, allons de l'avant et affichons nos messages sur notre page d'accueil. 10. Affichage de publications dynamiques: Ok, dans la dernière leçon, nous avons parlé des données GetContext. Et nous avons ajouté ce truc appelé mon truc, et c'est simplement une ficelle. Mon truc est une corde à rimes. Et je ne voulais pas rimer ni rimer plus. Et je veux dire que quelqu' un aimerait une référence de film de cacahuète là-bas si vous êtes un buff de la Princesse Bride. Et donc nous allons aller de l'avant et échanger mon truc contre des messages. Et ce que nous voulons faire, c'est que nous voulons obtenir nos modèles. Nous avons ces messages et nous l'avons fait comme les deux premières leçons. Whoo, ça est devenu beaucoup trop gros. Nous avons ces messages ici, donc j'ai ce post ici. Allons-y et sauvegardez cela, ajoutez un autre post. C' est un deuxième post. Enregistrer à un poste. Ceci est un troisième post sauver. Et maintenant, faisons l'apparition sur notre page, parce que pour l'instant rien ne s'affiche. Donc, ce que nous voulons faire, c'est que nous voulons saisir ces postes et les obtenir tous. Et donc ce que nous pouvons dire ici, ce sont des contextes, posts est égal à post et je reçois ce nom de cette classe. Nous ne l'avons pas encore importé, nous le ferons dans une seconde. Mais ce nom de classe objets point parce que surprise, surprise. Fondamentalement, tout en Python est un objet. Et à Django, ce sont encore des objets. Il est écrit en Python, donc tout est un objet point tout. Et ça va avoir tous nos messages pour nous. Ensuite, nous pouvons dire à partir de modèles DOT import post. Et cela va simplement nous permettre de saisir ce post, tirer dans nos points de vue pi. Et puis quand cette page est rendue, cela va dire exécuter des données getContext, faire tout ce que Django fait. Et il y a une variable ici appelée posts. Et ce sera tous les postes. Et alors, allons-y et échangez mon truc contre des messages dans le modèle. Et nous allons simplement pour l'instant utiliser la double syntaxe de moustache. Allons de l'avant et rafraîchissons ceci. Et on voit cette chose bizarre, cette chose appelée un ensemble de requêtes. Et donc, dans une base de données lorsque vous recherchez des données, il est appelé une requête. Et nous avons un ensemble d'une requête ici. Donc, nous avons notre premier post, et c'est un nouveau post, un deuxième post et un troisième post. Et c'est un peu une liste. C' est une liste Django vraiment, vraiment fantaisie. Et pour que nous puissions les parcourir maintenant. Et donc au lieu d'écrire des messages, ce que nous pouvons faire est de nous débarrasser de ce H1. On n'a pas besoin de ça là-dedans. Nous pouvons dire pour poster des messages. Et quatre, montrez-moi un truc. Mettons une règle horizontale ici. Et cela devrait montrer trois fois. Montre-moi un truc, montre-moi que tu me montres un truc. Laisse-moi réparer cette cuz qui va me rendre dingue. C' est en boucle pour chaque poste. Et nous savons que lorsque nous parcourons chaque élément de données d'une liste, nous avons cet élément exact. Et c'est comme faire une boucle à travers une liste en Python. La seule différence est que cette liste est livré avec des trucs supplémentaires. Donc, c'est comme faire une boucle à travers une liste de dictionnaires. Et maintenant, nous avons post et texte. Et donc nous pouvons faire des textes postdoc Entrez modèle. Et alors, allons de l'avant et écrire du texte de point post. Rafraîchissez votre page et dit, laissez-moi zoomer ici. Ceci est un nouveau poste, ceci comme un second post. Il s'agit d'un troisième poste. Allons-y et ajoutez-en un de plus ici. Rallons-le encore plus petit. Et Doo-Doo-Doo-Doo, c'est un quatrième billet, sauve. Et quand on se rafraîchit, boum. Maintenant, nous avons des données mises dans une base de données et des données sont extraites d'une base de données et rendues dans un modèle. C' est littéralement tout ce que nous devons faire pour cette leçon particulière. Dans la leçon suivante, allons de l'avant et ajoutons quelques images ici. 11. Ajouter des images à votre modèle: Bon, parlons de la façon dont on peut ajouter une image. Et pour que nous puissions faire quelques choses différentes. Mais on va contourner certaines des subtilités. Et nous allons travailler exactement dans nos modèles, dot-dot-dot. Et donc Django nous donne ce qu'on appelle un modèle est un champ .5. Et nous pouvons télécharger n'importe quelle forme de fichier. Mais ce n'est pas tout à fait ce que nous voulons. Parce que peut-être qu'on veut avoir des miniatures et des trucs aussi bien. Donc, ce que nous allons faire maintenant est d'installer un nouveau paquet. Et nous allons utiliser ce paquet. Donc je vais faire référence aux quais juste en face de toi, et je vais te montrer exactement comment je le fais. Donc, je vais supprimer cela, revenir à mon navigateur et taper le paquet de vignettes Django. Django miniature, et ce n'est pas ce que j'ai tapé paquet. Et il y a des vignettes Django, il y a des vignettes Sorrell. J' ai utilisé la vignette du sol une ou deux fois avant. Apparemment, j'ai cliqué sur ça pour, pour, pour le faire, jetons un oeil à nos documents ici. Fonctionnalités en un coup d'œil prend en charge Django 3.1. C' est ce que nous utilisons, c'est important. Python trois support, très important. Support de stockage, c'est bon. Prise en charge du moteur, l'image de l'oreiller , la magie, la pilule, la baguette, toutes sortes de choses. Ce sont toutes de bonnes choses. Si tu ne sais pas ce que c'est, c'est bon. Intégration d'administration avec possibilité de supprimer, génération factice due à, en raison de faire toutes sortes de choses. Avons-nous une solution alternative de vignettes et de recadrage, des versions de résolution alternatives d' un calcul de marge de vignette pour le positionnement vertical. Cette liste me semble prometteuse. Et alors comment utiliser le code pip installer la vignette Sorrell. Alors attrapons ça. Et dans notre environnement virtuel, je vais simplement coller pip installer la vignette Sorrell. Et si vous utilisez Pip env comme je le suis, nous devrions utiliser pip install plusieurs miniatures d'une façon ou d'une autre et nous pouvons toujours faire Pip montrer la vignette de tristesse. Et cela nous montre que nous utilisons la version 12.7, 2.0. Que devons-nous faire d'autre ? Nous devons mettre la vignette de sol dans les applications installées R. Faisons ça. Où sommes-nous ici ? Mes paramètres de site ont installé des applications. On va faire défiler vers le bas. Jetons ça quelque part au milieu, comme ça. Et puis il y a une certaine utilisation ici, mais nous devons réellement l'ajouter à notre modèle. Ici, c'est l'utilisation modale. On veut suivre ça. Revenons donc à nos modèles dot py. Et que voyons-nous ici à partir du champ d'importation de vignettes Sorrell de vignette point Sorrell, champ d'image d'importation. Et ici, nous pouvons dire que l'image est alors égale à ce champ d'image. Et donc maintenant, nous utilisons un paquet tiers qui superpose Django, qui se superpose sur Python pour créer fondamentalement un champ d'image. Donc, nous pouvons télécharger des images puis les miniatures bien dans notre modèle, Django ne vient pas avec cela par défaut, juste parce que Django est assez nu, il vous donne le strict minimum et vous permet d'étendre pour faire ce que vous vouliez faire. Il n'est pas prévu d'y intégrer toutes les solutions. Ce n'est pas conçu comme ça. Et la raison en est que si vous deviez créer un site Web qui n'a pas besoin. Sorrell vignette et il est livré avec une vignette orale. C' est juste charger des trucs supplémentaires, c'est des trucs supplémentaires pour le télécharger, ça ne vaut pas la peine. Et donc Django dit, oui, d'autres personnes peuvent construire ces extensions. Nous avons donc ajouté ce champ d'image ici. Allons de l'avant et exécutons, exécutez le serveur. Et il dit, regardez ce flux, c'est notre application, nos messages, c'est notre classe. Image, c'est notre domaine. Impossible d'utiliser le champ d'image car l'oreiller n'est pas installé. Astuce, obtenir oreiller à ou exécuter Python Dash M pip installer Pillow. Alors faisons ça. Pip installer l'oreiller avec un P. capital Ok, c'est fait. Run Django à nouveau. Nous en avons un sur la migration appliquée. Faisons en Python géré haut migrer. Et c'est l'application de notre vignette initiale. Cool, ça vient de notre paquet tiers. Donc, il s'agit de provisionner une petite chose dans notre base de données. Voyons si nous pouvons faire nos nouvelles migrations parce que nous devons faire de nouvelles migrations. Donc ces migrations que nous venons de courir provenaient de la vignette de Sorrell. Quand nous faisons des migrations ici, ce que nous disons, c'est Django, hey, prenez un instantané de ce que nous avons actuellement par rapport à ce que nous avions auparavant. Et s'il y a des modifications, créez un fichier de migration. Et nous l'avons fait, nous avons dit que cette classe de poste a maintenant un champ d'image dessus. Et alors, allons de l'avant et courons, faisons des migrations. Et cela va dire que le champ d'image n'est pas autorisé à être nul. Nous pouvons soit appuyer sur un pour fournir une valeur par défaut unique, soit nous pouvons frapper deux. Et définissons une valeur par défaut dans les modèles dot py. C'est juste ici. Nous pouvons dire quelque chose comme par défaut est égal à quelque chose. Nous ne savons pas ce qu'est la valeur par défaut. Allons-y et disons-en un et voyons ce qui se passe. Et je vais juste taper un et peut-être ces pauses, peut-être que ce n'est pas le cas. Si ça se casse, je vais vous montrer comment le réparer. Et je vais prendre le numéro un ici. Donc, il a créé un nouveau fichier de migration appelé 000 pour poster l'image. Et donc si nous cliquons dessus, il a une dépendance sur le fichier de migration d'origine. Donc il a besoin de ce fichier. Et puis il va dire pour les opérations choses qui devraient faire, ajouter un champ. Et ce champ provient des champs de vignettes de points de sol champ d'image de points. C' est une valeur par défaut d'un. C'est ce que nous avons écrit pour télécharger. Nous ne lui avons pas envoyé de téléchargement à. C' est comme un dossier dans lequel nous sommes téléchargés si nous voulions conserver false par défaut. Et donc fondamentalement, cela va nous donner une nouvelle colonne dans notre base de données. Allons de l'avant et maintenant exécuter migrer. Et donc à l'origine, quand nous avons fait nos migrations, nous avons simplement créé ce fichier, nous ne l'avons pas exécuté. Ensuite, nous lançons migrate et il dit, hey, Python, Au fait, je veux que vous preniez ce fichier et je veux que vous l'appliquiez à ma base de données. Allons-y et réexécutons Django et voyons à quoi ressemblent les choses là-dedans. Les choses ont l'air bien jusqu'à présent. Revenons à un navigateur. Oh, voyons si on a vraiment cassé quelque chose. Ok, ça a l'air bien. Quatrième poste actuellement défini sur un. Ce n'est pas du tout ce que nous voulons, mais nous pourrions changer ça. Donc ce que je vais faire ici, c'est je vais simplement supprimer tous ces éléments parce que je veux ajouter de nouvelles images. Donc, je vais les sélectionner tous. Supprime, sélectionné post go va dire, êtes-vous sûr ? Oui, j'en suis sûr. Ajouter un nouveau message. C' est le premier post. Et ajoutons une image. Et ajoutons une image de Galli, Galli à dot-point JPEG Open Save. Et maintenant il y a un fichier ici et on peut même cliquer dessus. Et ça dit, oh, non, ça n'existe pas en fait. Et au-delà, si nous regardons ici, fermons tous ces fichiers. Notre image est ici. Disons que vous aviez 10 000 images. Vous avez maintenant un dossier appelé Feed, le dossier appelé dossier mysite appelé templates, votre base de données, 10 mille images gérées haut, fichier Pip, Pip file dot loc. Ce n'est pas une façon de vivre ta vie. Nous voulons mettre tous nos fichiers sont des fichiers multimédias. C' est comme ça qu'on les appelle. Tous nos fichiers multimédias dans un dossier appelé Media. Et c'est ce que nous allons faire dans la prochaine leçon. Donc, en ce moment, nous avons une configuration de champ d'image, n'affichant rien sur notre page d'accueil. Nous devons configurer notre dossier multimédia de sorte que toutes nos images soient téléchargées dans un dossier particulier. Et c'est vraiment bien si vous avez jamais eu besoin de fermer tous vos dossiers ou toutes vos images plutôt, vous pouvez les zipper tous assez facilement. Vous pourriez tous les supprimer assez facilement. Vous pouvez travailler avec eux plus facilement s'ils sont dans un dossier. Alors, dans la leçon suivante, allons de l'avant et configurons notre dossier multimédia. 12. Configurer votre dossier de médias: Jetons un coup d'oeil à l'ajout d'un dossier multimédia à nos projets afin que toutes nos images ne soient pas téléchargées directement à la racine de notre projet. Pour ce faire, nous devons ouvrir mes paramètres de site dot py, et à peu près n'importe où je suppose, jetons-le ici. Nous pouvons écrire l'URL des médias, et ce sera juste le nom de notre dossier. Et ce sera un média slash avec une barre oblique à la fin et au début. Ensuite, nous allons écrire notre racine médiatique. La racine du média va être OS point, point jointure, base désastreuse. Et puis nous tapons des médias sans barre oblique au début. Et donc cette partie ici a l'air assez familière, n'est-ce pas ? Nous avons configuré cela avec notre répertoire de modèles. Mais au lieu d'utiliser le dossier templates, nous utilisons le dossier média. Et notre URL multimédia sera le cas lorsque vous accédez au contenu. Quand vous allez sur mon site webe.com slash quelque chose, qu'est-ce que ce dossier a appelé ? Où que soit ce dossier, puis votre image point JPEG ou autre. Nous avons donc besoin du paramètre, même si nous ne l'utilisons pas actuellement, nous avons besoin de ce paramètre. Ensuite, passons à nos URL dot py. Et on doit écrire des trucs intéressants ici. Nous allons donc modifier un peu ça. Donc, d'abord, nous allons avoir besoin de nos réglages. Alors faisons, nous allons tout d'abord déplacer cela vers le haut donc c'est dans l'ordre alphabétique. Tout comme une bonne pratique de Django.com, importer les paramètres. Et puis nous allons aussi importer ceci, cette fonction appelée statique à partir de Django.com. Dot URL, point statique, import, statique, pas statut, c'est statique. Ensuite, tout en bas, nous disons si les paramètres point de débogage. Et ce que signifie debug, c'est, vous savez, quand nous n'avions pas de modèle et qu'il a dit qu'il y avait une erreur de modèle et qu'il nous a montré où il cherchait ce modèle particulier. C'est ce que débogué fait. Le débogage nous permet de comprendre facilement ce qui se passe. En production, lorsque vous lancez votre site Web, nous désactivons cette option afin que les utilisateurs ne puissent pas voir toutes ces informations supplémentaires, car cela rendra votre site vulnérable. Mais pendant que nous le codons, nous voulons qu'il soit activé et qu'il soit activé par défaut. Ensuite, nous disons nos modèles d'URL. Ajoutons à ce modèle d'URL. Nous allons dire les paramètres statiques, l'URL des médias. Et puis la racine du document, le soulignement du document. La racine est égale à la route média racine Settings.me. Et donc c'est juste en utilisant un langage Python assez standard watts. Vraiment. Nous importons les paramètres du fichier entier. Et puis nous utilisons la propriété dans ce fichier. Nous importons juste des paramètres. Encore une fois, c'est essentiellement un objet. Et puis nous utilisons la route des médias et nous avons obtenu cela à partir de nos paramètres ici, URL des médias, racine des médias. Alors allons-y et sauvegardons ça et voyons ce qui se passe. D' accord. On dirait que rien ne s'est passé. Mais allons rafraîchir cette page, puis changer cette image au lieu de Gulley pour, mettons delhi ventre. Sauvegardez ça. Et voyons ça. Et vous pouvez réellement voir des médias slash, point ventre ravin JPEG. Et jetons un coup d'oeil dans notre projet ici nous avons maintenant un dossier appelé Media et le ventre de ravin est là dedans. C' est fantastique. Nous pouvons maintenant nous débarrasser de Gulley aussi, parce que c'était notre original. C' est supprimer ça. On n'a plus besoin de ça. Et tous nos dossiers ou pas ou dossiers, mais tous nos fichiers vont être téléchargés dans le dossier multimédia. Donc, comme un résumé rapide, ce que nous avons fait, c'est que nous avons ajouté l'URL des médias et la racine des médias. Et c'est un peu comme lorsque nous avons créé notre chemin de modèle ou de modèle. Doo-doo-doo-doo, celui-ci, notre modèle désastreux. Celui-ci est notre racine médiatique. Ensuite, nous avons utilisé une URL de média et cette racine de média dans nos modèles d'URL. Et donc l'idée ici est que lorsque vous servez des fichiers statiques avec le débogage activé, Django va servir ces fichiers pour vous. Techniquement, c'est une façon peu sûre d'utiliser Django. Donc, lorsque vous lancez votre site Web à un moment donné dans le futur, vous ne voulez pas l'utiliser et vous allez avoir désactivé le débogage et vos fichiers statiques vont se casser. Ensuite, vous pouvez utiliser quelque chose comme le moteur X pour inverser les images et les configurer de cette façon. Nous n'allons pas en parler pour le moment, juste parce que ça devient un peu plus compliqué et un peu trop accablant quand on apprend juste Django. Mais pour l'instant, c'est ce dont nous avons besoin pour nous lever et courir. Juste ça. Dans notre prochaine leçon, allons de l'avant et ajoutons réellement cette image à notre modèle de maison. 13. Ajouter des images à votre modèle: Okey-dokey, ajoutons des images à son modèle de maison. Parce que si on prend un aperçu et qu'on peut fermer ça. Si nous prenons un aperçu de notre page, il est simplement dit que c'est le premier post, mais il n'y a pas d'image ici. Allons de l'avant et ajoutons une image ici. Et donc nous devons ouvrir nos modèles à la maison. Et nous savons qu'il y a post-impôt. Et où je reçois cela à partir de modèles dot py post 2.txt. Nous avons maintenant une image. Nous pouvons faire Post.all image. Alors imprimons ça et voyons ce que ça nous donne. Faisons un BR ici, poster une image de point. Voyons ce que cela revient pour nous. Nom de l'image. Je pourrais probablement faire l'image de point, l'URL de point. Oui, il est là, c'est l'URL réelle. Et si je devais envelopper cela dans une image, IMG SRC est égal à. Nous allons voir que c'est une image géante, géante, géante. Nous avons besoin d'une vignette parce que cette image est tellement grande. Tellement grand. Regarde ce joli visage. Et il voulait une image plus petite parce que cette image que je connais est déjà plus de trois megs. Et si nous voulons montrer comme un 100 images, c'est quelqu'un a un téléchargement 300 mégaoctets pour voir votre page Web, c'est tout simplement inacceptable. Donc, ce que nous pouvons faire est maintenant référencer nos documents de miniatures Sorrell. Et comment on fait ça ? Il est dit utilisation du modèle. Nous voulons charger une vignette. Revenons donc à notre page d'accueil et mettons la charge sous étend. Extend devrait toujours venir en premier, puis nous chargeons. Et alors, qu'est-ce qu'on note ? Nous disons que c'est une utilisation simple. Ok, je vais juste copier et coller ça pour être honnête. Doo-doo-doo-doo. Et donc cela va utiliser une vignette qui vient d'ici. Item.Nom, image. Nous n'avons pas d'article, nous avons l'image de point de poste, 100 par 100 et nous allons faire 200 par 200 centre de culture comme je m. Et puis nous pourrions dire les sources d'image I M point largeur URL comme je m largeur de point, hauteur est I m hauteur de point. Allons de l'avant et sauvegardons ça. Et revenons ici. Il suffit de rafraîchir. Et il a créé une vignette pour nous. Cool, donc c'est une image parfaitement centrée 200 par 200. Allons de l'avant et inspectons ça. Et il a créé cette URL bizarre pour nous. Ouvrons cela dans un nouvel onglet. Et voici l'image. C' est dans notre dossier média. Il a automatiquement créé un dossier de cache appelé BB C1, puis une sorte de hachage. Et c'est simplement utiliser la mise en cache pour nous, donc il n'a pas besoin de régénérer la vignette à chaque fois que quelqu'un clique sur votre site Web. Donc c'est vraiment sympa. Et la première fois que nous avons chargé le site, vous remarquez qu'il a probablement fallu 2,5 fois plus vite, 2,5 fois plus lent. Au contraire, quand on se rafraîchit cette fois, ça va être à peu près instantané. On ne voit pas de flash ou quoi que ce soit. C' est juste boum, c'est fini le chargement. Allons de l'avant et ajoutons un deuxième post. Alors sauvegardons celui-là. Il s'agit d'un deuxième post. Ajoutons une image. Ajoutons de la rhubarbe. Sauvegardez, et actualisons nos pages. Débarrassez-vous de notre console ici, rafraîchissez notre page. Oh, regarde, il y a de la rhubarbe. Allons-y et ajoutez-en un de plus. Il s'agit d'un troisième poste. Et ajoutons une photo de rhubarbe et de ravin. Et celui-là est un gros. C' est 4,2 megs. Dieu merci. Nous sommes en train de faire des vignettes. Et c'est là. Tout cela est prêt pour nous. Dans la leçon suivante, ce que je voudrais que nous puissions faire est de pouvoir cliquer sur l'une de ces images et aller à une autre URL quelque part et voir l'image complète. 14. Ajouter une vue détaillée: Ok, ce que j'aimerais que nous puissions faire, c'est pouvoir cliquer soit sur ce texte, soit sur l'image, soit sur les deux. Et puis allez voir une autre page Web où nous montrons l'image complète, la version non compressée. Et pour ce faire, nous utilisons cette chose appelée une vue détaillée. Et donc c'est juste dans le nom, c'est une vue détaillée. Nous devons ajouter une nouvelle vue. Alors allons dans notre flux, allons dans les vues. Et ajoutons une nouvelle vue détaillée. Et cela vient de la vue détaillée générique. Et si vous n'êtes pas sûr d'où je dois voir en détail ou si vous n'êtes pas sûr d'où importer cela parce que vous n'avez pas à vous souvenir de toutes les importations. Cela vient juste avec l'écriture de Django et Python au fil du temps, vous commencez à vous souvenir d'eux. Mais si vous ne savez pas d'où il vient, vous pouvez toujours aller à C, C B v point c o point UK. Et ça vous dira exactement d'où ça vient. En fait, je vais vous montrer d'où ça vient. Nous avons une vue détaillée. Où êtes-vous la vue détaillée générique. Et il est dit ici à partir de Django dot générique importer la vue détaillée. Et on peut faire toutes sortes de choses ici. Et donc, il a un nom d'objet de contenu content_type, contexte supplémentaire. Si nous voulions ajouter un contexte supplémentaire, des méthodes HTTP, un modèle, nous devons définir ce modèle. URL de clé primaire, mot clé, yada, yada, yada, toutes sortes de choses. On ne va pas travailler avec beaucoup de ça. On va juste travailler avec un peu de ça. Nous devons donc créer une nouvelle vue détaillée. Alors faisons la classe. Et appelons-le la vue détaillée Post. Et cela va hériter de Jen va vue détaillée. Ensuite, nous lui donnons un nom de modèle. Et ce nom de modèle va simplement être détaillé layout.html. Et ce modèle va être posté. Et ce post vient d'ici, qui vient de notre modèle ici. Et en fait, tout ce que nous disons à ce stade, c'est de dire , vous savez, nous avons ce modèle, nous avons comme vue détaillée. Si vous allez à une URL particulière, juste travailler automatiquement pour nous, chercher cette image particulière pour nous, ce post particulier. Et donc nous n'avons pas à faire une recherche. Nous n'avons pas à nous soucier de la gestion de votre base de données. Django gère cette vue détaillée pour nous et tout ce que nous avons à faire est d'écrire les deux lignes de code. C' est honnêtement une belle, belle chose. Donc je sauve que Django redémarre, rien ne se passe. Ce que nous devons faire maintenant, c'est d'aller dans nos URL ou nos URL de flux. Et nous devons ajouter un autre chemin ici pour que nous puissions taper chemin, disons que les détails slash une sorte d'entier qui va être l'identifiant de poste et rendre une vue. Et le nom va être, appelons-le détail. Et ça devrait être plus comme ça. Donc, ne faisons pas les détails ASU et au lieu de int, parce que cela va juste rendre mon site webe.com slash détails slash int. Nous voulons dire I N T côlon PK. Donc, il cherche un entier. Et quand il rend notre vue ici, il va renommer cet entier, peu importe ce que c'est. Donc, il pourrait être comme une barre oblique de détail website.com va regarder cet entier et il va le nommer pk. Ensuite, nous devons rendre une vue. Et cette vue est appelée vue de détail post. Donc, si je retourne aux URL et faisons à partir des vues DOT importer la vue de la page d'accueil. Importons également la vue détaillée de la publication. Et c'est une classe donc nous utilisons comme vue. D' accord, Django ne se plaignait pas jusqu'à présent. Donc, jusqu'à présent, si bon. Allons-y et essayons ça juste pour voir où on en est. Donc tout d'abord, nous avons besoin d'une pièce d'identité. Si je clique sur ce, il indique l'ID ici, les messages sont huit. Alors allons à l'école pour jeter un coup d'oeil à la postdate. Donc, nous pouvons maintenant faire notre site localhost port 8 mille barre oblique détail huit. Et quelque chose ici est à peu près o. et c'est parce que j'ai mis une barre oblique à la fin ici, et il devrait y avoir une barre oblique juste là. Donc, attendez juste que Django redémarre, actualise. Et nous devrions obtenir une erreur Template Not Found. Il y a un modèle n'existe pas. Arabes à la recherche de layout.html détaillé. Maintenant, où est-ce que ça regarde ? Alors qu'il va regarder dans notre dossier de modèles appelé détail, appelé point détaillé HTML. Le dossier Modèles est appelé modèles. Le fichier est appelé détail point HTML. Ou il va regarder dans ce paquet, ou il va regarder dans ce paquet. Donc, donnons-lui juste le premier endroit qui est à la recherche de modèles, layout.html détaillé. Donc, nous allons dans nos modèles, nouveau fichier, point de détail HTML. Et nous allons juste écrire bonjour monde. Ne faisons rien de fantaisie ici. Bonjour le monde avec un cœur. Maintenant, ça ne va pas marcher. C'est du HTML avec un smiley. Cool. Ok, on a une vue en train d'être rendue ici. C' est une bonne nouvelle. Allons de l'avant et prolongons la base. Parce que si je sauvegarde très rapidement, voyons la source. Il n'y a rien là-dedans. Allons de l'avant et prolongons, s'étend. Point de base HTML. Rafraîchissons une page. Il semble que rien ne s'est passé, mais si je regarde à nouveau la source de la page, nous avons des choses ici avec un titre par défaut. Donc, nous allons faire bloc, titre, détail, vue et bloc. Et ça a changé le titre là-haut. C' est bien. Ça veut dire que ça marche. Bloquer, corps et bloc. C' est là que mon image va aller. C' est là que mon image va aller. Donc ce que je vais faire, c'est que je vais m'arrêter ici. Et dans la leçon suivante, nous allons en fait remplir certains des détails sur cette page. Nous n'allons pas le faire fière allure, mais nous allons remplir certains des détails sur cette page. 15. Modèle de détail: Bon, bienvenue. Voici notre page Détail. C' est censé montrer cette image ici, la rhubarbe et le ravin. Actuellement, il ne montre rien, rien ici aussi dynamique. Maintenant, nous savons que nous pouvons utiliser les données GetContext, mais nous n'avons pas besoin de le faire parce que Django gère beaucoup de choses pour nous. Donc, nous ouvrons nos points de vue Py. Nous utilisons un nom de modèle appelé layout.html détaillé. Et nous disons que ce modèle est post. Si nous ouvrons nos URL dot py, notre chemin est le détail, puis une sorte de nombre. Et il va automatiquement comprendre qu'il y a un entier là-dedans, réaffectez-le à la variable appelée pk. Et quelque part dans cette vue détaillée, ça va s'arranger pour nous. Ça va dire, oh, je sais exactement ce que tu cherches. Maintenant, par défaut, s'il peut trouver ce que vous cherchez dans votre contexte, comment appellerons-nous ceci ? Parce qu'avant qu'on l'appelle comme des messages ou mon truc, on doit appeler ça quelque chose. Et alors, allons de l'avant et essayons l'objet. Et ça nous donne l'objet. Et en fait ce que cela fait ici, vraiment heureux que cela est venu, c' est qu'il m'a donné le texte. Et c'est parce que si nous allons aux modèles et nous a donné l'objet de poste, mais donner un, nous a donné la représentation de chaîne de ce, qui est juste self.TableView. Mais probablement nous pourrions faire du texte objet point ou de l'image point objet. Donc, faisons l'image de point d'objet. Ok, c'est le nom de l'image. Donc presque là. Que faire si nous avons fait image.all URL ? C' est notre URL, c'est ce que nous voulons. Alors allons de l'avant et hacher ça un peu. Donc, disons texte h3, texte point objet. Et faisons l'image h3. Et cela va simplement être une étiquette d'image, IMG SRC. Rendons ça un peu réactif. Ajoutera Bootstrap plus tard à cela avec une hauteur automatique de 100%. Et boum, il est là. Regarde ces biais QD. Et maintenant, nous avons une vue détaillée. Dans la leçon suivante, ce que je voudrais faire c'est que si nous cliquons juste en arrière, ceux-ci ne sont pas encore cliquables. Nous devons donc comprendre comment rendre ces cliquables et, et où aller. Parce qu'on peut coder ça en dur. Nous pourrions dans notre raison de, en raison de faire notre home.html, faire ceci un lien qui va à planquer détail slash ID post-doc si nous le voulions, parce que nous savons que la colonne ID existe, il y a une meilleure façon de vivre votre vie cependant. Et si jamais nous le changeons de détail à des détails, une image ou un autre préfixe dans notre URL ici. Et si on voulait changer ça ? Eh bien, alors il faudrait le changer chez elle. Et ce que je vais te montrer un moyen qu'on n'a pas à faire ça. On peut juste dire, Django, gérer ça pour nous. Et si cela change à l'avenir, change-le aussi ici pour nous. C' est ce qui se passe dans la prochaine leçon. 16. Liens du modèle: Bon, jetons un coup d'oeil à rendre ces cliquables et à une autre page. Donc, tout d'abord, fermons les détails, les vues et les URL et les modèles. Nous avons juste besoin de travailler avec notre home.html. Pour cette leçon particulière, nous devons créer une sorte de lien. Et donc ce que nous pourrions faire est un HREF View Details. Et puis ici, nous pouvons dire aller à la barre oblique détails slash post dot id avec une barre oblique. Et quand je clique sur ce o c, C'est exactement pour ça que nous ne faisons pas ça. Ce ne sont pas des détails. Je vous garde dans ce détail. Rafraîchir. Allez aux détails. D' accord. Ça marche. Et ça marche. Que faire si, pour une raison quelconque, je l'ai changé de détails à info ? Ok, donc je vais retourner à ma page d'accueil maintenant, rafraîchir. Ma page ne fonctionnera plus pour moi. Et vous pouvez voir que ça me donne un fluorophore. Donc quelque chose s'est cassé. Maintenant, il y a une meilleure façon de le faire. On lui a donné un nom et il y a cet espace de noms ici. Et dans cet espace de noms correspond également. Où sommes-nous pourrions citer des URL que l'espace de noms correspond ici. Donc, nous pouvons dire dans notre home.html, nous pouvons dire, hey Django, exécuter la fonction appelée URL. Ensuite, cherchez notre flux, c'est notre espace de noms et notre vue détaillée. Et je l'obtiens à partir de l'espace de noms, c'est notre nom d'application, notre vue détaillée, c'est notre nom. Et puis il faut un entier. Et donc comme une chaîne avec des guillemets ou des apostrophes autour d'elle. Et puis en dehors de cette chaîne, je dis simplement post.All ED. Et essayons ça. Si je clique dessus, il va au détail barre oblique six. Revenons à nos URL et changeons ceci en info. Actualisez, attendez que Django redémarre. Rafraîchissez ça. Cliquez à nouveau sur ce bouton. Et vous pouvez voir mes liens modifiés et l'URL va à info slash six. Et il le génère automatiquement pour toutes ces images pour nous parce qu'il est dans une boucle for. Donc maintenant je vais juste annuler ça parce que j'aime qu'on l'appelle détail. Mais maintenant, nous n'avons pas à nous soucier des URL de codage en dur, ce qui est vraiment, vraiment sympa. Allons de l'avant et rendons toute cette chose cliquable. Faisons ça. Slash a. Et parce que cela a des choses dedans, faisons du style, affichons, en ligne, bloquons. Et tout ça va maintenant être cliquable. Alors maintenant, on peut aller voir le ravin, regarder cette jolie tarte. Un peu potelé, un truc assez mignon, cette mignonne tarte. Et on peut revenir ici. Et si on faisait une sorte d'application, comme presque comme une application mobile. Et nous voulions faire un lien ici qui dit revenir en arrière. Nous pourrions jeter cela sur notre page Détail aussi. Alors ouvrons notre point HTML détaillé et le corps intérieur. Ajoutons un lien, un HREF. Retourne, barre oblique a, et ajoutons une flèche, une flèche gauche. Et ici, nous pouvons simplement dire accolade, signe pour cent, URL, flux. Et je pense qu'on l'a appelé indice. On va vérifier deux fois dans une seconde. Feed correspond également à l'espace de noms ici, donc nous utilisons le flux ici, puis faisons l'index Doo-doo-doo. Maintenant, cela n'a aucune sorte de paramètres dans l'URL, donc nous n'avons pas à nous soucier de transmettre des paramètres. Contrairement à quand nous utilisons la vue de détail post, nous avons dit utiliser le détail deux-points de flux. Et puis nous avons passé dans un paramètre. Celui-ci n'a pas de paramètre. C' est juste la page d'accueil. Il n'y a pas de paramètres à transmettre. Et donc nous utilisons l'index des deux-points pour aller de l'avant et rafraîchir notre page. Et ça dit Retournez et ça nous ramènera à notre page d'accueil. Ça va continuer à travailler pour nous. Continuez à travailler. Et c'est ainsi que nous ajoutons des URL. Dans notre prochaine leçon. Allons de l'avant et ajoutons un formulaire afin que quelqu'un puisse télécharger une image par lui-même. Et ils n'ont pas besoin d'avoir un accès administrateur. Ainsi, tout le monde peut visiter votre site Web et télécharger une image de son propre chef. 17. Ajouter un formulaire de téléchargement: Ok, discutons de cette idée des formes. Donc, si vous venez comme un arrière-plan Node.js, vous pouvez ou non utiliser des formulaires réels, mais est la bonne façon d'utiliser importe quel type de formulaire où vous téléchargez des données ou que vous enregistrez quelque chose est d'utiliser réellement un élément de formulaire c' est la bonne façon de le faire et c'est ainsi que nous devrions tous le faire. Les nouvelles applications Web progressives et les applications d'une seule page ignorent souvent tout ce processus. On ne fait pas ça. Et cela garde aussi notre forme agréable et accessible. Donc, si quelqu'un n'exécute pas JavaScript ou utilise pas un ancien navigateur, cela va toujours fonctionner pour eux. Donc, à mon avis, c'est une sorte de meilleure façon de le faire. Vous pouvez toujours plus tard JavaScript sur le dessus pour vous faire former vraiment fantaisie aussi. Mais pour l'instant, prenons juste une forme régulière. Tout d'abord dans notre flux, allons de l'avant et créons un nouveau fichier appelé forums dot pi. Ici, nous devons faire à partir des formulaires d'importation Django. Maintenant, cela va ressembler beaucoup à des modèles importants Django DB, classe quelque chose modèles modèle point. Vérifie ça. Formulaire de poste de classe. C' est comme ça que nous allons l'appeler, des formes, des points. Et c'est à peu près tout ce que nous avons à faire pour créer un formulaire. Maintenant, nous pouvons lui donner une sorte de paramètre, ne sont pas un paramètre mais un champ. Quel genre de choses voulons-nous afficher sous cette forme ? Et nous faisons cela avec comme le texte est égal au champ de char points forums. Et contrairement à nos modèles où nous faisons des modèles dot char champ, nous faisons des formes dot char field. Ajoutons également une image dans votre image est égale à formulaires champ de fichier point. Nous allons télécharger un fichier, quoi que ce soit, nous allons juste le télécharger. Nous ne allons pas trop nous inquiéter de la validation d'image ou de quelque chose comme ça. Nous allons simplement télécharger une image ou télécharger un fichier et espérons qu'en tant qu'image parce qu'il s'agit d'un cours « one-to-one », nous n'entrons pas dans les détails et les complexités de Django. Nous voulons juste quelque chose de base qui fonctionne, qui nous donne un peu d'expérience. Donc, nous avons des formulaires dot pi avec un formulaire de poste ici. Ouvrons nos URL dot py, et créons un nouveau chemin. Et cela va créer une nouvelle page pour nous où quelqu'un peut réellement poster une image. Et appelons-le Post. Et puis il doit rendre de la vue. Et ce nom va être, et c'est ce qu'on appelle ajouter. Nous allons ajouter une image ou non, restons avec post. Ils vont poster une nouvelle image. Maintenant, il doit rendre une nouvelle vue. D' où allons-nous obtenir ça ? Allons le créer. Tout d'abord, donnons-le juste un nom ici. Ajouter la vue de poste, point-point comme vue. Nous allons utiliser une vue basée sur la classe pour cela. Et nous allons importer cette vue Ajouter une publication. Et quand j'aurai frappé Save, tu verras que Django a un peu de panique. Oui. Impossible d'importer la vue Ajouter une publication, yada, yada, yada. On sait qu'il n'existe pas encore. Jangled, merci de nous l'avoir fait savoir. Allons donc dans nos points de vue et créons un nouveau ici. Maintenant, nous voulons importer. Une vue Formulaire. Et ce que cela va faire, c'est que cela nous permet de poster sur notre page pour réellement télécharger des choses. Alors allons de l'avant et créons cette nouvelle vue. Classe, Ajout de la vue Post. Ce sera une vue de formulaire. Maintenant, qu'est-ce qui vient dans une vue de formulaire ? On ne sait pas. Revenons à CC-BY v. Revenons à la page d'accueil. Et où est notre vue de formulaire ? Juste là, vue générique de formulaire. Et donc cela prend aussi un nom de modèle. Cela prend une classe de formulaire. Où es-tu ? Classe de formulaire ? Et sympa. Et je pense qu'il va toujours chercher qu'il est une URL de succès. Donc, quand le formulaire est soumis avec succès, disons qu'il n'y avait pas d'erreurs dedans. Disons qu'il a été soumis avec succès. Où est-ce que c'est censé aller ? Et il y a aussi une méthode ici avec laquelle nous voulons vraiment travailler, et c'est notre formulaire valide. Si ce formulaire est valide, ce qu'il va faire est de nous donner une redirection HTTP vers l'URL get success. Suissons juste ça. Obtient l'URL d'accès. S'il n'y a pas d'URL de succès, nous allons définir, mais s'il n'y en avait pas, cela va dire mal configuré, sinon, il va retourner cette URL de succès. Alors allons mettre en place notre vue d'abord. Nous devons lui donner un nom de modèle et appelons-le nouveau post.html. Nous avons besoin d'une classe de formulaire et ce sera quelque chose que nous ne sommes pas encore sûrs. Et un succès. Url, au moins S URL d'accès. Et revenons à la page d'accueil. Maintenant, cette classe de formulaire, qu'est-ce que ça va être ? Cette classe de formulaire va être le formulaire de poste. Et donc nous devons faire à partir du formulaire d'importation de DOT formulaire. Faites défiler vers le haut à partir du formulaire d'importation de formulaires. Et nous pouvons changer cela ici pour poster le formulaire aussi. Et regarde ça. Django ne se plaint plus. Si, si, si, si, si si nous revenons ici et aller à Quelle était cette barre oblique d'URL. Aujourd'hui, le modèle n'existe pas. On s'est occupé de ça deux fois. Maintenant. Nous savons comment faire face à ça. Nous devons simplement le faire exister. Donc ce que je vais faire ici, ce n'est pas les détails de base. Je vais juste enregistrer ceci en tant que nouveau post.html et juste écraser le contenu ici. Télécharger une nouvelle image va être le titre et le corps va être rien encore. Ça va dire vide. Boom, juste comme ça. Donc maintenant, nous faisons des vues assez rapidement. Maintenant, nous devons réellement rendre cette vue d'une manière ou d'une autre. Nous devons, nous n'avons pas le point de vue, mais la forme. Nous devons faire apparaître ce formulaire. Alors nous allons nous débarrasser de la base, nous allons nous débarrasser des modèles. Nous avons cette vue Add Post. Que pouvons-nous faire ? Que nous dit CCB V ? Allons dans l'acquisition de données contextuelles pour mixin. Et si nous lisons cela correctement, si la forme n'est pas en quarks, alors la forme quarks est égale à obtenir la forme. Nous savons donc que ce n'est pas un contexte. Nous pouvons écrire le formulaire dans notre page. Allons de l'avant et écrivons le formulaire directement dans notre modèle. Voyons ce que ça fait. Forme. Hé, regarde ça. Ce n'est pas mal du tout. Et il y a différentes façons de faire. Nous pouvons faire point ASU L. Et si nous faisons un clic droit et inspectons, cela nous donne que, eh bien, c'est une table ainsi que p, mieux. Comme table comme UL. On y va. Comme vous aussi, je ne sais pas pourquoi il est apparu comme une table cette première fois. C'était un peu bizarre. Je pense que c'était peut-être un vieux code source que nous regardions. Mais comme UL va créer une liste, et regardons cela. Nous avons maintenant un formulaire. Maintenant, ça ne va rien faire. Si je vais ici et que j'appuie sur Entrée, il n'y a pas de formulaire. Et si on vérifie ce code source, on a juste des alliés ici. Et en fait ce que je vais faire, c'est que je vais utiliser comme p x. Je ne veux pas encore traiter des listes. Et donc simplement les met sur une nouvelle ligne. Cool, cool, cool. Mais nous devons ajouter un formulaire HTML réel ici. Donc Django nous permet de contrôler en laissant, en nous donnant juste l'intérieur de la forme. Nous pouvons écrire ce que nous voulons à l'extérieur du formulaire. Donc, la méthode for va être post et l'action va être sa propre page. Ensuite, créons un nouveau div ici avec un bouton. Et le type ne sera pas bouton, mais ce sera Soumettre. Soumettre le formulaire, le formulaire barre oblique. Vérifions ça. Débarrassons-nous de cette page. Vérifie ça. Nous avons une soumission et essayons ça. Et je vais te montrer que ça va échouer. Tout d'abord, il cherche cette chose appelée un jeton CSRF. Et c'est un jeton de falsification de requête intersite. Et fondamentalement, cela assurez-vous que les gens soumettent le formulaire à partir de votre site Web. Et nous ajoutons l'un d'entre eux très facilement en faisant accolade, signe de pourcentage, CSRF, jeton de soulignement. Allons de l'avant et réessayons ceci et rafraîchissons la page. Bla, bla, bla, bla, bla. Et l'image ici. Et nous allons voir que cela échoue aussi. Il dit que ce champ est obligatoire. Allez-y à une autre image. Il dit que ce champ est obligatoire. Encore une fois. Que se passe-t-il ici ? On ajoute ça là-dedans. Maintenant, voici la chose est que lorsque vous téléchargez des images ou des fichiers de tout type, n'importe quel type sur un formulaire, vous avez besoin de cette chose appelée un type d'encre. Et nous faisons des données de formulaire de slash en plusieurs parties. Et cela nous permet d'envoyer des fichiers de notre navigateur au serveur. Allons de l'avant et sauvegardons cette actualisation. Oh, on ne veut pas faire ça. Nous voulons faire un rafraichissement dur. C' est une nouvelle photo. Allons de l'avant et sauvegardons ceci ou non, mais ajoutons cela. Je scanne cette image ici. Ok, un me remettre à la page d'accueil. C' était la demande ou la demande, mais c'était l'URL de succès que nous avons écrit qui venait, d'où sommes-nous ici ? L' URL du succès est retournée directement à sa maison. Maintenant, si nous revenons à notre administrateur ici, vérifions nos messages. Sont post n'existe pas encore. Nous devons ajouter un formulaire valide posté ici et créer un nouveau post avec les données. Nous avons donc cette méthode appelée def form valide. Il prend de l'auto et de la forme. Revenons au CC-BY V et formulaire valide ici. Et qu'est-ce que ça va faire ? Cela va retourner une redirection de réponse HTTP vers l'URL de succès. Donc, contrairement à nos données de contexte où nous avons fait le contexte est égal à super. Et puis un tas d'autres choses que nous ne ferons pas ça. Nous allons retourner un formulaire super point valide avec un formulaire là-dedans. Et faisons cette minuscule. Et puis on peut dire ici, imprimé, que c'était valide. Et nous allons juste comme le spam ou le terminal avec cela. Et nous allons de l'avant et revenons à slash post nouvelle image. Et encore une fois, cela ne va pas sauver encore. Et il y a, il y a un moyen plus facile de le faire. Nous pourrions utiliser un formulaire modèle si nous le voulions. On ne va pas faire ça tout de suite. On va, on va rester simple avec un formulaire régulier. Alors allons-y et soumettons-nous ceci. Et on va voir que notre terminal a un peu d'attaque de copains. Il dit que c'était valable encore et encore. Le formulaire lui-même était valide. Maintenant, si nous voulons les données du formulaire, nous pouvons toujours faire imprimer les données nettoyées par point de formulaire, ce sont les données validées. Donc, si quelqu'un a essayé d'écrire du HTML ou du JavaScript ou quoi que ce soit là-dedans, il va le nettoyer pour nous, ce qui est vraiment sympa. Django gère ça pour nous. Texte. On pourrait imprimer ça quelques fois. Revenons à la barre oblique ajoutera une URL pour cela très bientôt. C' est mon texte où le cœur. Et on dirait qu'il n'a rien fait mais dit que c'est mon texte avec le cœur. Et maintenant ce que nous pouvons faire parce que ce formulaire est propre, nous savons que le point de forme nettoyé textes avec du texte comme une clé de dictionnaire imprime le texte qui était dans le formulaire. Vraisemblablement, l'image va aussi fonctionner. Donc, si nous revenons aux formulaires, nous avons le texte est égal au champ char de points forums, et l'image est égale à des formes comme le champ de fichier. Allons de l'avant et créons un nouveau post. Nous devons donc créer un nouveau poste. Maintenant, avant de faire cela, nous devons faire votre poste est en fait importé, ce qui est. Et puis nous pouvons dire le nouvel objet parce que tout est un objet est égal à post.All objets dot create. Et si nous regardons nos modèles, il est à la recherche de texte comme mot clé et image comme mot clé. Donc maintenant, nous pouvons dire que le texte est égal à des formulaires point nettoyés texte de données. Et l'image est égale à l'image de données nettoyées par point de formes. Et quand c'est fait, quand ça aura fini de sauver ça, ça va nous renvoyer à la page d'accueil. Allons voir si j'ai fait des erreurs ici. Poste de barre oblique. C' est ma nouvelle image. Et qui laisse faire des amis ensemble Lego. Et dit, oh, les noms se forment pas pour trouver d'accord, que parce que là où vous, ce n'est pas sa forme. Et la raison pour laquelle c'est forme est parce qu'il est passé ici comme la forme de mot, comme la forme d'argument. Allez-y et essayez encore une fois. Et une petite chose que nous pouvons faire ici est que si vous voyez quelque chose comme ça, vous pouvez juste rafraîchir votre page. Et ça va dire, hé, parce que c'était une méthode post. Tu veux réessayer ? On va dire oui, réessayer. Faites défiler vers le bas. Et voici ma nouvelle image. C' est mon set Lego que j'ai fait le week-end dernier. On va mettre des amis. Last but not least, nous devons ajouter un lien vers cette vue réelle. Sinon, les gens ne sauront pas que ça existe. Alors allons à notre vue de la maison et ajoutons un lien. Un href est égal à ajouter un nouveau message. Et faisons une flèche droite. Et cela va aller aux messages de fil d'URL. Et d'où je tire ça, c'est à nouveau, flux, c'est le nom de l'application, c'est l'espace de noms que nous utilisons et le message de nom. C' est donc toujours le deux-points de l'espace de noms, le nom de la vue. Trois frais. Oh, ça a l'air un peu vicieux. Ajoutons un HR ici. Juste une règle horizontale. On y va. Ajouter un nouveau message. Nous pouvons ajouter un nouveau post. Cool, cool, cool, cool, cool, cool. Et ajoutons le ventre de cuisine à nouveau. Faites défiler vers le bas et nous voyons Coucou, coucou qui va avec des ravines ventre là-dedans. Ok, c'est fantastique. Cela fonctionne en fait maintenant. Donc, pour ce qui est de cette leçon, c'est terminé. Dans la leçon suivante cependant, faisons apparaître les derniers messages en haut. 18. Trier des publications par défaut: Très bien, faisons en sorte que les nouveaux messages apparaissent en haut ici. C' est donc le plus ancien poste, deuxième plus ancien, le troisième plus ancien. Vous pouvez même voir qu'il y a nommé premier, deuxième, troisième. C' est la nouvelle image, coucou cool. C' est celui que nous avons ajouté dans la dernière vidéo. Inversons ça. Alors passons à notre point de vue ici. Fermons tous ces trucs et faisons semblant que nous partons de l'alimentation à zéro. Nous devons entrer dans notre point de vue. Nous devons voir notre page d'accueil. Et nous étions essentiellement en boucle à travers tous nos messages, tous les messages disponibles dans notre application. Et donc nous disons post.Tous les objets pointent tous, qui va obtenir tous les objets. Et puis nous pouvons dire l'ordre des points soulignés par, et nous pouvons le commander par des textes ou une autre forme. Et donc nous pouvons le commander par son texte ou ordonné par son texte descendant. Ou nous pourrions le commander par son ID, qui est ce qu'il fait par défaut, ou son ID décroissant. Et quand je frapperai ici, on va voir que cet ordre va tourner. Ça va être complètement inversé comme ça. Et il est juste arrivé d'être la première et dernière image sont exactement les mêmes. Mais c'était le plus récent. C' est le deuxième plus récent, 1 tiers le plus récent, 1, quatrième le plus récent et le plus ancien. Et alors tout ce qu'on a fait là, c'est qu'on a dit, hey Django , récupère tous les objets postaux , et puis on les commande par l'ID. Et nous savons qu'il a une carte d'identité. Chaque modèle a un ID par défaut. Et c'est même la migration interne ici, il s'appelle ID order par ID descendant avec un signe moins. Si nous avons dit ceci, c'est ce qu'il fait par défaut et il va commander 12345678910. Si on descend, ça va aller 10987654321. Et c'est tout ce qu'on a à faire. Ensuite, regardons comment nous pouvons ajouter une sorte de message à notre page lorsqu'une nouvelle image est téléchargée. Parce que lorsque nous téléchargeons une nouvelle image, cela nous ramène à cette page et nous ne savons pas vraiment si quelque chose s'est passé. Je veux dire, je suppose qu'on pourrait voir que c'est une nouvelle image et sélectionnons l'image d'eux, Katlyn. Et il apparaît en haut pour qu'on puisse voir qu'il fonctionne là. Mais que se passe-t-il si vous avez beaucoup d'utilisateurs utilisant cela ? Il se peut que vous ne puissiez pas voir votre image en premier. Quelqu' un a peut-être soumis une milliseconde après, et cela va montrer que 1 premier et le vôtre pourraient se perdre quelque part. Nous voulons montrer un message. Dans la leçon suivante, nous allons parler des messages jangle. 19. Cadre de messages Django: Ok, parlons des messages Django. Donc, un message est fondamentalement un moyen d'envoyer un peu d'informations d'une page à l'autre, mais il ne le fait qu'une seule fois. Donc, si vous êtes familier avec l'idée de sessions, fondamentalement, il crée une session et une fois que cette session est accessible, il la supprime. Et donc nous voulons ajouter un petit message et une petite session. Et quand quelqu'un remplit ce formulaire et qu'il le ramène à cette page, il devrait dire, Hey, vous avez ajouté avec succès une image. Et c'est vraiment, vraiment facile à faire dans cela vient cuit avec Django trois automatiquement. Alors ouvrons notre éditeur ici, et ouvrons les vues Feed dot py. Et tout d'abord, allons de l'avant et importons. Nous sommes allés à due de go dot contrib, Je crois que les messages d'importation de trPB. Maintenant, si vous apprenez Django et que vous travaillez avec un projet Django existant, vous devez aller dans vos paramètres et vous assurer que les messages sont là. Donc, si nous ouvrons nos paramètres et tapons des messages, messages de contrat Django sont dans les applications installées R, c'est dans notre middleware, et il est également dans nos contextes de modèles processeurs, ce qui signifie qu'il peut être ajouté à chaque modèle unique. Peu importe ce que votre modèle est, il peut simplement être automatiquement ajouté automatiquement. Et donc tu dois t'assurer que tu en as là dedans. Donc pour l'instant, nous allons faire de Django.com voyage messages importants, faites défiler vers le bas jusqu'à notre formulaire. Et quand ce nouvel objet est créé, ajoutons un nouveau message. Et donc nous pouvons ajouter un nouveau message avec message point ajouter message. Il prend une requête par défaut. Faisons des messages par points de succès. Il y a différents types. Nous allons jeter un oeil dans un instant sur les quais, votre post a été couronné de succès. Et nous allons taper les docks de messages Django, le framework de messages. Il nous dit donc que nous avons besoin d'avoir tous ces éléments mis en place dans nos applications, processus de contact, contextes, processeurs, etc. , arrière-plans de stockage, niveaux de message. Ok, donc c'est là que j'ai eu des messages, des points de succès et ce n'est pas des messages. Ce sont des messages, c'est ce que j'ai importé. Messages, dot add message, messages, point to success. Et c'est de là que j'ai eu du succès. Donc, si cela a réussi, je vais donner un message de réussite et cela sera accessible dans notre modèle. S' il y avait une info, nous pourrions utiliser des messages info point, débogage, avertissement ou erreur. Nous avons donc ces cinq options. Je vais aller avec succès parce que je sais que ça va bien marcher avec Bootstrap. Parce que Bootstrap a généralement comme, je pense que c'est le succès du tiret B G ou le succès du tiret de point de texte, quelque chose comme ça. Donc, je sais que je pense que tout cela pourrait fonctionner sauf pour le débogage. Mais je veux cet excès de couleur un sur la route. Et oui, si on descend dans les balises de message, ça nous dit en fait. Le succès va nous donner le succès de la balise, et cela va être mis dans notre attribut HTML, CSS, notre attribut de classe. Et alors comment on fait ça ? Il est dit d'ajouter un message. Donc, nous importons notre message, nous l'avons déjà fait. Messages point ajouter un message. Il prend la requête comme premier paramètre. Un type de message est que info success, debug, error, et cetera, puis le message lui-même. Voici donc quelques exemples différents. Et quand nous voulons afficher des messages, nous pouvons simplement copier et coller ceci. Faisons ça. Pour le moment, ça va bien se passer. On pourra nettoyer ça un peu plus tard. Alors sauvegardons ça. Et nous allons dans les modèles basés sur HTML. C' est proche de la base de données. Et parce que cela est accessible dans chaque modèle, parce que c'est dans un processeur de contexte, ce qui signifie qu'il est accessible. Et chaque modèle que nous pouvons maintenant dire, s'il y a des messages, créer une liste, une liste non ordonnée, puis parcourir chaque message avec un LI et dit s'il y a des balises de message, ajoutez les balises ici, ce sera ce accès ou débogage. Ou quelles étaient les autres ? Réussite info, erreur d'avertissement et débogage. Et si, puis le message lui-même. Donc ça va les parcourir tous. Et nous pouvons avoir plusieurs messages qu'il est important de connaître et c'est pourquoi nous les traversons. Maintenant, allons de l'avant et essayons ça. Et je vais vous montrer que cela a en fait une forme d'erreur. Ça ne va pas marcher. Et je vais juste sélectionner n'importe quelle image. Et il dit, Oh, erreur de nom, demande de nom n'est pas définie. Voici la chose délicate, et vous allez vouloir prendre note de cela parce que d'aller de l'avant, ça va être un sauveur de vie. Donc, le premier paramètre dans le message publicitaire est la requête. Si nous revenons à notre code ici sous forme valide, nous n'avons pas de demande, nous avons moi-même et nous avons formé. Alors, comment obtenons-nous des demandes ? Nous sommes dans une vue de formulaire ici. Jetons un coup d'oeil à l'endroit où Request existe. Obtient quand vous obtenez le formulaire. Donc, lorsque vous affichez le formulaire, vous pouvez accéder à la demande, leur méthode HTTP d'expédition non autorisée options post et configuration. Et donc ce que nous voulons ici, c'est que nous voulons vraiment l'envoi. Donc, quand cette vue est distribuée, quand elle est en cours, quand elle est sur le point d'être rendue, que va-t-elle faire ? Et alors, allons de l'avant et copions simplement cette ligne. Et parce qu'il a des demandes ici, mais notre méthode dans la forme ici valide n'a pas de demandes, mais nous pouvons faire est sourd envoyé auto-requête args, quarks. Je l'ai littéralement copié d'ici. Def envoyé des args auto-requête, des quarks, des requête d' expédition super point et des quarks. Et donc littéralement à ce stade, nous disons, hey, Django, nous savons que vous avez une méthode d'expédition. Je veux juste vous faire savoir que je veux que vous utilisiez cette méthode de répartition. Honnêtement, c'est inutile, mais cela devient moins inutile lorsque nous faisons cette requête self.age est égal à cet objet de requête. Et parce que nous étions dans une classe, nous pouvons utiliser la requête self.age n'importe où ailleurs. Donc, maintenant, nous pouvons taper self.age request ici parce qu'il est accessible ici. L' expédition est exécutée avant que le formulaire valide ne le fasse. Donc ça va nous définir et ensuite nous pourrons accéder à la demande de self.age en bas de la route. Allons-y et essayons ça. Rafraîchissons simplement cette page. Générer un nouveau message. Et je vais prendre n'importe quelle image. Ça n'a pas vraiment d'importance. Et ça dit que votre poste a été couronné de succès. Et cela vient de notre point de base HTML. C' est dans une liste non ordonnée. Et faisons un clic droit et inspectons ceci. Nous avons une URL avec une classe de messages, nous avons une LI avec une classe de succès et dans elle a votre post a réussi. Nous avons une classe de messages UL. Il va parcourir chaque message. Nous avons un LI avec une balise de message, des balises de point de message. C' est un succès qui vient d'ici. Et puis le message lui-même est votre message a été couronné de succès. Ça dit le message là-dedans. Et c'est tout ce qu'il y a à ajouter des messages. Donc, vraiment tout ce que nous devons faire est de taper des messages, point ajouter un message. Il prend une requête, il doit prendre cet objet de requête exact. Il faut une sorte de type de message ou une balise. Donc nous disons des messages, des points, des accès parce que cela a été réussi. Et puis notre message lui-même dans notre modèle de base parce que nous voulons que cela apparaisse sur n'importe quelle page. Peu importe où nous voulons qu'il apparaisse sur n'importe quelle page. On va dire que s'il y a des messages, coucou, coucou, cool, faire passer ces messages et les afficher. Maintenant, regardez ceci quand je retourne ici et qu'il rafraîchit la page, ce message disparaît, c'est très temporaire. Il n'existe qu'une seule fois. 20. Ajouter Bootstrap 5: Ok, ajoutons un thème frontal. Et pour cela, nous allons utiliser Bootstrap 5. Donc on va aller sur getbootstrap.com. Et nous allons utiliser ce que je vais utiliser la version cinq bêta un. Peut-être qu'au moment où tu regardes ça étaient sur une autre version. C' est cool. Et ça n'a pas vraiment d'importance. Commençons juste. Nous avons besoin de ce CSS. Allons-y et copions ça. Cela provient d'un réseau de diffusion de contenu. Nous n'avons pas encore besoin du JavaScript. Je veux dire, si vous voulez, vous pouvez l'ajouter, mais nous allons simplement ajouter le CSS et nous voulons ajouter le CSS sur chaque page. Donc ce qu'on va faire, c'est simplement le coller ici. Et ça va l'ajouter à chaque page. Et c'est pourquoi nous avons ce point de base HTML. Il va l'ajouter à notre page détaillée, à notre page d'accueil et à notre nouvelle page de messages, et regarder ceci. Quand je me rafraîchirai, tu verras que ça a l'air un peu différent. Juste un peu différent. Hey, ça réinitialise les choses pour nous. Maintenant, allons de l'avant et ajouter une barre de navigation. Et nous allons, je pense que c'est dans les composants. On va trouver la barre de navigation. Trouvons un que nous aimons et copions ça. Nous pouvons toujours modifier le HTML plus tard. Lequel voulons-nous ? Il y en a un simple ? Et c'est assez simple. C' est une bonne chose. Donc nous avons comme un titre comme le partage d'image, notre page d'accueil, les adipocytes. Et c'est en fait tout ce dont nous avons besoin. Allons-y et copions ça. Et parce que nous voulons cela sur chaque page, nous allons jeter ce point de base interne HTML. Maintenant, je vais me débarrasser de quelques choses ici tout de suite. Navbar, je ne veux pas que ça s'appelle Navbar. Je veux que cela s'appelle le partage d'image parce que c'est ce que nous avons créé et qui va juste aller sur la page d'accueil. Donc, ça va tout droit à la barre oblique. Il n'a pas besoin d'une URL spéciale. Parce que la barre oblique est toujours la page d'accueil d'un site Web. On peut rentrer à la maison. Et encore une fois, c'est juste parce que la façon dont nous avons la configuration est que nous pourrions utiliser slash ou nous pouvons utiliser URL, index de flux. Et encore une fois, d'où cela vient est si je ferme les vues dot py, allez aux URL dot py, index de flux. Ça va nous donner une barre oblique, comme ici. Il se trouve que c'est préfixé capable. Si nous voulions que la page d'accueil soit quelque chose comme Slash home, cela changera automatiquement pour nous. Caractéristiques. Nous ne voulons pas de prix et nous ne voulons pas de désactivation. Et au lieu de fonctionnalités, appelons ceci ajouter une nouvelle image. Et nous devons lier ceci à notre Feed post. Et d'où ça vient, c'est le poste d'alimentation. Et cela va aller à cette URL ici. Allons de l'avant et voyons à quoi ça ressemble. Peut-être que ça a l'air terrible. Je ne suis pas vraiment sûr. J' ai des regards. Ok, je peux vivre avec ça. Je suppose que ça fait de nous un 100% en fait. C' est, ce n'est pas mal. Je peux vivre avec ça. Allons-y et envoyez-lui un peu de notre contenu ici. Et nous allons dire HTML point de base interne. Et nous allons peut-être nettoyer ça d'abord. Je suis un collant pour un bon code propre. D' accord, donc je nettoie ça. Et nous voulons centrer tout notre contenu. Jetons donc un coup d'oeil aux conteneurs dans Bootstrap cinq conteneurs de mise en page de contenu personnalisés. Et c'est exactement ce que nous voulons. Nous voulons contenir ou peut-être nous voulons un conteneur de taille régulière. Et ainsi de suite. Un très grand écran va avoir 1320 pixels de large. Sur un, c'est un extra, extra large. Je n'avais pas réalisé qu'ils avaient fait ça. Maintenant, il y a un extra grand pour ça à 1140. Grand est neuf soixante sept, vingt cinq quarante. Tout ce qui est en dessous est un 100%. Utilisons un commentateur. Et voyons ce que ça fait. Cool. Donc ça a centré ça pour nous. C' est bien. Débarrassons-nous de ce lien parce que nous l'avons déjà là-dedans. Et d'où est-ce que ça vient ? Ça vient de chez nous, je crois. Oui, juste là. Allons-y et débarrassons-nous de ça. Magnifique. Et ce que nous pouvons faire, c'est que ce nav prend beaucoup de place. Donc, ce que nous pouvons dire ici est inclure, comprend barre oblique, navbar index.html. Et allons de l'avant et copions tout cela, pas copier mais couper. On va aller couper. Et cela va regarder notre dossier templates pour un sous-dossier appelé include, puis un fichier appelé navbar dot HTML. Faisons ça. Nouveau fichier comprend barre oblique, nope, comprend l'orthographe droite, barre oblique, nav point de barre HTML coller. Et maintenant sont basés sur HTML. l'air sympa et propre à nouveau, nous allons juste nous assurer que ça marche. C' est en fait travailler la beauté, la beauté, la beauté. Qu' est-ce qu'on veut faire d'autre ici ? Faisons ces cartes ou quelque chose. Alors, qu'est-ce qu'on veut ici ? Je pense que cela s'appelle un composant dans Bootstrap. C' est une carte. Oui, c'est exactement ce que nous voulions. Nous voulons une image avec du texte, puis un lien pour voir l'image entière. Allons-y et copions ça. Et on va lancer cette boucle intérieure sur notre page d'accueil. Notre page d'accueil. Allons-y et débarrassons-nous de ça. Débarrassons-nous de ça. Et faisons juste de l'espace pour travailler. Et nous voulons juste remplacer, vous savez, comme l'image SRC par cette image ici, ou ce texte avec du texte postdoc. Allons-y et commençons à faire une opération. Allons de l'avant et réduisons cela et inscrivons-le dans notre paragraphe, et ce sera notre texte. On n'a pas besoin d'un titre de carte. Si vous le souhaitez, vous pouvez étendre votre modèle pour avoir un titre. Ainsi, chaque image pourrait avoir un titre. Va quelque part. Où est-ce que ça va aller ? Et ça va être ce lien ici. Et au lieu de dire, aller quelque part, Faisons le texte dire voir l'image complète. Et puis nous devons déplacer ces vignettes vers le bas et déplacer ça. Et déplacez ça vers le haut. Et ce dont nous avons besoin, c'est cette URL d'image. Donc, nous saisissons cette URL d'image. Et cet alt pourrait être ce que j'enverrai un texto que tu voudras. Où ça va, on va jeter l'image, la largeur et la hauteur. Et on va donner à ça une classe d'image de carte haut, qui est déjà venu avec. Et donc je suppose que là où je le donne, on nous l'a déjà donné. Et allons de l'avant et sauvegardons ça. Et débarrassons-nous de ces vieux trucs ici. Nettoyez cela, rendez-le agréable que les gens avec qui vous travaillez et ne vous détestez pas pour avoir écrit du code très bâclé. D' accord ? Pas mal, pas mal. Ils sont tous sur leur propre ligne cependant. Ce n'est pas tout à fait ce qu'on cherche. Nous voulons que tout cela soit une colonne. Alors allons de l'avant et créons une nouvelle ligne. Et ce n'est que des connaissances de l'ancien Bootstrap. Nous créons une ligne, déplaçons cette div vers le bas. Et puis pour chaque poste, nous voulons créer une nouvelle colonne. Donc on pourrait faire la colonne SM. Quand c'est petit. Prenons six points col md pour frapper Tab m. Il fait automatiquement le reste pour moi. Hé, pas mal, pas mal. Ça pourrait être mieux, mais ce n'est pas mal. Et en fait, ce que je devrais faire est de regarder la mise en page ici et le planning du doc regarde la grille. Donc, nous avons coalesce m. Nous voulons juste nous assurer que cela fonctionne de la même façon dans Bootstrap five car il n'aime pas Bootstrap pour Bootstrap trois, et cetera, et cetera. Parce que j'ai peut-être écrit le mauvais nom de classe. On y va. Il y a un exemple de colonne, grand T2. C' est juste la preuve que ce que je cherchais était la bonne chose. Donc sur un médium, faisons en fait trois. Rendons ça un peu plus petit. On y va. Et il faut un peu d'espacement au-dessus et au-dessous de chaque carte. Et que se passe-t-il si je me débarrasse de ça ? D' accord ? Et ça marche bien ? Sous chaque carte, faisons marge, quatre en bas. Mais faire marge, haut et bas quatre. On y va. Et regarde ça. Nous avons une belle petite galerie d'images. Allons de l'avant et voyons cette image. Ok, donc, tu sais, à la base des trucs ont été appliqués. C' était sympa. Allons-y et nettoyons un peu ça. Alors ouvrons notre point HTML détaillé. Et nous n'avons pas besoin d'un lien de retour en arrière parce que c'est maintenant dans la barre de navigation, c'est à la maison ou ajouter une nouvelle image ou le logo. S' il y avait un logo, on n'en a plus besoin. Le texte et l'image sont tout ce dont nous avons besoin. Et allons-y et rendons cela réactif. Et je ne sais pas ce que c'est vraiment dans Bootstrap. Alors faisons une recherche d'images réactives. Et nous voulons une classe fluide d'image. Fluide img. D' accord ? Ok, pas mal. Ça pourrait être mieux, je crois. Voyons ce qu'on peut faire d'autre. On a une image, une vignette, Cool. Arrondi. C'est ce qu'on veut ? Oui. Oui. Oui, faisons-le. Faisons arrondir l'image. J'étais vraiment excité à propos de cette ronde. Et ça va juste nous donner de beaux coins arrondis. Allons-y et peut-être jeter ça dans une sorte de rho aussi. Rho avec un appel SM, disons dix, si petit et plus va être une largeur de colonne de dix. Déplacez ça vers le haut. Et je pense que c'est du charbon décalé pas SM One, je suppose. Est-ce qu'il est entré dedans. Et allons de l'avant et ajouter un rembourrage au rembourrage supérieur, top cinq. Ça fait juste tomber pour nous. Et nous allons peut-être ajouter le rembourrage en bas cinq. Donc, à gauche et à droite, nous pourrions faire rembourrage X ou sur le haut et le bas, nous pourrions faire le rembourrage y p, y cinq. Et on dirait qu'il n'a rien fait d'autre qu'un rembourrage en bas ici. Last but not least, nous avons notre page de messages. Cette page a l'air terrible. Allons-y et réparons ça. Ça pourrait aussi bien les fermer. Faisons New Post et ce bouton, changeons ce bouton. Classe, btn, btn-succès, je suppose. Cool. Ça a marché pour moi. Qu' avons-nous pour les formulaires ? Ok, donc ça va droit dedans. Et nous n'avons peut-être pas tout ce contrôle. Nous ne le faisons pas, parce que beaucoup de choses ont géré pour nous à l'intérieur de Django. Nous n'avons pas accès à l'étiquette, pas facile d'accès. En fait, nous ne pouvons pas accéder à l'étiquette et faire une boucle à travers tous les champs de formulaire et créer un formulaire par nous-mêmes. C' est un peu plus avancé. Donc on ne va pas couvrir ça dans Django 101. Mais ce que nous pouvons faire, c'est si nous voulions écrire du CSS, ce que nous n'allons pas faire, mais si nous voulions écrire du CSS, vous pourriez tout dire à l'intérieur de votre formulaire. Avec un, disons, un type de texte d'entrée pourrait alors être ce type de champ. Et vous pouvez l'étendre en utilisant SAS et des choses comme ça. On ne va pas s'en mêler trop. Faisons juste que cette page ait l'air un peu plus bien rangée. Alors ajoutons une classe ici. La classe va être kohl S M pour offset. Des maths rapides ici. Et 12 moins quatre, c'est huit divisé par deux, c'est quatre. Donc, cela va le centrer parce qu'il y a 12 colonnes dans Bootstrap. Et ajoutons un titre à un H 2 et ici, téléchargez une image. Et ajoutons un peu de rembourrage là aussi. Rembourrage top cinq, marge supérieure et inférieure cinq. Et à ce stade, je suis vraiment juste expérimenter pour rendre ce look à moitié décent. Et ce que ce bouton pour être plus grand pour btn tableau de bord LG. On y va. Disons maintenant que nous voulons réorganiser le texte et l'image. Donc, quelqu'un choisit d'abord l'image, puis évalue le texte. Allons à nos forums dot pi. Et réorganisons simplement ceci. Je bouge ça de haut en bas. Donc, le premier sera l'image et le second sera taxé de façon sûre pour Django de recharger. Rafraîchir. Et le voilà, l'image d'abord, le texte plus tard. Et disons que nous ne voulions pas appeler ce texte parce que nous voyons qu'il s'appelle texte ici et image, leur image est bonne. Je vais aller de l'avant et changer cette étiquette. L' étiquette va être une description. Ce sera toujours du texte dans le code Python, dans le code Django. Mais l'étiquette va dire description à la place. Donc, au lieu de texte juste ici, ça va dire charge commune pour moi. Description, cloué. Juste comme ça. Enfin, lorsque nous téléchargeons une image, nous avons des messages, nous devons afficher un message. Et donc cela est souvent manqué parce qu'il dit que si les messages font alors quelque chose, ce que nous allons faire ici est en fait que nous allons concevoir cela dehors de l'instruction if et ensuite envelopper le code à l'intérieur de celui-ci. Revenons donc à bootstrap et faisons une couleur d'arrière-plan. Couleurs d'arrière-plan. Ooh, faisons un gradient. J' aime ça. Et pour que nous puissions avoir du succès de texte. Qui regarderait ça ? On a plein d'oméga ici. Bg succès parce que nous utilisons le succès pour les informations de message aussi, îlots. Où est le gradient ? Oui, c'est ce que nous voulons, le succès BG et le gradient BG. Alors allons de l'avant et créons un nouveau bar ici. Et jetons ça là-dedans. Assurez-vous que le texte est centré. Et le texte sera blanc pour que nous puissions le lire. Texte factice ici. Voyons à quoi ça ressemble. Oh, regarde ça. C'est au-dessus de f bar. C' est deux alertes. Déplaçons cette barre de navigation vers le haut. Ok, cool. Salut, ajoutons un peu de rembourrage. Rembourrage, haut et bas va être le rembourrage de l'axe Y. Faisons quatre. Ok, j'aime ça, je peux vivre avec ça. Maintenant, nous devons replacer cela dans la déclaration if. Et nous pouvons faire les balises de message. Ça va être là. Parce que nous savions qu'à l'origine, c'était vraiment un succès. On va juste le jeter là-dedans. Et puis nous allons envelopper ça dans une déclaration if aussi. Comme ça. Et tout ce que je fais, c'est un peu de chirurgie HTML ici. Et c'est une simple déclaration if. Ensuite, nous pouvons dire autrement par défaut, toujours revenir à, au lieu de peut-être que nous ne lui avons pas donné un message. Disons qu'il doit toujours revenir par défaut au succès. Donc, il est dit ici, s'il y a des balises de message, imprimez ces balises de message. Sinon, utilisez le succès. Et si nous devons alors déplacer ce message. Et encore une fois, habiller faire une opération ici, coller. Et enfin pour et puis il vers le bas. Et on y va. Donc maintenant, cela dit, s'il y a des messages pour le message et les messages, allons de l'avant et stylisons un div, mais le message à l'intérieur de celui-ci. Et ajoutons une nouvelle image. Et nous allons nous assurer que cela fonctionne réellement. Test d'un message Django. Maintenant, votre message a réussi et en raison de faire, j'ai besoin de déplacer cette sauvegarde et qui va ensuite revenir vers le bas. Voyons un autre exemple. Juste, juste pour vraiment conduire cette maison, juste pour s'assurer que le message apparaît dans leur dit que votre post a réussi. Maintenant, nous avons encore une chose à considérer. Et si vous avez une toute nouvelle application ici et que personne ne l'utilise ? n'y a pas d'images. Allons de l'avant et supprimons toutes ces images et nous allons dans les messages. Prends-les tous. Supprimez, allez. Oui, supprimez-les. Rien ne s'affiche. Ça n'a pas l'air le plus beau, n'est-ce pas ? Ce que nous pouvons faire, c'est sur notre page d'accueil, parce que c'est là que nous parcourons tous nos messages dans notre boucle for, nous pouvons dire, si c'est vide, juste des trucs ici. Et ça dit écrire des trucs ici. Parce qu'il n'y a rien là-dedans. Allons de l'avant et ajoutons un peu de style ici aussi. Donc, nous sommes déjà dans une rangée, nous avons juste besoin d'ajouter une colonne. Donc charbon SM six points décalé trois. Faisons ce centre de texte et lui donner un remplissage haut et bas de cinq, marge haut et bas cinq ainsi. Beaucoup d'espacement. H2, paragraphe de bienvenue et paragraphe. Ajoutez votre première image et un bouton, un HREF. On va remplir ça dans une seconde. La classe est égale à btn, btn, LG, BTN succès. Parce que nous allons avec le thème vert ici. Télécharger l'image. Et on a juste besoin de ça pour aller quelque part. Nous savons comment faire cette URL, chaîne de flux, poster, télécharger une image qui est télécharger notre première image. Et allons-y aussi, parce qu'il est super mignon. C' est la cuisine. Il y a une belle image. Il y a ravin, Nous avons fait notre application juste comme ça. 21. Votre projet: Ok, bienvenue dans votre projet. Nous venons de créer une application Django entière à partir de zéro dans ce cours dans Django 101, ce que je voudrais que vous fassiez si vous n'avez pas suivi le long, je veux que vous essayez de recréer cette application à partir de zéro. Ça va prendre un peu de recherches. Vous devrez peut-être accéder aux documents Django, vous devrez peut-être accéder à ce beau site Web. En fait, ce n'est pas beau, mais c'est très, très instructif. Est CC-BY v point CIO UK. Très, très utile. Vous pourriez avoir à accéder aux docs bootstrap, peut-être avoir à faire un peu de recherche. Ce ne sera pas super facile, mais ça va être une grande expérience. Ou si vous voulez, vous n'avez pas nécessairement à le faire à partir de zéro. Vous pouvez prendre tout mon code source. Vous pouvez toujours télécharger le code source aussi bien à partir de GitHub.com barre oblique Caleb Talia slash Django tiret, un à un. Assurez-vous de suivre le Lisez-moi. Je vais écrire un me lire là-dedans et ensuite vous pouvez juste suivre le long. Vous pouvez le cloner sur votre ordinateur et le configurer vous-même, puis simplement le modifier. Je veux que vous le fassiez beau, ayez l'air et que vous agissiez incroyable. Donc, nous avons fait tout le travail backend. Vous pouvez maintenant vous amuser avec tout le travail front-end. Dans le travail front-end est vraiment, vraiment amusant. Vous arrivez à le rendre vraiment interactif, coloré et beau. Vous pouvez le faire ressembler et faire des choses différentes. Mais essentiellement, vous devriez avoir un projet comme celui-ci sur votre ordinateur qui prend une image, télécharge et affiche une miniature, puis nous avons une vue détaillée dans Django. N' hésitez pas à le modifier au contenu de votre cœur. Et puisque vous n'êtes pas qualifié part, vous avez une section de projet dédiée. C' est un petit bouton vert qui dit mon projet ou quelque chose comme ça. Vous pouvez cliquer sur ce bouton et vous pouvez ajouter des captures d'écran de votre code et de son fonctionnement. Ou vous pouvez ajouter une vidéo si vous le souhaitez, vous pouvez mettre une vidéo sur YouTube et me montrer que votre projet fonctionne et je peux vous donner des tonnes de commentaires si vous le souhaitez. 22. Résumé: D' accord, tu l'as fait. Tu as traversé tout Django 101. Ça fait quelques heures. Nous avons fait un, une application de partage d'images cool à partir de zéro. Au fait, si vous ne le saviez pas, c'est essentiellement ce qu'était Instagram. Instagram a été réalisé avec Django. Le nôtre a l'air un peu différent. Le vôtre pourrait ressembler exactement à Instagram si vous le vouliez. Mais encore une fois, je voulais juste vous remercier d'avoir suivi ce cours. Je suis très fier de toi d'avoir fait tout ce chemin. N' oubliez pas, vous pouvez toujours me suivre sur Twitter à Caleb Italian. Ou si vous voulez des conseils et astuces de revêtement, vous pouvez suivre le point de codage pour point tout le monde sur Instagram. Et si jamais vous êtes coincé ou avez besoin d' aide pour tout ce qui concerne le développement web, venez rejoindre, apprendre à coder sur Facebook. C' est un groupe totalement libre. Tout ce dont vous avez besoin, c'est un compte Facebook. Merci encore d'avoir suivi ce cours et de passer ce temps avec moi et j'espère que je vous verrai à l'avenir.