Développement Web Python professionnel avec Flask | Jorge Escobar | Skillshare

Vitesse de lecture


1.0x


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

Développement Web Python professionnel avec Flask

teacher avatar Jorge Escobar, Technologist, entrepreneur and open source fanatic

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.

      Introduction

      2:14

    • 2.

      Qu'est-ce que le développement backend ?

      3:29

    • 3.

      Pourquoi Python ?

      4:03

    • 4.

      L'approche FromZero

      3:10

    • 5.

      Introduction à Cloud9

      2:35

    • 6.

      IDE

      5:53

    • 7.

      Commandes shell

      10:27

    • 8.

      Shell Python

      2:13

    • 9.

      Fonctions arithmétiques

      2:32

    • 10.

      Variables

      4:25

    • 11.

      Vérifier les types

      1:56

    • 12.

      Format variable

      3:34

    • 13.

      Cordes

      4:16

    • 14.

      Listes, tuples et dictionnaires

      6:34

    • 15.

      Date et heure

      4:29

    • 16.

      Flux de régulation des états

      4:16

    • 17.

      Boucles

      3:12

    • 18.

      Fonctions

      3:08

    • 19.

      Classes et objets

      14:35

    • 20.

      Modules

      11:53

    • 21.

      Paramètres

      13:41

    • 22.

      Nouvel espace de travail Virtualenv

      8:53

    • 23.

      Pip Install Flask

      3:05

    • 24.

      Chemin Python C9

      6:24

    • 25.

      Application minimale

      13:11

    • 26.

      Commencer par Git

      3:52

    • 27.

      Débogage

      11:42

    • 28.

      Routage avec Vars

      10:28

    • 29.

      Url_for

      4:50

    • 30.

      Méthode d'obtention

      8:49

    • 31.

      Méthode de publication

      7:00

    • 32.

      Introduction aux modèles

      9:37

    • 33.

      Modèle de login

      8:07

    • 34.

      Fonction d'ouverture de session

      8:27

    • 35.

      Redirection après publication

      6:53

    • 36.

      Messages flash

      8:49

    • 37.

      Meilleur HTML

      3:35

    • 38.

      Super bloc

      4:50

    • 39.

      Héritage de modèle

      12:04

    • 40.

      Cookies

      12:20

    • 41.

      Dossier statique

      4:18

    • 42.

      Sessions

      6:22

    • 43.

      Enregistreurs

      7:13

    • 44.

      Table d'utilisateurs

      15:03

    • 45.

      Introduction Mysql

      12:32

    • 46.

      Exigences

      1:07

    • 47.

      Commençons par notre blog

      14:20

    • 48.

      La structure de base

      9:15

    • 49.

      Le modèle d'auteur

      8:08

    • 50.

      Mise en place de l'ORM

      12:29

    • 51.

      Interagir avec l'ORM

      12:53

    • 52.

      Modèle de base et Bootstrap

      8:23

    • 53.

      Introduction à WTForms

      15:45

    • 54.

      Erreurs de formulaire

      11:02

    • 55.

      Macros

      8:05

    • 56.

      Modèle et forme de blog

      8:16

    • 57.

      Modèles d'administration et de mise en place de blog

      14:39

    • 58.

      Base de données de création de blog

      11:30

    • 59.

      Login de l'auteur

      17:03

    • 60.

      Login requis Décorateur

      14:47

    • 61.

      Introduction aux migrations

      13:46

    • 62.

      Mot-clé plus sécurisé

      17:22

    • 63.

      Vérifier is_author

      10:04

    • 64.

      Le modèle de publication et de catégorie

      13:35

    • 65.

      Publication de publication sur Migration et tests

      12:01

    • 66.

      Introduction à Markdown

      9:56

    • 67.

      Formulaire de publication

      11:46

    • 68.

      Sauvegarder le poste dans la base de données

      9:33

    • 69.

      La vue d'article

      14:44

    • 70.

      Liste des articles

      17:29

    • 71.

      Pied de page de liens de fermeture

      3:59

    • 72.

      Pagination

      12:13

    • 73.

      Installation des téléchargements de bouteilles

      13:39

    • 74.

      Ajouter un message de blog d'images

      9:28

    • 75.

      Voir l'article sur l'index des images

      6:50

    • 76.

      Supprimer un article

      13:57

    • 77.

      Retoucher des articles

      17:18

    • 78.

      Introduction aux tests unitaires

      15:39

    • 79.

      Créer un test de blog

      15:45

    • 80.

      Tests utilisateurs

      8:27

    • 81.

      Projet final 

      2:53

  • --
  • 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.

3 906

apprenants

4

projets

À propos de ce cours

Découvrir de A à Z comment créer des applications Web backend à l'aide de Python Flask, Cloud9, MySQL et Docker

Ce cours vous apprendra, sans aucune expérience préalable en matière de codage, comment développer des applications Web back-end comme le font les codeurs professionnels dans les meilleures startups Internet.  Comment le sais-je ? Parce que je dirige des équipes technologiques dans des grandes entreprises et des startups à New York depuis 15 ans.

J'ai vu beaucoup de cours et de tutoriels gratuits et je peux vous en dire 90 % des cours qui enseignent de mauvaises habitudes tout en vous promettant de vous transformer en véritable développeur web.  Mais laissez-moi vous dire une réalité : il n'y a pas de développeur web de nos jours ! Vous êtes soit un développeur d'applications Web back-end, un développeur d'applications front-end ou un développeur Web (et rare) full stack qui comprend les deux autres. Cependant, il y a tellement de technologies à maîtriser dans les domaines backend et frontal que les full-stacks (ou « développeurs Web » ) sont rares dans les environnements professionnels - Vous êtes soit un développeur Web backend soit un développeur Web frontal.

Ce cours ne promet pas de vous transformer en développeur back-end professionnel après l'avoir terminé - il faut beaucoup plus que les 11 heures de ce cours (et probablement des centaines d'heures d'auto-pratique) pour le faire, mais il vous donnera une bonne base par où commencer et poursuivre votre formation, en sachant le bon chemin pour devenir un vrai développeur professionnel d'applications web back-end utilisant Python. Mon objectif est de créer un deuxième cours qui introduirait des notions back avancées et commencerait les cours de base et avancés peu de temps après.

Le cours suit un processus étape par étape de développement d'applications Web, vous enseignez les bases de Python pour le développement Web, vous présentez Flask et utilisez Cloud9 comme environnement de développement. Il explore ensuite les bases de données SQL, utilise MySQL et vous montre enfin comment développer une application de blog en utilisant tous ces apprentissages.

Mieux encore, vous n'avez rien à installer, car nous allons utiliser un environnement de développement Web en ligne révolutionnaire qui vous propose votre propre serveur Web Linux avec des capacités de base de données ! Tout ce dont vous avez besoin est d'un navigateur et d'Internet et c'est entièrement gratuit pour vous.

Le cours est divisé en 8 sections et 2 sections bonus :

  • Introduction
  • Mettre en place notre environnement
  • Bases de Python
  • Installation de la bouteille
  • Introduction à la bouteille
  • Introduction aux bases de données
  • Notre première application Flask : blog personnel optimisé par MySQL
  • Projet final 
  • Bonus : exécuter notre application de fiole avec Docker
  • Bonus : déployer notre application sur un serveur Cloud

Le cours comprend plus de 12 heures de tutoriels vidéo ainsi que le code source à la fin de chacune des leçons d'application Flask, afin que vous puissiez voir exactement à quoi ressemble l'ensemble du projet à chaque étape.

Le cours peut prendre de 10 jours à un mois à compléter en fonction de la quantité de matériel que l'étudiant complète quotidiennement.

Nous mettons à jour le cours en permanence et nous le présentons grâce aux retours de nos étudiants.

Nous aurons également des heures de bureau où vous pourrez poser à l'instructeur toutes les questions que vous pourriez avoir sur le cours ou sur le développement d'applications Web Python Backend en général.

Si vous êtes intéressé à apprendre à coder à partir de zéro et à l'insu préalable, mais si vous le faites en utilisant les meilleures pratiques de l'industrie pour devenir un développeur web professionnel, ce cours est pour vous.

Alors arrêtez de regarder autour de vous et commencez le bon chemin pour devenir un développeur web professionnel Python avec ce cours !

Quelles sont les exigences ?

  • Un ordinateur avec un accès à Internet et un accès administratif pour installer des paquets
  • Une compréhension de base de la façon d'utiliser Internet et les éditeurs de texte

Que vais-je tirer de ce cours ?

  • Vous apprendrez les bases du langage de programmation Python
  • Vous apprendrez ce que sont les bases de données et comment les utiliser efficacement
  • Vous apprendrez comment interagir avec la base de données à l'aide de l'interface de ligne de commande de ligne de commande MySQL
  • Vous apprendrez comment développer efficacement une application Flask
  • Vous apprendrez les motifs logiciels comme MVC et les décorateurs
  • Vous apprendrez comment traiter les données des formulaires HTML en une application Web
  • Vous apprendrez à exécuter des applications Flask avec Docker
  • Vous apprendrez comment déployer une application sur un serveur cloud

Quel est le public cible ?

  • Programmeurs
  • Développeurs de logiciels
  • Chefs de projet
  • Étudiants en informatique
  • Entrepreneurs
  • Adeptes du développement logiciel

Rencontrez votre enseignant·e

Teacher Profile Image

Jorge Escobar

Technologist, entrepreneur and open source fanatic

Enseignant·e

From Zero is an educational project created by Jorge Escobar, a technologist, entrepreneur and open source fanatic with more than 15 years of experience in the development of web applications in New York City.

Jorge has worked in well established companies like Yahoo!, Univision and MongoDB and has also been the technical founding member of various successful tech startups that have received multiple rounds of venture capital.

The biggest problem Jorge has experienced during his career is finding well rounded developers and he interviewed hundreds of them for positions in the teams he was leading. A constant pattern (no matter if candidates came from a good university or had a few years of experience) was the lack of practical, real world knowledge.

That's why Jorge... Voir le profil complet

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. Introduction: Salut. Bienvenue au professionnel de retour en développement Web avec Pichon Flask, où vous apprenez comment construire des applications en utilisant le langage Python incroyable. m'appelle Jorge Escobar, et j'ai eu la chance de travailler dans les plus grandes entreprises technologiques depuis 15 ans, et maintenant nous allons vous montrer à partir de zéro comment devenir un développeur Web professionnel. Vous pouvez trouver beaucoup de cours en ligne qui vous promettent comment devenir un développeur Web. La vérité est que dans l'industrie de la technologie professionnelle, il n'y a pas de postes de développeur Web. Vous êtes soit un back-end et développeur ou un développeur frontal sur les compétences requises pour chacun sont complètement. Ce cours vous montrera étape par étape, les meilleures pratiques pour commencer votre carrière pour devenir inemployable dans les applications Web. Développeur je vais vous montrer étape par étape et à travers la puissance de la vidéo sur l'introduction toe le langage Python. Comment installer Flask, un premier regard sur les bases de données de suite, puis nous allons construire une application de blogs en utilisant les meilleures pratiques de développement. À la fin du cours, vous aurez le défi d'élargir l'application en développant un système de commentaires pour Blawg. Vous serez également en mesure d'obtenir la base complète de la cour à chaque étape du chemin afin que vous puissiez développer vos connaissances en regardant comment le système se développe peu à peu. Le cours est le signe pour les personnes ayant peu ou pas de connaissances de codage antérieures, mais qui sont désireuses d'apprendre à construire des applications Web. Tout ce dont vous avez besoin est un ordinateur et la volonté de mettre toute votre attention orteil les Métis. Écoute. Il y a d'autres cours qui suivent la voie facile et enseignent à l'aide d'outils graphiques. Je peux vous dire, ces étudiants ne survivraient pas à une vraie interview dans un professionnel par mon cours maintenant, et je vais commencer votre chemin pour devenir une arme de backend python professionnelle. 2. Qu'est-: Ok, jetons un coup d'oeil à ce qui est avant et arrière dans le développement. , Pour ça,nous allons vérifier à quoi ressemble un processus Internet à un niveau très élevé. Um, faisons un diagramme et comprenons à quoi ressemblent les étapes lorsque vous demandez une page. Donc, la première chose que vous devez savoir est qu'il y a toujours un navigateur et un client. Le navigateur est fondamentalement le programme que vous avez utilisé pour accéder au Web, le Firefox développé Internet Explorer, tout ce que vous utilisez, et puis le serveur est fondamentalement un service qui est là-bas dans Internet. Fondamentalement, , c'est un groupe de serveurs ou d'ordinateurs qui sont, hum, situés dans un spécifique que vous êtes dehors. Donc, quand vous tapez de l'euro, ce qui se passe est , um votre fournisseur Internet vous connectera, vous dirigera vers le serveur approprié, puis ce serveur aura un processus qui est un processus de boucle c'est toujours en train de vérifier. Y a-t-il des demandes y a-t-il des demandes ? Et quand il a reçu votre demande pour une page spécifique, il ah rend fondamentalement ou vient avec le code pour construire la page que vous demandez , et pour cela il peut accéder à une base de données où tout ce contenu est situé. Une fois que Carlton est localisé, il emballe tout cela dans une page Web sur B, le renvoie au navigateur où le navigateur le rendra comme, ah, si approprié. Alors, qu'est-ce que le développement back-end en face de lui ? Le développement ? Hum, donc l'idée est que de retour en développement, ce sont les processus ou le logiciel, euh, le code et les, um les différentes routines et algorithmes qui vivent dans le serveur, euh, et interagir avec la avec la base de données , euh, contre le code du navigateur, qui est le front. Et le développement jusqu'à présent implique de travailler avec HTML, CSS et Js, qui sont ah, les langages de base, vous savez, pour les systèmes de base qui permettent au navigateur de rendre le contenu du est en train de donner en retour. Donc, vous pouvez le considérer comme avant et être, um, tout ce qui a à voir avec ce qui décline voit et puis de retour est toutes les données derrière. Ah, quoi ressemble cette page. Donc, dans ce cours, nous allons nous concentrer sur cette pièce, nous allons parler de la façon de coder um, et Ah, et comment développer des applications qui sont intrinsèquement à l'écoute des requêtes d'un navigateur et retourner ah code de contenu, si vous voulez, qui permettra au navigateur de rendre ces données que l'information qui est stockée dans le serveur Indus. 3. Pourquoi Python ?: Ok, Donc une question que vous pouvez poser est y Python, où nous apprenons Typhon ou retour dans le développement et pas autre chose. Et il y a beaucoup d'autres langues qui sont appropriés et ont de bonnes Ah, vous savez, bonnes critiques ou de leur très bien parlé sur Internet. Et je pense que c'est une décision personnelle. Mon expérience personnelle a été que Python a été un très, hum, facile à apprendre, comme la courbe d'apprentissage n'est pas trop raide. Hum, mais c'est aussi un langage que c'est une joie de lire, hum, beaucoup de codage quand on est quand on a un revêtement. Carrières consiste à lire le code des autres, et Tyson le rend très facile à comprendre. Quoi, qu'est-ce que la pensée est loin d'un autre quart ? Juste en le lisant sans même regarder les commentaires, euh, euh, ou la documentation. Je pense que, euh, tu sais, facilité Python c'est Ah, c'est rapide. Hum, encore une fois, il y a des gens qui disent que les autres choses sont plus rapides, mais je pense qu'une fois que vous entrez dans euh le, , Web servir et servir fois et tout ce que je pense qu'il ya beaucoup d'autres viables est de considérer um, mis à part à quelle vitesse les langues. Mais avoir dit que Python est Reese est assez rapide. Um, j'aime ça. C' est, ah, orienté objet depuis le début. Je pense qu'on va parler un peu. Pourquoi c'est important. Mais, euh, est un premier orteil d'introduction. Qu' est-ce que ce concept a à voir avec la mise en page de votre code d'une manière qui est réutilisable et que vous pouvez tirer parti du travail des autres sans vous avoir à réinventer la roue. C' est un peu comme ce que l'objet orienté pour moi est, ah, quel est le bénéfice. C' est un peu comme ce que l'objet orienté pour moi est, ah, C' est aussi, euh , vous savez, construire sur ce python est très largement a beaucoup , vous savez, construire sur ce python est très largement a beaucoupdebibliothèques tierces qui peuvent faire ce que je veux dire, il y a, genre, bibliothèques tierces qui peuvent faire ce que je veux dire, il y a, genre, Des milliers de choses que vous pouvez faire avec ça, vous savez, comme les maths, euh , les calculs de l'accrochage aux bases aériennes les plus populaires de, euh, vous savez, interagir avec des plateformes sociales comme Facebook, Twitter et ah, vous savez, Ah, beaucoup de projets très, très excitants qui, hum qui sont à travers qui croient à travers des domaines différents, des choses différentes, comme du jeu à, comme, scientifique aux affaires. Donc, il a beaucoup de bibliothèques, et la communauté autour de Python est très, euh, très forte. Ils sont très passionnés par téléphone, et vous entendrez parler d'un peu de rivalités, surtout avec les gens que ça, comme Ruby sur rails, ce qui est un peu comme un ah, gros, um, c'est une contrepartie ou une compétition pour Python. Alors vous savez, vous devez savoir que la communauté de jazz apparaît aussi. Mais c'est une compétition amicale. Je pense que, euh, vous savez, chaque langue a ses propres forces et ses faiblesses. Mais j'aime juste Python. Je me sentais beaucoup à la maison. Euh, je viens de, ah codant en péril et ensuite faire pipi. C' est B et, ah, maintenant python. J' aime bien regarder en arrière et il sera très difficile pour moi de retourner dans une autre langue 4. L'approche FromZero: Salut. Je voulais vous parler un peu de pourquoi est de zéro différent ou meilleur que d'autres cours ? Eh bien, tout d' abord, j'ai de l'expérience avec des projets complexes. J' ai travaillé à la fois avec de grandes entreprises et des start-ups, et j'ai réalisé beaucoup de trafic élevé et de réponse rapide, projets très complexes qui ont, hum, dizaines de développeurs engagés et contribuant. Je connais donc la meilleure façon d' aborder un projet et de le rendre efficace, évolutif. aborder un projet et de le rendre efficace, Donc je vais t'apprendre toutes ces choses que je connais. Une chose que je m'efforce toujours de faire ces cours est de vous guider à travers les bases. Une chose que je m'efforce toujours de faire ces cours est de vous guider à travers les bases. Une chose que je m'efforce toujours de faire ces cours est de vous guider à travers les Ah, ou commencez par les bases. Ensuite, nous voulons faire avancer les sujets de la manière la plus efficace. Je ne vais pas entrer dans les petits détails ou peut-être passer par tousles les chapitres d'un livre Baekeland par exemple . Mais je vais passer par le moyen le plus efficace pour que vous puissiez vous mettre en marche et vous préparer pour le développement. Um, je vais aussi apprendre ça à nous donner un cours pratique dans tous les cours. Cela signifie que vous allez toujours apprendre en faisant et pas seulement en obtenant beaucoup d' informations sur les projets, les cours ou les langues avant de faire des choses. Donc ça va être très pratique, et je ne vais pas le sugarcoat. Um, ce sera que je vais t'apprendre à la dure. Ce qui signifie que je ne vais pas vous apprendre, par exemple, comment utiliser ma suite ou une base de données en utilisant un coolie comme PHP. Mon administrateur. C' est une autre façon que les développeurs professionnels le font. Donc je ne vais pas aller de l'avant et juste t'apprendre quelque chose qui est E.C E.C Parce que c'est facile pour toi de l'utiliser. Vous allez apprendre les outils de la façon dont les développeurs professionnels le font dans les meilleures startups technologiques. J' espère donc que vous vous joindrez à moi et que vous apprécierez ce cours sous caution. Je serai là pour vous aider à chaque étape du chemin. C' est pour ça que tous les autres étudiants, mais je peux te promettre que tu vas apprendre, même si ça va être dur un jour, tu vas apprendre la bonne façon, et tu es C' est pour ça que tous les autres étudiants, mais je peux te promettre que tu vas apprendre, même si ça va être dur un jour, , tu vas apprendre la bonne façon, va être un développeur Web professionnel en un rien de temps 5. Introduction à Cloud9: Alors maintenant, nous allons parler de l'environnement de développement que nous allons utiliser . Et j'ai fait quelques recherches et j'ai décidé d'opter pour Cloud 9. Donc Cloud 9 est essentiellement, ah, un environnement de développement Web. Pensez-y. Je dis votre serveur dans le cloud. Vous pouvez l'ajouter en codant, et vous pouvez démarrer des bases de données et cela fonctionne sur une technologie tout comme, qui est Docteur Um donc je pense que c'est ah, c'est un excellent moyen pour nous d'apprendre le codage sans, euh, avoir à installer des choses, installer python. Et si vous avez vu certains des cours que j'ai, j'y vais toujours, comme comment les orteils ont été mis en place. Vous savez, les différents environnements, les bases de données et tout ça. Mais j'ai trouvé que les étudiants, parce qu'ils étaient comme commencer à l'apprendre, était un peu comme un tracas supplémentaire pour eux d'apprendre à configurer, vous savez, Windows, Paice, propriétaire ou Mac par téléphone, puis la base de données et tout cela. J' ai donc décidé de commencer à utiliser Cloud nine comme environnement de développement pour tous mes cours , et ça va être bon parce que nous allons pouvoir essentiellement installer et pouvoir coder et travailler sur cette plate-forme sans avoir à installer n'importe quoi sur nos ordinateurs. Et peu importe le système d'exploitation que vous avez pour si c'est Windows ou Mac, vous aurez essentiellement un maigre sur sa machine fonctionnant sur, hum, sur le cloud, et vous pouvez éditer et travailler sur votre application où que vous soyez. , La bonne chose,c'est qu'ils sont un modèle de tarification. Ils ont un niveau gratuit ici, comme vous pouvez le voir. Et, vous savez, vous pouvez fondamentalement vous inscrire, juste entrer votre nom d'utilisateur et votre mot de passe, et il a des fonctionnalités plutôt cool comme, euh, codage collaboratif. Ainsi, par exemple, vous pouvez, vous savez, appeler avec un autre ami à vous ou un autre étudiant sur vous pouvez nous pouvons installer base de données et ensemble de frameworks sans aucun problème. Donc je pense que ce sera une bonne chose à utiliser pour nous. Et on va le revoir , , un peu nous. Nous commençons à faire les scores 6. Look plus proche: Ok, alors nous allons un peu familiariser avec les différentes zones du nuage neuf. Donc d'abord vous allez voir neuf points io, et vous pouvez simplement cliquer sur essayé maintenant pour enregistrer, hum, votre nouveau compte. Une fois que vous cliquez là, vous pouvez vous inscrire. Une fois que vous cliquez là, Si vous avez une porte, compte ou un grand compte seau, vous pouvez vous inscrire avec cela. Tous ceux que vous pouvez choisir un nom d'utilisateur et e-mail et un mot de passe, et sélectionnez ici afin que vous puissiez obtenir, comme, une capture, puis créer votre compte fréquent. Comme je l'ai dit, ils ont un compte gratuit ici. Ils ont aussi, genre, des oreilles de compte payées. Mais pour les besoins de ce cours, vous n'avez pas besoin de vraiment participer à un cours payant. Je veux dire, compte. Donc je vais me connecter avec Get Hub. Et lorsque vous vous connectez ou que vous vous inscrivez, vous obtenez essentiellement cette zone, qui est le tableau de bord, et vous avez ce qu'ils appellent des espaces de travail et des espaces de travail. Pensez-y comme des projets fondamentalement différents et ils sont fondamentalement certains, comme des serveurs séparés que vous créez avec des applications dedans. , Au départ, vous obtenez cet espace de travail de test, puis vous pouvez en créer un nouveau, qui est ce que nous allons faire quand nous commencerons notre première application de flasque. Mais voyons ce qui se passe lorsque vous sélectionnez cet espace de travail existant. Mais avant d'y arriver, si vous cliquez ici sur le nom de l'espace de travail, vous avez fondamentalement la capacité hors tension. Comme faire quelques modifications que vous pouvez avoir. Ah, vous verrez un me lire. Vous aurez les fichiers qui sont là-dedans. Hum, pour que tu puisses jeter pour que tu puisses jeter un coup d'œil. Leigh, lise-moi. Um est ici dans ce projet de test, et en voici un très intéressant. Vous avez des membres et des membres que vous pouvez essentiellement inviter. Si vous avez invité des gens, vous pouvez les voir là-dedans, hum, pour inviter des gens, vous devez être à l'intérieur du projet réel. Mais vous aussi, vous verrez combien de CPU en utilisant combien, combien de RAM et combien de stockage que vous utilisez. Et ils l'ont fait. Pour le niveau gratuit, vous pouvez avoir jusqu'à un processeur 512 megs de RAM et un gigaoctet dur, ce qui est plus que généreux, je trouve, euh, mais maintenant que nous savons plus ou moins, quoi s'agit-il ? Comme je l'ai dit, vous cliquez sur le nom lui-même. Vous verrez ces statistiques. Mais pour que nous commencions réellement à faire des choses, vous cliquez sur ce bouton ouvert vert. Donc une fois que nous cliquerons ici, eh bien, nous serons pris au point ce qu'on appelle l' I.D ou l'environnement de développement intégré. Et fondamentalement, c'est un peu comme un éditeur de code a aussi, comme, un terminal ici pour le serveur. Et vous avez essentiellement un navigateur de fichiers, comme vous pouvez le souhaiter, vous reconnaissez à partir de types similaires d'applications, comme les coordinateurs ou, vous savez, même comme, vous savez, travaux ou éditeurs. Mais, ah, ici, vous pouvez essentiellement naviguer dans ce qu'il y a dans le dossier. moment, nous avons seulement ce dossier me lisant MD sur le côté. Ici, nous avons fondamentalement, vous pouvez éditer. Vous savez quelque chose et vous avez aussi une fonction d'annulation, si vous voulez. Vous savez quelque chose et vous avez aussi une fonction d'annulation, Hum, il partage comme beaucoup de choses que les coordonnateurs normaux ont, donc c'est très, très bien construit, a beaucoup de capacité hors de portée. Tu ne donnes pas beaucoup, euh, hors tension parce que tu utilisais cet environnement de développement désintégré . Et voici le fond. Nous avons le terminal, et c'est quelque chose que j'aime toujours forcer les étudiants à se familiariser beaucoup parce que c'est fondamentalement la façon dont vous interagissez plus avec des systèmes que nous ne voulons pas s'habituer à utiliser , comme des choses graphiques. Nous voulons être très à l'aise avec le terminal. Si vous cliquez sur ce petit genre de fonction de fenêtre ici, nous aurons un, euh, un éditeur autonome. Et vous pouvez minimiser à nouveau en cliquant sur cela, um sur qui est comparé. Et 11 important dont vous voulez vous souvenir est l'évasion de contrôle, qui montre et cache fondamentalement que ce terminal d'avant en arrière. Um, vous pouvez aussi, comme, ajouter des sommets ici, par exemple. Vous pouvez ajouter un nouveau comme et je pense que lorsque vous l'avez ouvert pour la première fois, vous verrez cela dans l'éditeur JavaScript nécessaire. Je le ferme d'habitude parce que ce n'est pas quelque chose que nous allons utiliser, euh, pour ce cours, donc vous pouvez aller de l'avant et le fermer, mais vous pouvez avoir une autre fenêtre de terminal. Disons de Ah, avec un autre dossier ouvert ou des choses que vous voulez faire une houle. Mais dans tous les cas , , c'est ah, c' est un environnement très bien intégré et ce que nous allons regarder ensuite est une fonction de terminal de base pour que vous vous familiarisiez avec les commandes du terminal et comment copier et naviguer dans des répertoires et des choses comme ça. 7. Commandes Shell: Alors la star joue un peu avec le terminal ? J' ai modifié les appelants comme on peut le voir ici, euh, je vais à Ah, tu vas ici à Preferences, et puis tu vas à, euh, terminal ici. J' ai modifié les appelants comme on peut le voir ici, euh, je vais à Ah, tu vas ici à Preferences, et puis tu vas à, euh, Et puis je mets l'arrière-plan plus froid en cliquant ici en noir afin que vous puissiez mettre n' importe quelle combinaison de couleurs. J' augmente aussi la taille du téléphone à 18 pour que vous puissiez voir un peu mieux. Hum, et je ferme ça et puis laisse moi mettre ça en plein écran et commencer, hum, hum, faire un homme de base pour que vous puissiez vous familiariser avec la façon dont, fondamentalement, notre linge, hum, hum, gestion des fichiers et et commencer les travaux. Donc la première chose qu'on va regarder, c'est qu'on veut savoir où on en est à un moment donné. Et pour cela, nous utilisons un PWD chimique, qui est présent répertoire de travail. Et là, il est dit que nous sommes à la maison boom à l'espace de travail. Vous voyez, les gars comprennent. Accueil est généralement le dossier dans lequel les comptes dans lesquels les comptes utilisateur sont placés . Donc, si vous aviez un autre utilisateur froid, vous connaissez Jorge, ce serait la barre oblique de la maison Jorge, et cela s'appelle le répertoire personnel pour cet utilisateur. Et ceci encore le représente fondamentalement cela. Donc si vous êtes dans un autre qui dit que nous avons déménagé dans un autre dossier, hum, nous pouvons rapidement revenir en arrière en faisant un CD, qui est changer de répertoire et mettre ça jusqu'à ce qu'ils soient là. Ça nous ramènera au répertoire d'accueil. Et dans le nuage 9, il y a un dossier d'espace de travail, qui est essentiellement l'endroit où les projets sont stockés. Et dans le nuage 9, il y a un dossier d'espace de travail, Je n'ai pas de problème avec ça. D' habitude, quand je travaille sur Lenox, j'ai, euh, travaillé avec le répertoire O. P. P. T. Mais l'espace de travail fonctionne mieux, donc encore une fois pour nous faire savoir où nous sommes chez PWD. Donc, nous sommes dans la maison Bhutto, qui est l'utilisateur que Chlo neuf vous affecte automatiquement lorsque vous sélectionnez l'os à l'environnement, puis l'espace de travail, qui est un répertoire où, où nous en sommes. Voyons donc comment nous pouvons voir quel est le contenu du répertoire. Et c'est essentiellement la commande ls So ls va nous montrer quels sont les fichiers dans ce répertoire courant . Et donc, comme vous pouvez le voir, nous avons lu point MD, qui est ce fichier Lisez-moi que nous avons vu sur l'éditeur plus tôt. Disons qu' on veut créer un nouveau répertoire à l'intérieur de la maison. Un boom à l'espace de travail. La commande pour cela C'est faire le répertoire M k le I r. Et disons que nous créons un test de ruissellement direct. Si nous le faisons,vous verrez qu'on m'a lu. , Et puis nous avons un répertoire appelé Test. Donc, pour que nous puissions changer le répertoire, entrer dans ce répertoire, nous avons utilisé CD et ensuite tester. Une astuce que vous voulez savoir, c'est que vous pouvez mettre le premier, comme des lettres, essentiellement des commandes et des répertoires et tout ça. Et puis si vous appuyez sur l'onglet, vous verrez qu'il se termine automatiquement à tout, um, um, meilleures correspondances sur si vous continuez à cliquer sur l'onglet, vous continuez à voir à travers ces choses. Donc si je vois le r et puis cliquez sur l'onglet, vous verrez que, hum, hum, ça devrait me faire orteil. Puisque je ne suis pas dans la Marine, l'espace de travail. Alors quoi ? Fondamentalement, vous allez me lire vide, mais je vais aller à la donc si je le fais, vous verrez ça ? Lisez-moi là-bas , , vais changer au répertoire de test ici. Donc pour l'instant il n'y a rien là-dedans. , La prochaine chose qu'on va faire,c'est qu'on va utiliser une touche froide et que le toucher est utile pour créer des répertoires vides. Comme, si vous voulez juste créer un fichier rapide, hum, hum,qui n'a rien dedans. Donc nous pouvons faire, disons, test, pas txt. Si tu fais moins maintenant, tu verras que, euh, il y a un txt de test là-dedans. Si tu fais moins maintenant, tu verras que, euh, euh, Donc c'est une commande utile pour laquelle on va l'utiliser. Il y a un, um il y a un nom de fichier appelé Any P Y que nous utilisons pour initialiser les répertoires comme les modules pour python ball obtiendront le pied aussi rapidement. Si vous voulez effacer l'écran, revenez en haut. Nous avons utilisé une commande claire, et cela nous met avec un clair avec un écran clair. D' autres choses utiles. Disons que nous avons Ah, le répertoire des tests. Ici. Créons un autre répertoire appelé test. Hum, dans Disons test in. Ok, donc maintenant nous avons Tastic City et puis un autre dossier. Nous pensons que, hum, test à froid. Disons que je veux déplacer ce dossier. Je veux dire, cette cuillère classée qui est point txt 2. Leur test dans j'utilise la commande M V, qui est déplacer, et fondamentalement je vais passer tester le txt à, ah, test dans le répertoire. Alors je fais ça. Alors je bouge. Je dis déplacer le test txt à l'intérieur du test de répertoire en effet appuyez sur Entrée là. Maintenant, si je fais une dernière, vous verrez qu'on n'a plus Txt de test, et c'est en test. Mais comment puis-je vérifier sans avoir à repartir ? Comme faire des tests Seedy Vous pouvez réellement faire l s, puis taper le nom d'un répertoire. Et si vous appuyez sur Entrée, vous verrez le contenu de ce répertoire dans, hum, que ce dossier que vous avez sélectionné afin que vous n'ayez pas à y aller. Alors c'est le mouvement, Commandement. Il y a aussi, euh, une commande très utile appelée Cat. Il y a aussi, euh, Revenons au dossier d'accueil, puis à l'espace de travail. Tu vois comment j'ai fait ça ? Je suis maintenant dans l'espace de travail des orteils, donc il y a un chat chimique et un chat vous permet de voir le contenu d'un fichier rapidement sans avoir à, hum, ouvrir Je suis maintenant dans l'espace de travail des orteils, donc il y a un chat chimique et un chat vous permet de voir le contenu d'un fichier rapidement sans avoir à, hum, ouvrir Je suis maintenant dans l'espace de travail des orteils, donc il y a un chat chimique et un chat vous permet de voir le contenu d'un fichier rapidement sans avoir à, hum, théâtre ou quoi que ce soit. Vous voulez juste, genre, prendre un terrain rapide. Alors, voilà. Donc, si je ne peux pas me lire, je vois le contenu du fichier sans avoir à aller à l'éditeur. Um, si nous avons un fichier long, nous pouvons aussi utiliser une commande effacer l'écran appelé plus. Donc, si je fais mawr et puis me lis, euh, il sera essentiellement Pagine huit parce que ce fichier peut être vu dans une seule page. Il n'y a pas beaucoup d'utilisation pour ça. Mais si vous tapez plus et qu'il y avait plus d'une page, vous pouvez essentiellement voir le contenu du fichier d'une manière paginée. Un autre utile s'appelle l'homme et l'homme. C' est comme le manuel de sorte que vous pouvez voir les options que vous avez pour toutes les commandes UNIX ou Linux . Donc, disons que si je tape man CP, je peux voir le Aled les options que j'ai pour la commande de copie et vous pouvez appuyer sur la bas ou la flèche vers le haut pour les voir. Le dossier. Vous pouvez également appuyer sur la touche Espace, puis paginer par page. Lorsque vous voulez quitter, vous suffit d'appuyer sur la file d'attente, la lettre de la file d'attente et elle reviendra. Donc, euh et c'est ce qui, en gros, utilise la commande plus, ce que je te disais tout à l'heure. , La dernière chose dont je veux parler,c'est le joker. Donc, si c'est le cas, allons dans le dossier de test et disons, laissez-moi créer rapidement, c'est deux points txt, puis testez trois points txt. Et il y a quelque chose qui s'appelle Wild Car, qui est l'astérisque. Um, et c'est un désir de déplacer rapidement un tas de fichiers qui ont commencé avec le test. Si je bouge, Test star ou ASA est le T Eckstine et je les veux dans le test dans le dossier, ce cul teres va dire, OK, tout ce qui a qui commence par le test, peu importe quoi, Des lettres ou des chiffres viennent ensuite et après ça, un point et un txt vont être déplacés. Des lettres ou des chiffres viennent ensuite et après ça, Donc si j'appuie sur Entrée, vous verrez que, euh, je n'ai pas le test. Vous connaissez les fichiers, etils sont tous dans le test dans le dossier. Vous connaissez les fichiers, et C' est donc un coup d'oeil rapide aux commandes du terminal, et il y en a beaucoup, beaucoup d'autres. Et il y a, comme différents drapeaux que nous pouvons mettre, qui sont comme des paramètres pour ces commandes. Mais tu leur apprends qu'ils te fesses en les utilisant Azaz. Nous suivons le parcours 30, mais pour l'instant, c'est Ah, c'est une introduction très rapide aux commandes du terminal. 8. Python Python: Alors commençons à jouer un peu avec Python et nous allons utiliser à nouveau le terminal. Le temps maximisera cela ici. Um, avec le nuage neuf, nous avons une option pour utiliser le sport par Thorn et acheter à trois par téléphone pour est toujours très utilisé parce qu'il y a des bibliothèques qui n'ont toujours pas été portées pour acheter à trois . Mais je dirais ces jours-ci, plupart hors du commun, les bibliothèques et les frameworks utiles ou les plus communs ont été mis à jour. Donc, je commence définitivement. Et je commencerais à utiliser python trois à partir de ce point, Um et vous savez, c'est ah, C'est une bonne chose que nous commençons à utiliser à partir de trois projets pour, um un peu comme déplacer notre communauté ou notre communauté python vers cela, cette version plus récente. Donc, la façon dont nous accédons , si nous utilisons seulement python comme ça, nous allons utiliser nous allons essentiellement utiliser Python 2.7, qui est les deux dernières versions que vous pouvez faire tiret V pour vérifier la version de celui-ci. Donc, comme vous pouvez le voir par téléphone, 2.6, 2.7 point six je veux dire, est ce que vous obtenez de python Mais nous pouvons également utiliser Python trois en tapant simplement à partir de trois, et alors vous verrez que nous avons 3.4, qui est le dernière version par téléphone. Donc c'est bien. Donc, euh, il y a un moyen de jouer avec mon iPhone et c'est à travers le shell python. Et la façon dont tu fais ça, c'est que tu utilises ton état par téléphone ou par trois, puis appuie sur Entrée et tu entreras dans ce Ah ah, essentiellement , euh , terminal, où tu peux jouer et faire, comme, petit type de fonctions et apprendre à connaître par fils mieux. Alors commençons à faire quelques commandes et commençons à jouer avec. 9. Fonctions arithmétiques: Ok, la première chose qu'on va faire est, euh, utiliser par téléphone comme calculatrice. Oui. Donc tu as une idée de ce qu'on peut faire. Hum, si je tape plus trois, j'en ai cinq. Donc, vous savez, c'est, ah, ah, trucs de base là-dedans, mais, oui, vous en avez une idée. Donc trois moins un est à pour la multiplication. Utilisé pour étoile trois fois huit pour la division utilisée pour couper 10 divisé par deux. , Une chose que vous remarquerez,c'est que dans cette opération, on a un nombre flottant . Donc, ce n'était pas cinq corps entier était cinq points. Oh, c'est parce que ma famille est fondamentalement un peu comme, euh, avancer ou prévoir que vous pourriez avoir pas, hum, nombre entier. Donc, si on le divise par trois, vous obtiendrez 3.3333 qui est, vous savez, le nombre flottant. On peut aussi faire, euh, exponentielle en faisant deux astérisques. On peut aussi faire, euh, Donc à la puissance de trois est huit. Hum, et vous pouvez aussi obtenir le module est qui est le rappel d'une division. Donc 10 modules, trois iss un parce que vous savez, 10 divisé par trois est trois et puis vous en obtenez un de plus car le, euh, semble ardu. Um, la dernière chose ici est comme si nous pouvons, euh, grouper des termes ensemble parce que généralement les divisions et les modifications viennent avant la sous-structure et l'addition, par exemple, si nous faisons deux plus trois, euh, fois cinq. Ce qui va voir ici, c'est que la multiplication vient en premier, donc elle est 15 et ensuite elle va ajouter à deux, ce qui est 17. Mais si nous voulions faire les deux plus trois d'abord, vous mettez une parenthèse là et ensuite dans ce cas, vous obtiendrez deux. Plus trois est cinq fois cinq est 25, donc c'est un peu comme les fonctions arithmétiques de base. 10. Variables: un concept clé au téléphone et dans d'autres langues est le concept de variables et de tsar viables essentiellement des boîtes où vous pouvez y stocker une certaine valeur. Et puis nous pouvons référencer cette valeur à partir de ce nom de boîtes, pour ainsi dire. Donc, disons que si j'ai, disons, un viable appelé X, vous lui attribuez un viable en utilisant la commande égale, et ensuite vous en faites trois. Donc, à partir de maintenant, X est égal à trois. Pour voir la valeur d'un viable, vous pouvez utiliser la commande prin. Donc vous imprimez Vous espionniez cette saison ? Python trois avait l'habitude d'être imprimé avec les apprentis X sur python à Alors maintenant, nous obtenons la valeur de celui-ci . Parce que c'est un viable, on peut changer la valeur quand on veut. Donc maintenant, si je fais X égal à quatre et en fais l'impression, je vais obtenir le faire la nouvelle valeur. Donc, comme vous pouvez le voir, vous pouvez changer um, les valeurs hors d'une religieusement viable Euh, vous pouvez aussi un signe dire que nous avons un autre appel viable. Pourquoi ? Et nous pouvons aussi maintenant un sinus x égal pourquoi ? Et que tout ce qui affectera la valeur de X toe la valeur actuelle de pourquoi, Et nous verrons pourquoi je dis ça. Donc si j'imprime exe maintenant vous voyez que j'en ai sept. Mais si je change, pourquoi orteil 10 ? Qu' est-ce que tu en penses ? La valeur de l'excédent de la valeur de X est toujours l'ancienne valeur. Parce que cela a été passé en tant que valeur et avis de référence orteil la valeur. Donc, pour que je change la valeur de X, je dois, comme, réaffecter x égal. Pourquoi X est égal à y. et puis si je fais X maintenant, obtenez la valeur mise à jour. Hum, et bien sûr que je peux. Certaines de ces variables, euh, y explosif est égal à 20 um, et vous savez, faire la multiplication est et tout ça. Um autre chose intéressante est que je peux aussi un signe, euh, chaînes de viables. Donc si je fais ça, disons, maintenant Z est égal bonjour. Hum, si je prie et que je vois ici Ah, tu verras que j'ai Bonjour là. Et, hum, si j'en ai un autre, c'est un monde Z égal à Z. Si je tape c plus zzz, que se passe-t-il ? Il y a une concaténation. Ça ne va pas en ajouter les valeurs, mais ça va contaminer les cordes. Cependant, notez que nous n'avons pas d'espace entre les deux, qui est-ce que vous savez quoi ? On est en train de le dire à soi-même. Reportez-nous pour mettre un espace. Nous devrions faire quelque chose que je z plus citations plus c z. et puis nous obtenons le bon monde bonjour. Une chose que vous ne pouvez pas faire, c'est à une chaîne à un nombre. Une chose que vous ne pouvez pas faire, On a une erreur là parce qu'on a besoin, euh, fondamentalement, de convertir celui de euh, fondamentalement, de convertir celui de l'orteil Z. Ah ah nombre qui n'est pas possible. Mais par exemple, si Z était un droit et C c watts équivaut à deux, si je fais C plus facile, je reçois cette époque. Droit ? Mais si je fais la fin de Z, c'est fondamentalement convertir voir en un entier et puis je fais plus facile, Alors je n'obtiens pas le bon résultat. Hum, donc c'est plus ou moins une introduction à Virals. On va les utiliser beaucoup, donc on va se familiariser avec eux au fur et à mesure qu'on passe au cours 11. Vérification des types: un moyen de vérifier le type, le viable ou le ou le numéro, pas le numéro sur le, euh le terme que vous êtes que vous avez est par l'homme de Taiko. Donc, par exemple, si je tape un, il dit, c'est ah, c'est un type off entier. Donc fondamentalement, c'est , ah, c'est un nombre entier. Si je ne tape pas 1.0, alors tapez me dit que c'est un flottant eux. Ça veut dire qu'il a, tu sais, des décimales dedans. Um, si je fais X égal à cinq et que je tape X, c'est comme c'est un entier parce que c'est ça l'assigne à, um à un nombre entier. Donc, cela signifie que le viable est hérite du type off, le off la valeur sur Si je change cela en une chaîne. Hum et puis je tape à nouveau X. Je reçois, vous savez, les nouvelles classes nucléaires. C' est une ficelle. , Une chose que tu as remarqué,c'est que je peux appuyer sur le type de flèche en haut et en bas pour passer à travers l'histoire pour que je n'ai pas à, genre, genre, choses à repartir. Et encore une fois, tu sais, si je tape. Et encore une fois, tu sais, Allô ? Ce qui est une corde que je vais obtenir du type hors force. Donc c'est une chose utile. Toe Connaître et apprendre. Um, quand tu veux, comme savoir quoi ? Quoi ? Le type d'un viable que vous ne savez pas exactement ce que c'est ? Euh, euh, un peu comme si c'était Andi. Les écoles célèbrent comme vous le voyez. Très. Il est dit cours, nous allons entrer dans les cours plus tard dans cette section. 12. Format variable: Une chose à laquelle vous voulez vous habituer, euh ou savoir, c'est quelque chose qui s'appelle Pep 8. Donc, si vous allez sur Google et cherchez juste huit, hum, hum, et pied Python juste au cas où vous verrez cette ligne directrice de la fosse huit, euh, Et il y a essentiellement le type de style pour l'ensemble, comme par codage téléphonique. Et cela inclut, comme, vous savez comment utiliser du code en utilisant des robinets ou des espaces. Quelle est la longueur maximale de couchage ? Et en gros, il passe par toutes les conventions pour, euh, euh, vous savez, les fonctions. Oh, sont des choses que nous faisons normalement quand je base quotidienne. Donc, quand vous avez une chance et que vous avez, comme, vous savez, vous avez un long déjeuner et que vous voulez vous habituer ou vous familiariser avec toutes les recommandations pour la façon dont vous savez que nous tapons du code en python, alors vous devriez certainement lire ceci. Euh, mais dans tous les cas, euh, revenir aux variables pour les objets de valeur, on utilise essentiellement des chiffres, des lettres et des traits de soulignement , donc fondamentalement, vous connaissez un bon noma. Ah, le nom viable est, euh tu sais que mon var Sony j'utilise un trait de soulignement chaque fois que j'ai des espaces là-dedans, donc je ne fais pas ça. Mon bar, hum ou mon dossier de la capitale, ce qui est quelque chose qui refuse jaloux. Euh, donc sur l'autre chose, c'est comme essayer de faire des noms viables aussi expliqués, explicites que possible. Comme les rendre significatifs. N' aime pas, tu sais, tu sais, X. Comme si je faisais du zzz avant ça, c'était, c'était, ce n'était pas une bonne pratique. Si vous aimez écrire un projet riel, il est préférable de mettre, vous savez, vous savez, vous savez, base de données, um, valeur d' index versus juste comme DB I, vous savez, essayez pour utiliser des noms explicites, des choses que vous pouvez. Les gens lisent le code. Je ne comprends pas ce qui se passe. Euh, il y a aussi un euh, ce n'est pas le cas. Rien de tout cela n'est vraiment appliqué, mais c'est encore ce que Bebe dicte. On a une constante, ce qui veut dire que c'est un nombre qui ne changera jamais. Nous utilisons tous les capuchons. Ainsi, par exemple, um, baies de données ah, nom, par exemple, égal test. C' est un peu comme si c'était une bonne pratique d'avoir des plafonds, parce que cela signifie que chaque fois que la personne ou le développeur lisant le code regarde ça, il le sait. Oh, c' est quelque chose qui ne change pas dans toute la base de code, c'est Ah, c'est un chat, c'est Ah, c'est la vie capitale. Donc ça veut dire que ça ne changera pas, euh, mais il y a toutes les choses que tu devrais vraiment regarder et jeter un oeil à envahir quand tu as une chance parce que c'est, ah, c'est utile pour toi pour se familiariser avec elle. 13. Strings: Jetons un coup d'oeil à certaines fonctions de force. Et, euh, et les aides. Um, les chaînes peuvent être exprimées sous forme de guillemets comme X est bonjour ou en tant que singles xolo. Une chose à savoir est que les cordes sont fondamentalement une augmentation, et nous allons voir une augmentation, qui dans tarte tonnerre listes froides un peu plus en détail après. Spot pense fondamentalement à Honore comme une collection de personnages individuels. Donc ce que cela signifie, c'est que si je le fais, disons X sur zéro. Cela signifie que je vais retirer le premier personnage de la chaîne. Si je fais X sur un, je reçois le second. Donc, comme vous pouvez le voir, c'est fondamentalement une collection ou un tableau hors des chaînes. Et c'est quelque chose à retenir quand vous pouvez, genre, enlever les sous-chaînes d'une chaîne en mettant une plage de caractères. Et c'est quelque chose à retenir quand vous pouvez, genre , enlever les enlever les sous-chaînes d'une chaîne en mettant une plage de caractères. enlever les sous-chaînes d'une chaîne en mettant une plage de caractères. Par exemple, si je fais zéro appel à trois, j'obtiendrai les 3 premiers caractères de cette chaîne, Um, de la même manière. Si je fais trois à cinq, j'aurai les deux derniers caractères. truc, Letruc,c'est que, euh, comme on l'a vu plus tôt, on peut escroquer inné à la corde. Donc, si je à pourquoi égal ? Heu, alors on peut faire des explosifs. Pourquoi ? Et e obtenir Bonjour, Paul. Um, si on veut faire, genre, l'espace entre l'outil, j'insère cet espace là-dedans. Um, nous pouvons convertir, um, une chaîne que je veux dire un nombre orteil par flux en utilisant la fonction str. Donc, par exemple, si je l'ai fait, c'est un c égal à trois. Tu te rappelles comment on a dit que nous ne pouvons pas venir en huit ? Um, l'entier et un nombre si tu voulais dire bonjour, euh, trois. Nous ferions X plus str off trois z. donc str convertira le numéro trois, qui est un entier pour nous la force et leurs œuvres. Si tu voulais le contraire, te souviens ? Comme si nous voulions avoir une chaîne qui était, euh, fondamentalement, un nombre que nous voulons obtenir la valeur de celui-ci. Ensuite, nous faisons I nt Il y a aussi quelques méthodes que nous pouvons utiliser qui sont déjà intégrées sur les chaînes. Par exemple, si je voulais avoir le bonjour tout en majuscules, je ferais x dot offre et, um off Ça n'a pas beaucoup de sens, je suppose. Hum, disons pourquoi ne pas offrir et nous verrons Paul tous en majuscules et je veux qu'ils soient tous inférieurs à ce qu'on fait X plus bas. Il y a donc plus de méthodes comme ça. Mais vous avez une idée de certaines choses que vous voulez, euh vous savez, il y a certain que mon pied. Donc, vous pouvez que vous pouvez utiliser et un de moins que vous utiliserez souvent est Len, qui est la longueur d'une chaîne spécifique. Alors, Len. Pourquoi quatre, c'est Paul ? Euh, donc, vous savez, jetez un oeil aux opérations de chaîne. Quand vous avez un temps, il y en a beaucoup, mais ceux-ci sont un peu comme ceux qui sont le plus utilisés après. 14. Listes, Tuples et dictionnaires: Jetons un coup d'oeil à trois. Um, les types très utiles hors de variables quand on l'appelle listes. Um, liste est fondamentalement un ah, une liste de valeurs qui peuvent être des nombres ou des chaînes ou les deux. Donc, disons que X est un commun à venir sur trois. Et tu les fermes avec des crochets, et ça veut dire que c'est une liste. Et tu les fermes avec des crochets, Donc, chaque exe d'impression que vous obtenez la liste entière même pour obtenir le type X, Vous obtenez la classe de type est la liste, um donc le moins sont très utiles si vous avez, ah, fondamentalement un ordre ou dans l'ordre des valeurs moins off qui sont, um vous devez avoir accès à. Et beaucoup de fois, des choses qui viennent comme la base de données sont retournées au fur et à mesure que nous levons. Donc, vous voulez, genre, être capable de regarder à travers eux et obtenir leur leur viable leurs leurs valeurs. Une chose que vous pouvez faire est de parcourir une liste. Mais c' est quelque chose qu'on va regarder un peu plus tard. Un autre type, euh, ou un autre, euh, ouais, genre de stockage différent. Un autre type, euh, ou un autre, euh, ouais, Um, Fonction ou ou ou classe est Stupples et Topolsky est essentiellement utilisé avec des pièces. Donc, vous pouvez le savoir, X est égal à une virgule aussi. Et c'est un Topol. Donc, si vous tapez X, vous obtenez un Topol. Donc, une chose qui sépare la liste sur les deux pôles est que vous ne pouvez pas une fois à la police, ils trouvent que vous ne pouvez pas mettre à jour les valeurs. Donc, il pense à un Topol comme une constante de, ah constante liste ou une liste statique que vous ne pouvez pas changer par la suite. Um, pour obtenir à la fois une valeur triple et une valeur de liste à une position spécifique. Tu fais en gros, euh, x off. Disons que l'indice si en fait X off zero, qui est ce Topol ? C' est un x de un est à donc c'est ah, c'est toujours que tu commence le prochain à zéro quelque chose que parfois on oublie, Um et quoi ? Fondamentalement, vous pouvez obtenir n'importe quelle des valeurs hors de cette liste ou tirer en utilisant cette notation. Alors disons que, euh, euh, on veut orteil. Je veux vous montrer comment nous pouvons changer la valeur hors location, mais pas d'un Topol. Donc, le trouve que ex à nouveau comme 123 Si je fais X off, un est égal à quatre maintenant si je Si j'imprime exe, voir que je viens de remplacer Cela a gagné la deuxième valeur 24 Mais si je l'ai fait Tupelo 1 à 3 et vous remarquerez que je mets une virgule après le pire, c' est un peu comme la façon dont vous travaillez avec les renversements, vous devez en quelque sorte finir avec le coma, même si vous ne mettez pas de valeur là. Donc, si je fais pourquoi un équivaut à quatre, je vais y entrer parce qu'il n'y a pas d'affectation d'objet sur les totaux. Le dernier type que nous allons voir est appelé dictionnaires et dictionnaires sont fondamentalementunevaleur clé, Um, des objets. Le dernier type que nous allons voir est appelé dictionnaires et dictionnaires sont fondamentalement valeur clé, Um, Um, Donc fondamentalement, si je le fais, disons, , abord c'est Jorge,puis dernier ISS Escobar. Et puis j'ai utilisé des parenthèses Carly pour ceux-là, donc ils disent est un dictionnaire et la façon dont vous le référencez au lieu de faire X off zero, ce que vous feriez dans une liste, vous faites X off premier, et cela retournera Jorge. Beaucoup de fois, ils sont appelés objets. dictionnaires sont appelés objets car c'est un peu comme le premier sur le dernier sont les propriétés de cet objet. Et, euh, et leurs valeurs sont celles que vous mettez après. La dernière chose que nous voulons voir est, euh, vous pouvez faire une liste de dictionnaires, ce qui est quelque chose que vous verrez beaucoup quand vous interagissez à nouveau avec des bases de données . La dernière chose que nous voulons voir est, euh, euh, vous pouvez faire une liste de dictionnaires, ce qui est quelque chose que vous verrez beaucoup quand vous interagissez à nouveau avec des bases de données Donc, par exemple, disons que nous avons, vous savez, utilisateurs égaux et ensuite nous avons, euh, disons , ah, allons trouver un autre utilisateur. Nous, euh, pourquoi c'est d'abord Paul. Ah, et puis le nom de famille est, euh, Gram. Donc maintenant, je peux faire des utilisateurs égaux ex plus calme. Pourquoi ? Donc, c'est une liste des utilisateurs. Si j'imprime les utilisateurs euh. Je vois que j'ai tous ces objets là, et quelque chose que vous remarquerez est que je mange mis au dictionnaire d'abord égal pôle et Lasses gramme. Mais maintenant c'est l'impression. Dernier premier et 1er 2ème C'est quelque chose que vous ne pouvez pas contrôler sur les dictionnaires. Trois commandes sont hors de la clé ? Hum, hors des clés. Hum, et c'est le magasin au hasard en python. Fondamentalement, il n'y a aucune garantie. J' ai commandé ces clés. Hum, mais il y a des choses que tu peux faire pour gérer ça a acheté quelque chose pour tu aimes toujours. Rappelez-vous 15. Date et heure: Python a de grandes fonctions de contrôle pour les dates dans le temps. , Encore une fois, il y a beaucoup d'informations, mais nous verrons il y a beaucoup d'informations, mais nous verronsdes choses très simples que vous pouvez faire. Donc, la première chose que vous voulez faire est d'importer le jour, qui est une date et l'heure de la collecte, um, fonctions et les utilitaires, En passant, nous n'avons pas vu cela avant, alors importez signifie essentiellement, vous savez, charger la mémoire des orteils, ce module spécifique. Et c'est beaucoup de la façon dont Python fonctionne. C' est, euh, fondamentalement, vous importez ou vous désactivez les bibliothèques ou les utilitaires que vous avez dans votre faux système. Mais vous n'avez pas besoin de les avoir tous chargés à la fois. C' est ainsi que vous, vous savez, choisissez les utilitaires que vous allez utiliser dans un fichier spécifique. Hum, et on verra beaucoup de choses sur ce cul. Nous entrons dans le cours, mais maintenant, après que je présentateur, j'ai toutes ces fonctions de jour à ma disposition. Mais quand on va voir, c'est comme, hum, c'est ce qu'on appelle le jour, euh, jour maintenant, et ce que ça veut dire, c'est que si j'imprime que j'ai un état, ce qui est, vous savez, aujourd'hui, l'état et l'heure. Hum, maintenant, éteint, hors de l'ordinateur. Euh, donc fondamentalement, puisque CLOUD9 fonctionne dans le nuage, je crois que c'est déjà dit à, um deux UTC, qui est fondamentalement le, vous savez, temps universel ou vert à chaque fois comme un Donc, vous avez peut-être entendu. Hum et c'est une très bonne pratique. Vous n'avez jamais utilisé le magasin local de pointe comme horodatage parce que, euh, vous allez être fondamentalement, les utilisateurs vont être dans différents fuseaux horaires, et vous ne voulez pas faire de conversions. Um, après les données que le mari stocke. Alors rappelez-vous, c'est une règle d'or. Stockez toujours l'heure ou les dates dans la base de données en tant que UTC. Mais on verra quoi ? Quoi ? Comment on fait ça pour l'instant. Disons que c'est l'heure locale. Donc si je le fais maintenant, euh, c'est un type off. Maintenant, vous verrez que c'est notre référence diurne hors type. Mais maintenant je peux juste des choses comme Pourquoi ne pas l'année ? Euh oh, désolé. Maintenant l'année et vous verrez que j'ai l'année pour cette date. Et je peux dire maintenant que notre je vais me dire l'heure. Donc, vous savez, je peux essentiellement, euh, être capable de remorquer des barres. Différence différente. Différentes parties de ça à partir de ces données. Hum, vous savez, pour que nous puissions démarrer l'UTC correctement, nous devons importer ce jour spécifique, euh, euh, classe ou fonction ical à partir du datum d'importation diurne. Et maintenant, ce qu'on peut faire, c'est c'est l'heure que tu vois, et on attribue ça à UTC de jour maintenant. Et ça nous donnera, euh, l'UTC, euh, pour ce moment précis. Et comme vous pouvez le voir, c'est la même chose, fondamentalement les mêmes heures que le Cloud 9 nous a donné comme heure locale, ce qui est intelligent. Je veux dire, ils utilisent UTC. Oui, là comme leur temps. Donc vous n'avez pas à faire ce que vous savez, vous n'avez pas à faire face à cette conversion. Hum, manuellement, mais j'attends toujours et je stocke des choses en utilisant cette fonction Vous voyez maintenant contre cette fonction maintenant, hum, hum, quelque chose pour vous de toujours vous souvenir 16. Flux de contrôle: Jetons un coup d'oeil à, um à deux parties très importantes de l'iPhone appelé conditionnel est et le flux de contrôle. Donc conditionnel est fondamentalement que vous voulez comparer une valeur avec une autre. Et, euh donc fondamentalement, si nous avons X égal à trois et pourquoi égal à quatre, euh, une condition serait X inférieure à quatre. Et toutes ces conditions nous donnent un vrai ou faux. Ils sont en gros des milliards. Um, des milliards sont, comme, vous savez, logiques, vraies, fausses , mauvais viraux. Donc, hum, si je fais X est supérieur à quatre, alors je reçois un faux parce que trois n'est pas supérieur à quatre. Um, je peux aussi faire, euh, est X plus grand que pourquoi ? Et cela nous donne une fausse houle. Une chose que nous pouvons aussi faire est que X n'est pas égal à pourquoi, et cela nous donnera essentiellement, c'est des œufs. Une chose que nous pouvons aussi faire est que X n'est pas égal à pourquoi, Et puis que la valeur de X n'est pas égale à la valeur de pourquoi um, nous pouvons aussi, um X est mineur ou égal à son trois. C' est vrai parce que même si ce n'est pas moins de trois, c'est égal à trois sur la même chose. Pourquoi est supérieur ou égal à quatre. Cela nous donnera la vérité aussi. Hum, donc ce sont les basiques ? Um Alors les flux de contrôle est fondamentalement vous pouvez contrôler l'où le programme va en faisant, si les conditions. Droit. Donc si je à X est inférieur à quatre, alors vous auriez un point-virgule là et vous appuyez sur Entrée. Tu vois comment on a trois points là-bas ? Cela signifie que par téléphone vous attend à mettre une sorte de paix intérieure hors de ce conditionnel. Donc vous pouvez appuyer sur un espace normal que vous devez faire pour que je veux dire, l'éditeur, vous verrez quatre. Mais dans le terminal, vous ne pouvez en faire qu'une, et c'est bon. Donc, si xx mineur avant alors, alors imprimer exe est plus bas, puis quatre. Ok, donc si j'appuie sur Entrée et puis imprimer, imprimer, entrer à nouveau, alors il exécutera ça parce que X, qui est trois. Il est inférieur à quatre. Alors que cela s'exécute. Mais c'est sûr. Nous voulions faire si pourquoi est supérieur à cinq, ce qui est faux, non ? Donc on peut faire, euh, imprimer. Pourquoi le plus grand est-il fait pour ? Ce qui se passera ici, c'est que rien ne sera imprimé. Pourquoi ? Parce que tu sais pourquoi. Ce n'est pas génial et cinq donc il s'échappe et continue. Mais il n'y avait rien d'autre à faire là-bas. Donc, une chose que nous pourrions faire est de faire une déclaration d'autre. Donc si tu le fais si c' , était plus de cinq, alors j'apporte ça et ils ont mis Els et aussi semi appel là-bas et ensuite ils ont mis des empreintes. Pourquoi ISS dire pas plus de quatre. Donc si j'appuie à nouveau sur Entrée ici, vous verrez qu'il exécutera la deuxième ligne. Tu vois ? Donc c'est si autrement, euh, il y a comme si vous construisiez tous vos programmes, en utilisant beaucoup de cela comme des blocs de construction. C' est donc très important pour vous de les connaître. J' apprendrai àensavoir en plus sur eux. Nous continuons avec le cours. 17. Boucles: Regardons les boucles. Les boucles sont fondamentalement comme le mot quelque chose qui tourne jusqu'à ce que quelque chose arrive. Et puis d'habitude, ils sortent. Bien que nous puissions avoir, ah, boucle limitée. Et puis, euh, tu pourras continuer pendant une longue période jusqu'à ce que tu arrêtes le programme. Mais voyons à quoi ça ressemble. Donc, disons que nous avons cette liste, Hum, et cinq x 12345 Nous pouvons regarder toutes ces valeurs en utilisant quelque chose appelé un quatre look . Alors quoi, Qu'est-ce que quatre doses que vous attribuez essentiellement la valeur. Appelons ce vœu dans X, et vous mettez un point-virgule et ensuite vous ferez quelque chose si, pour chaque élément, il exécutera cela et il aura le vœu comme valeur voleur pour cela pour cet amour. Allons-y et prions Val là-dedans. Donc, si j'ai appuyé sur Entrée, vous verrez qu'il a parcouru chacun d'eux et qu'ils ont imprimé cette valeur. Donc ça s'appelle une boucle for. Tu l'utilises tout le temps. Ça arrive, peu comme une de ces un peu comme une de cesfonctions très utiles. Un autre que nous pouvons utiliser est, euh, une boucle while et pour ça. Essayons quelque chose d'autre qui disent que X est égal à zéro sur le local ici sera alors que X est inférieur à six. Disons alors que nous imprimons exe et ensuite nous en ferons un autre, puisque nous devons, comme, changer la valeur de X parce que cela sera vérifié chaque fois que la boucle se termine, nous devons dire que X est égal à un explosif. Ça veut dire que la première fois, ce sera zéro. Quand il arrivera ici, ce sera là. Quoi ? Et maintenant ça va être un. Encore des chèques. Donc maintenant X, qui est un est inférieur à celui du sexe. Ce sont encore des empreintes qui en font une. Donc X maintenant est deux chèques et ainsi de suite jusqu'à ce qu'il arrive à cinq. Droit ? Et quand les sources ici nous apporterons ça en apportera cinq. Cela ajoutera 1256 Et quand il essaiera de lancer cela à nouveau parce que six n'est pas inférieur six, il quittera et continuera avec tous les commentaires que vous avez par la suite. Donc ils voient cette inaction. Et, comme vous pouvez le voir, il sera exécuté de 0 à 5. Au moment où il est devenu six, ilne s'est plus exécuté. Au moment où il est devenu six, il Hum, donc ce sont quelques-unes des plus utilisées, mais il y a d'autres variations, certaines des choses que vous découvrirez comme nous y allons seuls. 18. Fonctions: ok, Nous allons jeter un oeil aux fonctions maintenant afin que nous puissions définir nos propres fonctions en utilisant le mot clé death, qui est, comme, définir Donc ils vont bien. C' est un, euh, plus un. Et puis, en gros, tu passes. Vous ne pouvez rien avoir ici, ou vous pouvez avoir des paramètres qui sont fondamentalement viraux qui sont définis chaque fois que cette fonction est appelée. Donc, dans ce cas, on va passer. Ah, suivant. Viable. Une fois que c'est réglé, on peut faire des trucs avec ça. Une fois que c'est réglé, Viable. Donc, par exemple, nous pouvons dire, um, X est égal à X plus un , c'est pourquoi la fonction est appelée plus un. Et ensuite on peut imprimer. Exe. Ok, maintenant nous avons cette fonction. Et si vous tapez pl us et appuyez sur onglet, vous verrez que l'ordre Python complète cela parce qu'il a déjà cela en mémoire. Donc, pour que nous puissions voir ce qui se passe là-bas, nous pouvons passer cinq ans. Et quand on entrera, ça reviendra six. Alors qu'est-ce qui s'est passé là-bas ? Il a appelé la fonction il a passé cinq nous. Le X est fondamentalement égal à cinq. Un joyeux X est égal à X plus un, et il a imprimé cette valeur Donc si nous avons entendu 15, nous obtenons 16. Donc, vous avez l'idée. C' est un peu comme ce que sont les fonctions et, euh, on peut utiliser des fonctions tout le temps aussi ? Il est très important que nous comprenions comment ils fonctionnent. Um, mais jouez un peu avec les fonctions et voyez ce qu'on peut en tirer. Une chose importante que je veux, euh, euh, deux gars savent et se souviennent, euh, parce que c'est une chose fondamentale. Il y a quelque chose qu'on appelle la portée, et fondamentalement les variables qui sont définies dans les fonctions ne sont pas exposées à l'extérieur. Donc, dans ce cas, si j'imprime exe ici, hum, vous verrez que je n'ai rien parce que ce n'est pas défini, même si c'est leur dans le plus un. Mais ce viable s'appelle. Ça s'appelle un orteil local viable. Cette fonction, et c'est comme ça que python protège les données de l'extérieur à l' intérieur de la fonction, Um, en utilisant cette séparation. Souviens-toi que parfois tu sais, les étudiants oublient ça, et ils sont comme, pourquoi ? Pourquoi ne puis-je pas obtenir X s'il est vu dans la fonction ? Rappelez-vous que ce viable est sur Lee vu, et il est seulement apparent ou utilisable par cette fonction, mais pas à l'extérieur 19. Cours et objets: Donc, hum, quelque chose que vous avez peut-être entendu est que Python est un langage orienté objet et, vous savez, programmation orientée objet est quelque chose qui a bean, vous savez, être utilisé pendant une longue temps. Et il y a des langages sont orientés objet, comme java par téléphone. Mais d'autres ne sont pas correctement orientés objet, comme JavaScript, um, um, et ah ph B. Ce qu'ils ont un peu comme bean se dirige vers l'orientation de l'objet. Hum, et le principal avantage de la programmation orientée objet. Et l'utilisation de ce concept est, euh est vous savez comment mieux gérer les données et rendre les choses utilisables, euh, et fondamentalement vous permettre de séparer, vous savez, logique dans un dans A. Dans un meilleur façon. C' est un concept que vous ne saisirez pas immédiatement. C' est quelque chose que tu seras un peu fort, et tu y arriveras en pratiquant beaucoup. Mais pensez aux objets comme, euh off, Disons un fondamentalement un objet physique qui est représenté numériquement avec essentiellement deux choses. L' un est des propriétés sur les autres méthodes s. Les propriétés sont, par exemple, si vous avez une voiture, propriété pourrait être le nombre de roues droit, qui est, vous savez, pour une normale comme dire berline. C' est quatre. Mais si c'est un camion, c'est 16 ou quoi que ce soit, c'est une propriété. Et une méthode serait, vous savez, démarrer le moteur. Quelque chose qui est un peu comme une fonction off pour cet objet et la classe que nous appelons classes fondamentalement comme un Blueprint ou, vous savez, les schémas pour vous de produire une instance ou un clone hors de cet objet. Alors faisons un exemple à nouveau. Si vous ne comprenez pas complètement, il y a beaucoup de choses que vous pouvez lire ou même utiliser par téléphone et flash. Vous aurez une meilleure compréhension de ce que sont les classes et les objets. Mais faisons un exemple. Donc, une chose que vous voudrez vous rappeler est que les classes sont qu'ils trouvent avec, euh, fondamentalement un cas Oprah pour chacun des mots et non sur ce cours en eux. C' est un peu comme le pep 8. Disons que, hum, hum, on va définir une voiture en or de classe, pas vrai ? Donc la voiture que je vais avoir juste une, euh, fondamentalement une marque de propriété froide, donc je vais définir une méthode appelée. Euh, vous savez, dit Brand, et vous vous mettez toujours comme le premier paramètre pour ces fonctions qui sont dans la classe. Et c'est essentiellement une façon de dire que cela ne peut être appelé qu'à partir d'une instance de cette voiture et nous mettrons ici quelque chose appelé Brand. Alors je vais dire que la marque de la voiture est ce que vous avez passé en tant que marque sur cette fonction et laissons ça à ça. Donc fondamentalement, maintenant je peux les belles copies de cette classe ou des objets ou des instances, essentiellement des instances de voiture qui sont fondamentalement des clones les uns des autres, et je peux définir une marque pour chacun d'eux. Donc, par exemple, si je dis que X est sur exemple hors d'une voiture et que je mets loin dans cette année, si je remets le type X, vous verrez qu'il dit que c'est un type de voiture, n' est-ce pas ? Mais maintenant tu sais, si j'imprime exe , je n'aurai rien. Mais maintenant tu sais, si j'imprime exe , , C' est juste un objet de voiture. Hum, mais maintenant si je veux définir la marque, je vais appeler cette fonction en faisant x point marque Set et ils vont mettre à votre Ok, Donc maintenant si je reçois la marque de la voiture, je fais x cette marque et je vais obtenir Toyota. Alors je peux faire une autre voiture, c'est pourquoi. Et puis je ferai Ah, pourquoi ? Ledit marque. Ah, Ford. Et puis si j'ai essayé d'obtenir X à la marque Y à nouveau avant. Donc fondamentalement, ex. Et pourquoi les instances sont-elles hors de la classe des voitures ? Ce sont essentiellement des voitures, et je peux définir les fonctions de Mawr. Remorquez-les, qui sont appelées méthodes. Dans ce cas, dit Brian, c'est une méthode. Et, euh, vous savez, propriétés définies par le manipulateur comme Brand sont une propriété, donc nous verrons un peu plus de ces ânes que nous suivons. Mais c'est fondamentalement très brève introduction de ce que sont les lunettes et les objets. Quelques choses que je voulais ajouter à notre conférence de classe est l'un d'eux s'appelle Ah, méthodes magiques. Oh, sont leur genre de méthodes intégrées, et nous allons en voir une qui est vraiment importante. Cela s'appelle la fonction innée, hum, qui indique essentiellement comment nous initialisons une instance de la classe. Ah, en exigeant que quelques Bibles soient passées. Et l'autre est, euh, la notion de sous-classe, euh , , qui est fondamentalement vous pouvez prendre un cours et ensuite, euh, étendu. Et ah, c'est de l'or en héritage. Vous pouvez blesser les anciennes méthodes et toutes les caractéristiques de cette classe en contournant la classe nous le s un premier paramètre. Mais voyons comment cela fonctionne. Parce que nous n'entrerions pas à nouveau dans l'interpréteur Python à partir de trois. Et nous allons définir un ah, encore une fois la voiture de classe et sans aucun paramètre là-dedans. Donc je vais définir une, um, um, une nouvelle méthode, une méthode magique qui est présente dans de nombreuses classes. C' est très souvent que nous utilisons ceci et c'est appelé dedans. Donc nous avons besoin. Ce qu'il dit, c'est que chaque fois que vous créez une nouvelle instance de la voiture, vous avez besoin de Toby, vous devez passer ce viable que. Je vais écouter ici. Donc je vais le faire en disant que je dois être, ah, ah, fourni la marque quand je créerai la nouvelle voiture et la nouvelle voiture. Installez quelqu'un et là encore. Et ce que cette méthode innit fait, c'est qu'elle va mettre le pied de la marque de vente. Quoi que tu sois passé, Brand ici. Maintenant, je vais en créer un autre. Une autre méthode. Celui-ci n'est pas une méthode magique, qui s'appelle Get brand. Et ce que ça fait, c'est qu'il va juste, hum, imprimer la marque. Ok, donc maintenant, hum, si on ah, exécute ça. Disons que nous allons avoir notre première voiture, et ce sera, euh Disons que c'est Ah, c'est ma voiture. Ça s'appelle ça ma voiture, et ça va être un type de voiture. Droit ? Eh bien, souviens-toi maintenant, nous devons le faire au lieu de mettre aux parents, c'est comme nous l'avons fait avant. Nous devons passer cette méthode magique dedans et ils ont besoin avant le mariage. Je ne sais pas si j'ai dit que c'était trop de soulignements. Et puis souligner toutes les méthodes magiques. Ayez ça, euh, ce protocole que vous devez passer sous les traits de soulignement. Alors ah, ici. On va passer Toyota comme autre marque. Alors que s'est-il passé ? Fondamentalement, je crée une nouvelle instance hors d'une classe de voiture appelée ma voiture, et quand j'ai initialisé que j'ai besoin d'un nécessaire pour passer cette marque. Donc cette corde Toyota va se voir attribuer un orteil qui um viable qui était une définition sur le dedans. Et puis c'est passé ici à la marque auto, qui est la marque locale ou locale viable que cette voiture a. Donc maintenant, si je fais mon point de voiture obtenir marque, il apporte Toyota. Donc, qui a été dit correctement droit ? C' est la même chose qui est juste d'accéder à la marque directement ici, qui est Toyota. Mais comme vous remarquez que dans le haut, l'exemple supérieur, exemple supérieur n' est pas le cas. Il n'est pas retourné avec des citations parce qu'il est juste d'imprimer sur l'écran par rapport à ce qui est en fait la Toyota viable. Donc c'est, Ah, la méthode magique. Il y en a beaucoup d'autres que nous allons utiliser sur nos exemples de propriétaires sur la base de données. Um, c'est ah, quand on appelle ar e pr ou reproduire, je suppose que c'est ah, ça signifie et ça va essentiellement imprimer Ah, la représentation de cet enregistrement sur l'enregistrement de la base de données sur le terminal chaque fois que vous le tirez et qu'il y a leurs soldats que nous allons regarder aussi. Ok, alors maintenant regardons notre héritage si inhérent et est fondamentalement je veux créer un nouveau que je connaissais s'effondrer, mais je ne veux pas aimer, disons, faire cela toutes les définitions et toutes les choses que cette classe a déjà, donc je veux construire dessus. C' est très commun quand tu veux. C' est un travail sur un projet open source, et une autre personne a écrit tous ces grands. Um, vous savez, les fonctionnalités autour. C' est une communication avec un ah, avec un Arduino um, sur votre, hum , , que vous pouvez connecter votre ordinateur portable, Hum, Hum, et vous voulez construire les orteils à partir de nos orteils au-dessus de ces bibliothèques. Ensuite, vous pouvez hériter de ces bibliothèques ou des classes que cette bibliothèque définit sans avoir à répéter tout le travail que ce développeur plus ancien a fait. C' est donc une chose très puissante que la programmation orientée objet nous permet de faire en Python . Donc disons ça, et je veux créer un nouveau type de véhicule appelé camion, mais cette fois, mais cette fois, au lieu de le laisser vide, je vais passer la voiture a demandé le, um, comme le la classe de parent là-bas est comme un genre de parent, euh, enfant, euh, euh, peu comme une relation. Et là donc ce camion de classe, quand je fais ce camion de classe, il hérite de l'innit ? Méthode et la méthode get marque, donc je peux fondamentalement c'est la même chose. Mais alors je vais, genre, définir un nouveau genre de, comme la méthode sur le dessus, qui pourrait être, disons, Ah donc voiture ou base ou plutôt, ce tocar donc j'aurais un méthode tocar. Et je vais dire quand ? Quand ? Quand j'appellerai ça , , ça va imprimer la voiture de remorquage, pas vrai ? Alors c'est tout. C' est un camion classique très simple. Donc maintenant je vais mon je vais définir une instance de ça. C' est mon camion et je vais passer le camion en classe. Mais remarquez que je dois passer la marque parce que c'est fondamentalement qui est nécessaire quand j'ai défini, Ah, Ah, la classe camion comme une sous-classe, hum, hors de la classe de la voiture. Disons que c'est un camion quatre, non ? Donc, voyez que ça n'a pas donné d'air ou quoi que ce soit. C' est bon si je monte dans mon camion, hum, hum, qui obtiennent la marque, vous verrez que même si je n'ai pas trouvé cette méthode ici, je l'ai toujours disponible, et ça dit Ford C. Mais mon camion a une chose très spécifique qu'il ne peut pas faire. Le CRAC ne peut pas le faire, qui est une remorqueuse. Donc si je parle, là, c'est une voiture volée. Que croyez-vous que se passe-t-il si j'essaie de remorquer une voiture avec ma Toyota, qui est ma voiture ? Des suppositions ? Eh bien, nous entrons là-dedans parce qu'il dit que cet objet de voiture n'a pas d'attribut. Tocar et c'est dire, attribut. C' est fondamentalement comme une méthode, mais cette méthode n'est pas disponible. C' est ce qui arrive à cette classe originale. Ce n'est pas du tout modifié par cette nouvelle, euh, nouvelle méthode que le camion définit. 20. Modules: Ok, Donc , euh, maintenant nous allons voir comment faire ce genre d'opérations sans utiliser le, euh, le terminal python. Hum, et fondamentalement, on va commencer à créer des fichiers. Donc, pour ce faire, je vais créer un nouveau répertoire. Hum, donc nous sommes ici dans les espaces de travail. Eso Nous allons créer un répertoire appelé tests de module, et, et, comme vous pouvez le voir, il a créé des tests de modèle. Hum, et il n'y a pas de dossiers dans leur cul maintenant. Donc ce qu'on va faire, c'est qu'on va créer, hum, hum, à l'intérieur de ça. Donc, je contrôle juste, cliquez ou cliquez sur. Et nous créons un nouveau fichier ici, et ce sera une voiture froide, pas B Y. Euh, habituellement vous nommez les fichiers comme la classe qu'ils contiennent, mais c'est encore une fois. Ce n'est pas un rouleau dur. Ce n'est pas nécessaire. Acheté ? Hum ah, on va faire ça ici. Souviens-toi à quel point on attaque avant qu'on ne fasse, tu sais, voiture en verre. Hum et puis on va dire en elle auto marque, et ensuite on va faire Ah, auto marque égale marque, peu importe ce que tu passes là-bas. Um et ils allaient faire une autre méthode appelée « Get Brand ». Je veux dire qu'il allait imprimer. Ah, la marque de soi. Hum, donc maintenant on le sauve. Mais quand cette petite boule grise là-bas, cela signifie que nous avons des changements dangereux dans le fichier. Alors assurez-vous que vous toujours vous voyez toujours ce petit X au lieu de la petite grande balle . Je ne sais pas si tu l'as remarqué. Quand j'ai appuyé sur le coffre, il est passé du il est passé du jaune au vert très vite. Ah, le jaune signifie que c'est comme si la demande allait sortir. Et puis faire vert signifie que le serveur, le serveur Cloud neuf. En fait, j'ai pu enregistrer le fichier à la liste en ce moment pour interagir avec cela avec cette classe. Avant de faire quoi que ce soit , , nous ne sommes pas sur ce modèle de répertoire 10. Alors assure-toi d'aller à l'intérieur et tu verras pourquoi, , un peu plus tard. Donc, un autre était avec le même test de module. Je vais appeler l'interprète. Um, le terminal et on va pouvoir travailler avec ça avec ce cours. Donc, le premier pour cela est que vous mettez généralement à partir du nom de fichier sans le P y de voiture d'importation voiture. Donc, je dis à python du fichier p y de voiture importer la classe de voiture afin que je puisse faire des choses avec elle. Comme vous pouvez le voir ici, un nouveau répertoire est apparu ici appelé Pie Cash sur le score, sur le score, par cash sur le score, le score, et à l'intérieur, vous verrez qu'il en a, comme fichier étrange avec Cela se termine en P Y. C. Et c'est fondamentalement c'est la version compilée de ce fichier de carpe. Ey de tout cela, et cela permet essentiellement à Python d'exécuter ces fichiers plus rapidement. Donc, c'est pourquoi par le chinois sont très bon langage en termes hors vitesse, car il va utiliser cette version compilée de votre faute au lieu d'avoir à exécuter le fichier partir de zéro à chaque fois. Donc maintenant, chaque fois que j'exécute quelque chose de Carpi, pourquoi il va regarder d'abord s'il a une version de compilation récente de celui-ci, et alors ce sera peu fait à la place. Et s'il a ouvert cette faute, tu verras que c'est tout qui le donne. Donc, tout est comme du code machine, donc quelque chose à chercher. Aussi, assurez-vous que si vous venez juste d'ignorer le score de l'argent du secteur sur le score dans les répertoires de score, car il n'est pas utile pour vous de le placer dans votre référentiel. Donc maintenant je devrais avoir la classe de voiture A, euh, disponible pour moi en mémoire. Donc je vais faire la même chose que je l'ai déjà dit. Je vais faire une instance hors de la classe de voiture avec la marque Toyota. Hum, et maintenant si je fais ma voiture, obtenir la marque et vous remarquerez ici que j'ai complètement avec d'autres, complet avec robinet. Alors dis ça. Si un président en haut ici, il sait déjà quelles méthodes il a disponibles. Donc c'est assez musical. Donc si tu fais ça, je vais aller en Europe. Souviens-toi comment je t'avais dit d'entrer dans ce répertoire avant. Alors sortons. Vous pouvez contrôler la sortie ou tapez comme ceci, et revenons à l'espace de travail du répertoire de dossiers précédent et passons par trois. Droit ? Et je vais faire la même chose de voiture d'importation. J' ai une erreur. Il est dit pas de nom de module voiture. Donc ce fichier de voiture n'est pas capable de Toby chargé sur le, hum dans le répertoire de ce répertoire signifie donc que se passe-t-il ici ? Donc, fondamentalement, si l'endroit où vous exécutez python fait beaucoup de choses. C' est très important. Et vous ne verrez pas de nom de module. Bloquer beaucoup dans vos carrières est juste, vous savez, essayer de faire un peu de bon sens et demandez-vous, où suis-je en train de courir python ? Est-ce que les répertoires dont j'ai besoin ? , euh Pour ceux, euh, , disponibles pour moi. Donc, la façon dont vous corrigez cette erreur est fondamentalement, vous devez vérifier que vous avez une magie une autre, euh ah, chose ici. Mais c'est mais cette fois il est donc un fichier, et il est appelé dedans b y comme ils dans la classe. Maintenant, nous allons avoir besoin de créer un fichier image dans les tests de modèle. Mais avant de le faire, laissez-moi supprimer ceci. Et une chose que vous voudrez toujours, hum, faire dans votre travail est d'être bien organisée. Donc, quand je supprimerai le fichier par cash et que je vais créer, je verrai le test du module orteil. Et je veux créer un directeur appelé véhicules parce que quand je veux faire c'est que je veux mettre toutes les toutes lesclasses qui ont à voir avec les véhicules dans ce dossier. Alors je vais déplacer la voiture B. Pourquoi ? Dans les véhicules ? OK, donc maintenant les véhicules ont cela et pour tous, être toujours en mesure d'appeler les véhicules A module. D' accord. Je veux créer un fichier appelé dedans B y. donc nouveau fichier. Je vais juste marquer en elle que Ah, et il je vais juste marquer p y. Donc c'est sur ce va marquer dedans sur ce Aller marquer des gens point avec ce fichier, vous n'avez pas à mettre quoi que ce soit dedans, bien que vous peut. Techniquement, euh, je vais dire oui à ça. Non, ne fais pas ça. Ne le garde pas. C' est le vieux tapis. Pourquoi ? Ok, laisse-moi l'ouvrir. Ici. Ici, vous pouvez mettre aussi du code. Et chaque fois que vous importez à partir de ce module, ce tribunal va fonctionner. Mais pour cette fois, on ne va pas faire ça. Ok, donc maintenant remarque que j'ai, hum, hum, ces véhicules qui tiennent leur si je vois ce qu'il y a à l'intérieur des véhicules, je dois à toutes les personnes sur la femme de tapis. Et je vais m'amuser à partir des tests du module de dossier supérieur. Ok, maintenant vous allez remarquer comment le contremaître va changer un peu. Je vais dire à partir des véhicules voiture point importation voiture. Qu' est-ce que Python dit ? Il y a cela du module Véhicules Et qu'est-ce qui définit cela comme un module ? Parce qu'il a un NPD. Pourquoi tirer dans ce dossier ? Donc, il traite ça s'adapte aux véhicules comme s'il s'agissait d'un fichier P Y lui-même. Tu vois quoi ? C' est intéressant. Et puis vous importez le fichier de voiture. Ah, hum, à l'intérieur de ce module de véhicules, et ensuite vous allez importer la voiture de la classe de voiture. Maintenant, je peux faire la même chose. Ma voiture est égale voiture Toyota, puis ma voiture obtenir marque. Vous voyez, tout fonctionne parfaitement bien. Donc, je cours par pouce d'ici à partir de tests de module. Qu' est-ce que j'importe des véhicules ? Carpi ? Pourquoi la classe de voiture ? Ok, donc c'est quelque chose que c'est vraiment important pour toi donc c'est quelque chose que c'est vraiment important pour toide gérer et de pouvoir maîtriser quelque chose que même, tu sais, c'est nous. gérer et de pouvoir maîtriser quelque chose que même, tu sais, Et développeur d'expérience, ce modèle introuvable. Le truc, c'est que tu vas l'avoir. Et tu dois juste, genre, arrêter un instant et penser à toi. Où vas-tu ? L' exécution de python à partir de ceux-ci sont appelés un chemin. Donc tu peux. Vous pouvez également aimer les chemins fins qui peuvent être recherchés. Pour ainsi dire. Nous allons voir cela à travers d'autres cours, mais rappelez-vous d'avoir cela dans ce fichier b y sur votre module, afin que vous puissiez faire des choses avec. Ok, une dernière chose qu'on va voir ici. Ah, cette conférence est Disons que je veux faire par trouvé trois, puis importer le double que je veux aimer Run est correct. Ça fait tout ça pour moi. Comment dois-je faire ça ? Donc on va créer un nouveau fichier au niveau des tests de modèles, et il va faire froid. On va appeler ça de mauvaises personnes. Je vais bien. Et qu'est-ce qui ne va pas ? P i b nous allons faire Vous allez être en mesure de faire fondamentalement ce que nous avons dit ou nous avons fait sur l' interprète Python, mais problématiquement donc nous allons faire la même chose que nous avons fait avant de voitures voiture d'importation. Hum, et maintenant on va faire, euh disons que ma voiture est égale à Toyota, et ensuite on va faire ma voiture. Non, ma voiture. Prends Brent. C' est quelque chose de vraiment intéressant. Vous voyez comment l'éditeur de Cloud Nine est en quelque sorte de charger les modèles ou les méthodes ? Euh, ça va même, tu sais, me dire , quoi ? Quels paramètres dois-je passer et tout cela ? Donc, c'est assez utile. C' est un peu comme me donner déjà des indices sur les méthodes disponibles. Alors c'est ça. On va sauver ça. Et maintenant, au lieu charger le terminal Python, nous faisons juste python trois Run B Y. Et voilà. Tu prends Toyota. C' est ce qu'il a couru tout ça. Toutes ces commandes et ça a été imprimé au yoga. 21. Paramètres: Ok, la dernière chose que je veux couvrir ici avec notre combat. Mais l'introduction python est des arguments de fonction ou dans ce cas, arguments de classmethod. Et vous verrez beaucoup cela dans le travail quotidien. Donc, il y a deux types d'arguments fonctionnels, um, ou arguments de fonction plutôt. Et ce sont soit des mots-clés, types um ou des temps de position. Et ce que cela signifie, c'est que quand vous avez, ah, méthode comme get brand dans ce cas, nous n'avons pas d'arguments étaient non, nous n' avons pas besoin d'arguments à passer. Cependant, il peut y avoir une instance où vous voulez avoir, euh, une autre fonction. Et c'est un super qui s'appelle porte ouverte pour notre classe de voitures. Et dans ce cas, je vais dire, Ah, numéro de porte est un paramètre ou ah, un argument pour ça pour cette méthode. Donc, ce que cela signifie est que vous devez passer dans ce cas une fonction de porte ouverte, orteil cette classe ou plutôt cette instance de voiture, et définir le numéro de porte que vous voulez ouvrir. Donc, disons que c'est un pour le conducteur et deux pour le côté du conducteur , puis trois et quatre pour les deux à l'arrière de la voiture. Et, tu sais, je suppose que c'est une voiture à quatre portes. Donc dans ce cas, je vais juste dire, hum, hum, faisons une déclaration d'impression et je dirai Ouverture de la porte et ensuite, hum va juste taper le numéro de la porte et faisons que c'est nous trois str parce que c'est ah, c' est un nombre. Et c'est comme ça qu'on devrait pouvoir aller incarner ces deux cordes, non ? Donc on a sauvé cet eso ici. Ce que je définis, c'est que le numéro de porte est en fait un argument positionnel parce que c'est le 1er 1 Ok, et nous verrons. Nous verrons un meilleur exemple quand j'en ferai un autre, mais jouons avec ça. Je vais juste diriger le terminal et, euh, euh, disons de la voiture des véhicules, de la voiture d'importation de voiture Oh, je pense que je ne suis pas dans le bon répertoire, alors allons aux tests de modèles et réessayons ça. Alors on y va. Donc maintenant nous avons vous savez, c'est ma voiture, les véhicules et l'exemple de voiture, et je crois que maintenant nous devons passer un pétillant dedans. La marque, non ? Donc c'est une Toyota. Donc si je fais ma voiture pour obtenir la marque, euh, on l'aura, mais remarquez. Donc je vais essayer d'ouvrir une porte, accord. Alors disons ce qui s'est passé ? La porte du conducteur. Alors je dis, ouvre la porte. Et si je ne fais rien de mieux, je vais y entrer parce que ça veut dire que ça nécessite un numéro de porte d'argument de position. Mais cela signifie qu'il sait que la fonction exige que le premier fasse le surnom positionnel ici. Le premier argument doit être une sorte de valeur off dont la fonction a besoin. Donc je vais essayer à nouveau. Je vais dire ma, euh, ma voiture, ouvrir la porte 1. Alors maintenant, j'ouvre la porte 1. Si je passais aussi, j'ouvrirai des portes pour que vous puissiez voir que ce viable a été assigné ici. Quand, quand j'appelle cette fonction et puis c'est qu'il l'imprime ici, et c'est un peu comme disponible pour cela pour cette fonction à partir de là. Ok , maintenant détruisons un autre. Une autre méthode que nous allons ajouter, qui va être, euh, nous allons avoir une fonction ah ou une méthode pour ces cours qui me permettra d'allumer ou d'éteindre les qui va être, euh, nous allons avoir une fonction ah ou une méthode pour ces cours qui me permettra d'allumer ou d'éteindre leslumières clignotantes. Ok, donc disons sourds, hum ah, contrôle des clignotants. Et ce qu'on va passer ici sera laissé. Ah, clignotant et clignotant droit. Donc je vais devoir dire que c'est allumé ou éteint. D' accord ? Et ici, je veux garder, genre, le statut hors des oeillères dans le genre de la classe elle-même. Donc je vais dire que le clignotement gauche est égal à gauche clignotant auto droite. Le clignotement est égal au clignotement droit. Et je vais juste dire, hum imprimer, euh, je veux dire à gauche. Et puis le statut de cet éditeur de liens et puis à droite, Str donc droit de cligner des yeux, OK. Et, hum, fermez ça. Donc ce que je vais faire, c'est que je vais vérifier avec un si pour que je puisse allumer et éteindre. Donc si on laisse clignoter, euh en fait, non, ça ne marchera pas. Et je vais vous dire pourquoi dans une seconde, donc nous devons passer les deux fonctions. Ok, donc encore une fois, je vais faire le python ici, et je vais importer et mettre une instance hors de la voiture. Donc maintenant je vais faire le contrôle de mon point de voiture clignotant. Mais j'ai besoin de passer à gauche Linker égal, dire propre et le clignotement droit est égal. Donc maintenant ça dit que le clignotant gauche est allumé dans le Blinker droit vous-même, mais vous savez, quand vous conduisez la voiture, vous ne tirez pas vraiment ou ne passez pas les deux choses. Soit vous avez passé l'un, soit vous passez l'autre. Je suis un petit levier, non ? Quand vous mettez l'orteil du levier, vous savez, position verticale, vous tournez à droite. Et puis si on le met en position basse et que c'est que c'est vous allez à gauche, donc je ne ferais pas que la fonction se comporte un peu comme ça. Mais le problème est que je dois passer les deux. Alors que se passe-t-il si je passe ? L' aile droite ou le clignotant gauche ? Seulement, j'en ai un autre. Il dit qu'il manque un argument positionnel requis, clignotant droit. Donc vous voyez ici c'est comme dire que je dois passer le ah, le 2ème 1 et donc c'est un peu ennuyeux. Droit ? Alors qu' est-ce qu'on fait là ? Donc, nous avons la possibilité de faire quelque chose ici, c' est-à-dire qu'on convertit ça au lieu d'être un argument positionnel, on va faire ceci s A S. Ah, c'est ah, argument mot-clé. La façon dont tu fais ça, c'est que tu peux mettre un signe égal ici, ok ? Et puis vous pouvez pré ah, charger la valeur de ceux de ces arguments. Et, euh, et à partir de là, c'est ah, ça va être optionnel ou ou, en gros, tu peux le transmettre ou le désactiver. Mais, euh, commençons par celle-là avec le bon clignotant. Donc, vous voyez ceci comme cela fonctionne. Donc, je vais dire que la valeur par défaut du clignotant droit va être désactivée. Ok, donc si tu ne passes pas ça, c'est bon. Ça va être la femme va dire d'accord, aile était impasse. Donc, c'est bien. Je vais juste enlever l'orteil par défaut de Preed. Donc tu vois ça en action ? Donc nous allons faire ça, hum, important, et ensuite je dirai que ma voiture est Toyota et maintenant je vais juste passer le 1er 1 qui nous a donné un jamais auparavant. Alors voyons ce qui se passe. Tu vois, maintenant je ne peux passer que le 1er 1, je veux dire, le clignotant gauche et tout le monde et moi n'avons pas besoin de passer. Donc c'est à partir de ce point, c'est Il s'appelle un, um, un argument de mot-clé parce que le mot-clé est un clignotant droit, et il sait déjà que cela pourrait être ou ne pas être passé à la fonction. Une règle d'or que vous devez savoir est que vous mettez toujours au-delà des paramètres positionnels ou requis vers la gauche, puis ils sont une fois optionnels. Um, ou clé étaient des arguments pour le, euh donc le droit oh sont fondamentalement à la traîne. Donc, listez toujours ceux qui ont besoin d'abord, puis ceux qui sont facultatifs. Ou avoir une valeur prédéfinie orteil, le côté de fuite. Donc maintenant je peux vraiment faire ce que je voulais faire au début, qui waas ont fondamentalement ce genre de sur une base totale. Donc, si je mets les deux par la faute sont éteints, je peux dire si le clignotement gauche est égal à, puis mettre l'éditeur de liens auto-éclairé à allumer et ensuite mettre le clignotant droit à éteindre et la même chose. Um, si l'éditeur de liens droit, alors c'est comme d'autres. Si sinon si le clignotement droit est activé, alors vous voulez um, essentiellement mettre l'orteil de clignotement droit cette valeur et éteindre l'éditeur de liens gauche s'il était déjà allumé et retirez cela. Donc maintenant, la fonction va être si j'ai passé le 1er 1 nous, alors le clignotant droit va être éteint. Et si j'ai passé le clignotant droit, alors les penseurs de gauche seront éteints. Voyons si ça marche. Um courir abasourdie, elle a mangé la voiture. Parfait. Alors je vais faire ma voiture. Ah, contrôle des clignotants. Et puis je vais plus clignotant gauche égal à. Alors quoi ? Ce qui se passe ici, c'est de transmettre ça. Donc, même si la, um, la bonne valeur de clignotement peut être activée, elle sera désactivée. Alors voyons que les mots. Ok, parfait. Donc maintenant j'ai la gauche s'attarde et la droite est éteinte. Alors que se passe-t-il si j'achète le passé le bon clignotant ? Je vais tourner à droite, à droite. Alors maintenant, ils voient la vie. Celui de gauche a été déplacé, et, euh, celui de droite a été retrouvé. Donc je sais qu'il y a, euh, chose rapide que je veux mentionner est que si vous pouvez, vous pouvez aussi passer ou faire que ces paramètres ne soient pas. Et ce que cela signifie, c'est qu'il pourrait même pas être passé, et ils vont être initialisés avec une non-valeur. Donc c'est comme ça que tu te plais. Aucun paramètre que vous voulez pouvoir passer ou ne pas passer. Ça n'a pas vraiment d'importance. Et vous pouvez, hum et vous pouvez faire, vous savez, vérifier s'ils sont tristes ou ce qu'ils peuvent être. Ils peuvent être passés la dernière chose. Et encore une fois, ce n'est pas à vous de le rappeler. Comme, si c'est un nécessaire, mettez-le toujours au début, puis ceux qui ne sont pas nécessaires à la fin. Alors c'est tout. Je pense que nous sommes prêts à commencer à construire notre application Fleiss et, vous savez, jouer un peu avec ça et avoir, euh, vous savez, vous savez, faire un peu de plaisir, plus de fonctionnalités orteil notre classe de voitures. Hum, et vous savez, si vous avez des questions, faites-le moi savoir 22. Nouveau virtualenv: Parfait. Donc nous allons commencer notre flasque, euh, aventure ici, et nous allons commencer par créer un nouvel espace de travail et, , gros,commencer notre première application flasque. Créez donc un nouvel espace de travail. Tu vas devoir définir un nom de projet ah. Euh, et on va appeler ça le, euh bonjour ? En haut. Um, vous pouvez mettre la description de Trump là. Il n' y a pas besoin de ça. Vous pouvez aussi, hum, rendre cela privé ou public pour les clients payants que vous pouvez faire. Um, je pense que plus d'un. Si vous êtes comme un client gratuit, vous ne pouvez que le seul compte berbère privé. Et vous pouvez également cloner à partir du dépôt existant, euh , mais pour nous, nous allons commencer à partir de zéro. Hum, donc il y a aussi ces modèles ici. Tu peux faire, tu sais, la coutume. C' est Theo Bone pour essentiellement logo. Un personnalisé ouvert à l'installation. Vous pouvez faire ce qu'ils peuvent avoir cinq. Non Js. Toutes ces choses allaient utiliser la coutume ici et ensuite créer un espace de guerre. Donc maintenant, il s'agit essentiellement de créer un nouveau serveur pour nous. Hum, et, hum, ça prend un peu de temps pendant que ça crée ce conteneur, que je, comme je l'ai mentionné avant, il utilise des conteneurs docker. Alors on y va. Nous avons notre conteneur là une chose que je vais vous dire tout de suite de la chauve-souris ceci. Bonjour, c'est quelque chose que je vais probablement contacter See Cloud 9 pour voir s'ils peuvent changer ça. C' est un peu trompeur car il semble que vous étiez dans un dossier bonjour. Mais si vous voyez PWD, vous êtes en fait à la maison une aubaine pour l'espace de travail. Donc, euh, ça fait essentiellement référence à laisser orteil le dossier de l'espace de travail et pas le, hum le bonjour haut Il n'y a pas de dossier bonjour là-bas. C' est quelque chose qui m'a fait trébucher un peu et ça a trébuché. De plus, certains , certains de mes élèves, il y a aussi, comme, comme, naviguer et commandes ici, mais je le garde toujours sur l'espace de travail là-bas. Donc, hum, créons sur le dossier réel pour notre premier projet ah. Donc on va faire l'air, et on va l'appeler flasque. Um, soulignement dedans. Toujours utilisé, soulignement pour les dossiers sur vous pouvez également utiliser Stashes. Le système fautif vous permettra. Mais si vous faites travailler sur python, vous allez monter des demi-modules que, hum, que vous allez devoir importer le centre. C' est très à utiliser sur la partition. Donc, dans un dans fondamentalement une règle d'or que vous voulez avoir à partir de maintenant est que toujours avoir des noms de dossiers avec sur ce cours et pas des tirets. C' est pour ça que je t'ai recommandé de mettre un tableau de bord ici. Donc vous vous souvenez que ce n'est pas un dossier. Alors, mais bonjour ou, vous savez, quels que soient les mots temporaires par tirets jusqu'à ce que vous vous souveniez. Bon, maintenant on est dans la fiole. On va aller dans la fiole, non ? Dossier ? Et c'est comme ça que sont fondamentalement notre dossier d'accueil là-bas. Et la première chose que nous allons faire est, euh, nous allons avoir, euh, nous allons créer fondamentalement quelque chose appelé un environnement virtuel. Qu' est-ce qu'un environnement virtuel ? L' environnement virtuel est, um a Il sépare chaque projet où vous avez, vous pouvez avoir plusieurs projets. Étaient tout simplement peut avoir une fiole en elle. Projet que vous pouvez en avoir un autre comme, le problème de blocage des appartements que nous allons faire après. Ça va être un autre dossier ? Et puis chaque dossier aura ses propres bibliothèques, hum, hum version de python, et vous serez en mesure d'exécuter tout cela dans le même serveur. Donc c'est une grosse affaire. C' est une bonne chose. Et cela vous permet de suivre quelles bibliothèques ? Vous installez ce dossier à l'aide de quelque chose appelé Un fichier de configuration requise. Mais ne vous inquiétez pas pour tout ça. On va voir ça à travers un autre cours. Pour l'instant , , assurez-vous juste que vous avez créé votre dossier, et maintenant nous allons créer cet environnement virtuel. Alors, comment créer un environnement virtuel ? C' est très facile. Vous utilisez virtuel et qui est cette commande qui, um qui est, um nous permet de créer cet environnement séparé. Et puis vous allez dio en gros, vous mettez un dossier ici où si bien, où ces fichiers, ces bibliothèques, ces versions python dans lesquelles nous allons vivre. Mais parce que nous utilisons Python trois et boom vers ou au moins cloud neuf, vous pouvez vérifier la version ici. Mais si vous faites python, c'est le destin. Vous verrez que c'est à partir de 2.7. Donc, nous voulons faire un environnement de veto qui utilise par de trois. Donc, pour cela, vous faites virtuel et ensuite vous passez Dash B, qui est la version python, et vous mettez par téléphone trois. C' est essentiellement l'exécution à base de plantes sur laquelle nous allons utiliser. Alors le nom des dossiers va être jaloux. Tu peux y mettre n'importe quel nom. Cependant, c'est plus facile si vous l'utilisez toujours le même nom, parce que vous savez que ce sera une seconde nature pour vous aussi, aussi, toujours activer cet environnement virtuel, et vous allez voir que dans un peu. Donc virtuel em tableau de bord être Faison, trois VND. Donc, ce qui se passe là, c'est qu'il crée un nouvel em virtuel avec python trois dans la fiole. Innit ? Dossier. Donc maintenant, hum, si nous voyons ici, vous verrez qu'il a un nouveau dossier appelé Virtual Environment. Si vous regardez là, vous allez voir Ben, qui est essentiellement quelques commandes dont la retraite a besoin pour exécuter une autre. Voir le monde de Lib Labour. Le virus vivra et si vous cliquez ici, il y a python 3.4 et puis le paquet latéral va être un autre important parce que c'est là que les anciens paquets ou les bibliothèques et lorsqu'ils sont volés, vont être installés sur. Donc, pour l'instant, sachez juste que nous avons ce dossier V et V p um là-dedans. Alors, maintenant quoi ? Qu' est-ce que tu fais ? Vous devez essentiellement activer cet environnement virtuel. Activer signifie qu'à partir de maintenant, tout le début pour installer des choses et pour exécuter des choses va être fait comme si c'était un CIF Cet environnement était tout votre serveur. Donc, la façon de faire ce problème doit mémoriser les jours, mais vous êtes, vous vous souviendrez que c'est vous le faites encore et encore. Vous faites Source V E N V. Quel est le dossier avec elle avant été activé. Ok, je veux que tu le regardes. C' est ici. Tu vois comment maintenant il a une parenthèse au début ? J' ai envie. Cela signifie que l'environnement virtuel est activé. Ne le fais pas Et je le répète en lettres gras devant rouge. Ne faites rien avec votre projet à moins que cette chose d'envie V est sur le début de la faute, um, structure ou l'invite, structure ou l'invite, parce que sinon de mauvaises choses se produiront si vous, vous savez, installez des paquets et que V et il n'y a pas d'allumage. Il ne va pas les installer ici sur B et B ça va les installer sur le côté ou sur le serveur et beaucoup de choses vont arriver. Alors rappelez-vous, euh, toujours avoir ce V et être là. Alors, nous allons comment fonctionne l'acte Comment vous désactivez ? Eh bien, une fois que vous êtes activé, vous tapez désactiver, et vous sortirez. Tu vois, maintenant il n'y a plus d'être et d'être là. Euh, mais rappelez-vous que vous savez que vous avez pris votre café, que vous ouvrez votre nuage neuf. Pour commencer à travailler, vous allez dans votre fiole de répertoire ou quel que soit votre produit fonctionne et sans, n'ouvrez même pas l'éditeur. Ne faites rien faire de source que d'être actif et appuyez sur ces types. Vous avez juste à jouer comme, tapez comme deux lettres votre onglet spreads, et il va commander complète et assurez-vous que vous avez que ve et être au début. 23. Pip Install Flask: Ok, alors maintenant, installons la fiole. Donc, clignote une essentiellement une collection de bibliothèques. Et, euh, rappelez-vous que nous avons l'envie là-dedans. Ça veut dire qu'on est bons. D' accord. Ne faites pas cela sans cela. Aussi, juste pour vous assurer que vous êtes sur la souscription, la version lumineuse de l'iPhone, et que l'environnement virtuel a installé la bonne version. Juste un python hollandais, être si vous ne voyez pas 34 Vous voyez, vous savez, deux points quelque chose et vous ne voyez pas trois points quelque chose que vous connaissez, votre mettre votre propre environnement. Ce n'est pas défini, hum, ou activé. Ou vous n'avez pas passé le drapeau de tiret p correctement et il n'a pas trouvé de python. Trois. Exécutez à base de plantes là-bas. Espérons que ce n'est pas le cas. Vous devriez avoir python trois 0,4 ou quelque chose de similaire là-dedans. Ok, donc on a ça. Alors, comment installer les paquets ? On utilise quelque chose qui s'appelle Pip. C' est l'installateur de paquet vélo par téléphone qui nous permet de simplement, vous savez, faire pip installer X, et ça ira dans le, vous savez, sur Internet. Recherchez ce paquet, et puis s'il le trouve, puis l'installe localement et il va l'installer à nouveau dans ce ve et être python de travail. Trois paquets latéraux. Donc je vais laisser ça ouvert, voir si on peut vérifier quand la fiole est installée. Donc, comme je l'ai dit, tu paies un stand de ping, et ensuite on doit juste passer le flasque. Et en appuyant sur Entrée, permettez-moi de mettre ça un peu plus haut ici. Vous verrez tous les paquets installés là-dedans. Oui, donc vous pouvez voir ici. Il y a maintenant une fiole. Ah ah, dossier Flex. Il y a aussi un job de Jean . Il y a un coffre-fort. Si vous lisez les fonds qui ont été volés la même chose que vous voyez qu' il y avait un flacon de gingembre de soja à son dangereux coffre-fort. Donc, ce sont de vieilles bibliothèques qui clignote nécessite que deux fonctionnent correctement. Mais, vous savez, vous devriez voir quelque chose qui est une fiole installée réussie et tous ces autres fichiers si vous avez des erreurs, vous savez, essayez de vérifier si vous manquez quelque chose. Si tu l'as mal tapé. Ah, etcetera. Tu devrais aller bien. Et ça veut dire que maintenant la flasque est disponible. Hum, donc c'est tout. Nous allons maintenant dans la section suivante, commencer à construire notre application ou notre première application d'appartements plutôt pas à pas et commencer à construire notre application ou notre première application d'appartements plutôt pas à pas et allons-y. 24. C9 Python Path: Donc, je voulais faire cette clarification parce qu'il y a quelque chose que cloud neuf a récemment changé en termes là-bas. Um, lien sur. Prêt est un peu comme un logiciel de programme qui vérifie constamment si vous avez sorte de, comme des erreurs ou des erreurs sur le code que vous écrivez. Et récemment, ils ont été un peu comme améliorer leur support téléphonique pour, vous savez, des choses comme, euh, euh, peut-être moi et, euh, mieux, mieux genre de liaison et de soutien. Et une chose qui a introduit que ce n'est pas, hum, n'aide pas. Euh, peu comme notre La façon dont nous avons écrit le code est que, euh maintenant, vous devez aimer, euh, spécifiquement, euh, leur dire ou dire à l'éditeur le chemin où votre les bibliothèques d'environnement fonctionnent, et je vais vous montrer un exemple. Et donc vous avez une idée de ce dont je parle. Donc j'ai un test d'importation, euh, espace de travail, et je vais faire un nouveau fichier ici, et, euh, donc je vais remorquer, test d'importation, euh, espace de travail, et je vais faire un nouveau fichier ici, et, euh, donc je vais remorquer, En fait, laisse-moi le sauver. Ensuite, nous créons le fichier à partir d'ici, et vous, et je suis appelé. Papa. Allô ? J' ai donc un visuel pour Eddie qui ont une fiole importée, je veux dire, installée dedans. J' ai donc un visuel pour Eddie qui ont une fiole importée, je veux dire, Et comme vous pouvez le voir ici, si je vais à côté des paquets, vous verrez que je l'ai fait. J' ai une fiole là-dedans, non ? Cependant, , il y a un petit problème maintenant que, hum si je vais de l'avant et commence à faire mon code et je me souviens que vous devez aimer, um source, euh, environnement virtuel. Activez ici. Mais c'est avant ça. Um, si tu fais de ah ah flasque import flasque. Droit. Et vous essayez, comme, comme, continuer à travailler dans votre base de code. Tu verras que tu finiras par devenir, genre, un peu rouge. Tu verras que tu finiras par devenir, genre, Signez ici en disant, comme signifiant que les rédacteurs de la cour ne trouvent pas de flasque. Signez ici en disant, , Parfois,ça prend un peu pour apparaître, mais, euh, euh, c'est si je peux ouvrir un autre c ouvert. Lisez-moi ici. Je regarde Harris Ceci ici et voir. Je reçois ça, genre, incapable d'importer le flacon. Et oublions ça un instant. Donc, ce qui se passe ici, c'est que c'est, um l'éditeur n'est pas capable de ne pas trouver où les bibliothèques ce que ce flask, et il regarde actuellement juste le chemin actuel, euh, où le chemin python qu'ils ont pré-installé, qui est celui sur le, euh, sur le serveur principal. Donc, ce que nous devons faire pour que cela disparaisse et vous verrez un accès correct pour d'autres choses qui sont des importations à partir de vos paquets d'environnement virtuel. J' ai parlé à Toe Cloud 9 et ils ont été très utiles. Et essayez de, euh, euh,un peu comme travailler avec moi ce problème Mais ce que vous devez faire pour obtenir le rouge les Xs rouges disparaissent, c'est que vous devez dire explicitement à l'éditeur où les paquets latéraux votre virtuel sont, et la façon dont vous le faites est la suivante vous allez à la re envy go lib. Alors ouvrez votre live ici, puis allez au bison 34 à droite, puis allez dans les paquets Sai et ils font un clic droit là et utilisez Mettez quelque chose qui dit terminal ouvert ici. Si vous voyez que, hum, il vous emmènera à l'orteil, l'orteil, ce chemin et puis vous juste dopey wt qui est, vous savez, répertoire de travail de personne sur vous obtenez ceci ceci ceci ceci chemin, c'est le chemin depuis le début. Je veux dire, de la racine du serveur à vos paquets secondaires de votre environnement virtuel. Alors assurez-vous juste de copier leur, hum commande, voir ou contrôler. Tu vois ? Et puis vous allez à l'engrenage ici et là où il est écrit, euh indices, et je veux dire le soutien linguistique. Vous voyez, il y a un chemin de bison là-dedans et vous voyez ça il y a deux patsy là-bas. Ce sont ceux du serveur. Assurez-vous d'aller à la fin de la ligne, mettez un point-virgule, puis collez le chemin de vous. Copie-le. Donc vous voyez, ici c'est le paquet de sac, Une épice sur 34 l'envie en direct, etcetera. Et, comme vous pouvez le voir ici, il a la même chose. Ma colonne serait avant là, celle qui était déjà là. Donc, vous appuyez sur Entrée. Tu n'as pas besoin de faire comme, disons, disons, pour quoi que ce soit. Il enregistre automatiquement cela, puis ferme et ferme celui-ci aussi, et vous voyez que cela va disparaître dans une minute. Parce que maintenant on trouve que le chemin était pour flasque,donc tu peux continuer à travailler ici. Parce que maintenant on trouve que le chemin était pour flasque, Hum, et ça finit par disparaître. Tu vois ? Alors c'est le truc. C' est un peu de tracas, tracas, parce qu'avant, du moins quand je travaillais avec ça, ils n'avaient pas ce problème. Mais maintenant, tu as besoin d'orteil faire ça. Vous devez définir votre chemin python. Et à la, euh, à cette bibliothèque, euh, ce chemin de paquets latéraux sur si vous en voyez un, n' importe quel peu d'accès droit avec l'un des paquets essayant d'importer, peu comme regarder où ils sont stockés Et si vous n'avez pas ce genre de goût ici, mais il est installé ailleurs dans le spice et 34 um, peu comme des répertoires. Il suffit d'aller de l'avant et de mettre un autre point-virgule et au chemin où le chemin contenant ou le dossier où ces bibliothèques. C' est donc la mise à jour. Espérons que cela résoudra tous les problèmes. Et si vous avez des problèmes, il suffit de me penser 25. App: Ok, alors commençons notre flasque. Um, voyage ici. Hum, vous devriez avoir l'espace de travail de l'application de la poignée là-bas. On va aller de l'avant et l'ouvrir. Um, parfait. Donc maintenant, nous avons notre environnement virtuel, euh, dans la fiole. Innit ? Dossier ? Alors tu te souviens, Allô ? Dash up. Ce n'est pas un dossier. C' est juste le nom du, hum du serveur de leur espace de travail et une fiole dedans est le dossier réel que nous avons créé. Et puis l'environnement virtuel est l'environnement virtuel. Alors avant de faire quoi que ce soit, rappelez-vous ce que nous devons faire ici avant de commencer à coder ou à faire n'importe quel type d'opération . C' est vrai. Nous devons activer notre environnement virtuel. Donc vous faites des plaies Vande étant activé. Et rappelez-vous, vous devez être là sur la fiole. Innit ? Dossier. Donc si vous par hasard c'est ah, Contrôle. Tu vois que, hum, c'est un ton dans ton espace de travail ici ou à la maison. Vous voyez la fiole de l'espace de travail dedans, puis dans leur vous faites la source. Hum, désolé. Des plaies. Van étant actif. Ok, Maintenant que nous avons RV et être là, cela signifie que nous sommes bons pour aller, il est clair l'écran et le Stipe commence à taper notre première application appartements. Ok, alors créons le fichier où nous allons démarrer l'application. Laisse-moi fermer ça. Lisez-moi parce qu'on n'a pas besoin de ça. Et à la fin du dossier, euh, le saut. Super. Et je vais brièvement disparaître le terminal Dis en faisant une fuite de contrôle. Donc, nous allons grandir votre dossier ici, et ça s'appellera Bonjour, P, assurez-vous qu'il est sur la fiole innit ? dossier, et il est au même niveau qu'ils ve Mo. Maintenant, double-cliquez là pour l'ouvrir. Et donc la première chose que nous allons faire est, euh nous allons taper le flacon d'importation comme vous vous en souvenez de la leçon des modules que nous venons de voir dans la section précédente. C' est juste dire à partir de la fiole d'importation de fichier de flasque. S' il n'y a pas de directeur de flasque ici, comment le trouve ? Eh bien, donc le fait est que nous avons vu un endroit de l'activation V envie, euh, les yeux python ont dit de chercher des fichiers dans ce côté paquet une houle d'autres répertoires. Donc cette fiole, hum, dossier ou dossier ? C' est être, hum ah, référence. Il y a en fait cette fiole ici. C' est comme ça qu'il est capable de le trouver. Mais continuons à partir du flacon d'importation. Hum, généralement, il y a la première chose que vous devez faire sur l'application flash est de définir une instance hors classe flask en faisant cette ligne égale flask et puis une méthode magique signifiée appelée nom sur ce Aller au nom de score sur ce Aller marquer ce nom ou le département ou qui est passé ici est juste pour vous assurer que vous avez sur une application unique , um, nom, um pour l'instance de flask. Et sur ce genre de nom de partition contient juste une chaîne qui, selon l'endroit où vous appelez ce fichier, sera soit le soulignement principal soulignant le score s'il est appelé du terminal, soit il va être appelé bonjour s'il est appelé à partir du terminal python. Donc fondamentalement juste côté qui est généralement ce que vous faites, um, pour vous assurer que vous avez une instance unique hors de cette application flask. La prochaine chose est, on va définir ah route et autour de ça, le ton que tu vas frapper, et ensuite on l'a mis ici. La prochaine chose est, on va définir ah route et autour de ça, le ton que tu vas frapper, Donc, vous voyez, um, ce peu drôle au signe du début de cette, um, um, hors de cette méthode de l'instance de l'application est appelé un décorateur, et un décorateur signifie généralement modifier la ligne suivante ou le prochaine chose qui se passe après ça, Um, avec une sorte de comportement et ce que nous décorons est cette fonction appelée Bonjour monde. Ok, maintenant, ne t'inquiète pas. S' il y a beaucoup de choses nouvelles qui se passent ici, vous en aurez le coup pendant que nous continuons à jouer avec ça. Mais en gros, ils trouvent une fonction dans ce fichier appelé Hello World, et nous allons revenir. Hum, bonjour, monde. Je ne crois pas que nous ayons vu le retour, mais le retour indique essentiellement une fonction quand elle est terminée. Um, ou quand il arrive à ce point, juste jeter ce qui est viable ou une chaîne ou, euh, euh, expression que vous avez après le retour à celui qui l'a appelé. Hum, et on va voir comment ça marche dans une seconde. Donc maintenant on va dire si le nom, ce qui est la même chose magique que nous avons ici. La méthode magique. Si le nom est égal à main, cela signifie que cela a été appelé à partir du du terminal à partir de la ligne de commande et non à partir du python. Um, terminal. Alors on va faire une application qui tourne, et on va quitter que je dis que c'est pour l'imprimer. Alors, quelle est l'exécution Il est fondamentalement créer un serveur. C' est tout le temps d'attendre que quelqu'un frappe une adresse sur cette application. Et, euh, et juste, genre, routé à travers ces routes vers la fonction qu'il correspond en termes de dossier . Um, cependant, puisque nous travaillons avec Cloud 9, il y a quelques choses que nous devons ajouter ici. L' une est, euh avant de faire l'importation là-bas, vous devez affiner un hôte. Donc on va le faire en disant que l'hôte est égal, hum os qui rendent l'environnement viable. Je p virgule 0000 Et cela dit essentiellement l'hôte pour cela, pour cette application va être soit le i p qui est passé par Cloud neuf comme un environnement prédéfini viable. Cela contient les serveurs I P. Et nous devons également définir un port où cela va fonctionner. Et dans ce cas, nous allons, hum, convertir l'orteil en, euh,le euh, port frigorifique viable de l'environnement ou plus de 5000. D' accord. Et puis on ferme ça, d' accord ? Et maintenant nous avons passé cela comme hôte égal hôte, port virgule, sport égal. Ok, donc tu vois comment je reçois, euh, ces erreurs ici ? , En gros, j'ai besoin que je sois toujours disponible, donc je vais remorquer l'importation. Oh, comme et on devrait aller bien. Oh, cet air dit sur le bon nom viable. Ouais, il me manque un autre score, alors tu vois comment nuage neuf centres ? Ça me dit tout le temps, comme si j'avais des erreurs, c'est très, très utile pour les héritiers. Es-tu la ville ? Très expressif. Donc, euh, c'est ah, joli truc de Brickell. Donc, sauvegardons ça, um, contrôle s ou commande s si vous êtes sur Mac et nous devrions être bons là-bas. Alors que se passe-t-il encore ? Hum, nous importons la classe de flasque et l'extension manger une application ou une application en utilisant le trait de soulignement. Nom de soulignement. Ensuite, nous disons que si quelqu'un frappe la barre oblique, qui est comme le domaine supérieur alors exécuté cette fonction et la fonction est appelée bonjour monde et elle revient à chaîne. Bonjour, monde de retour à la personne qui a frappé cet euro. Et puis c'est comme le genre principal d'une partie de coureur du script, qui est, si le nom est Maine, ce qui signifie qu'il est exécuté depuis le terminal. Ensuite, nous allons définir un hôte, qui est l'hôte Cloud 9 et le port Cloud 9, qui est Ah, le I p viable s'il est défini. Si ce n'est pas le cas, c'est 0.0 point 0.0. On a juste un I P C'est, ah, vous savez, essentiellement des explosifs, l'application au monde et ensuite le port est l'entier de l'environnement du port m viable ou 5000 ? Quels sont les flacons ? Valeur par défaut. Si vous exécutiez ceci sur une sorte de machine Lennox ou Windows ou Mac localement, vous n'avez pas besoin de ces deux choses et flash, mais essentiellement exécuté par la faute sur le 5004e. Mais c'est, euh, c'est tout ce que vous devez avoir pour notre première application. Voyons comment ça fonctionne. Alors, le contrôle s'échappe encore, hein ? Pour que nous puissions monter le terminal et nous rappeler que envie doit être là. Il est activé, et tu dois être sur la fiole, non ? Répertoire, et vous devez avoir votre bonjour p. Pourquoi ils sont vos B m v. Um , donc fondamentalement, nous allons faire Python. Bonjour p. Pourquoi OK et appuyez sur Enter Perfect. Donc, il dit maintenant qu'il fonctionne sur HDP zéro points Europe, une fois que vous êtes à bord 08 80, ce qui est fondamentalement comme s'il fonctionnait pour tous ceux qui atteignent le port 80 80 qui est l'environnement de développement du Cloud 9. Mais ce n'est pas vraiment, euh, vous savez, ce n'est pas vraiment le, euh, ce port à l'extérieur, c'est bien en cours d'exécution, vraiment sur le port 80 qui est le normal, vous savez, un peu comme votre URL pour les services P supplémentaires. Alors, comment pouvons-nous voir cela comme, il n'y a pas comment ai-je un peu, regarder l'application en cours d'exécution. Il y a ça. Previ et les fonds de course ne fonctionnent pas avec ceux-ci. aperçu vous permet juste d'aimer prévisualiser un fichier, e-mail annexé ou un contenu statique et exécuter exécute le fichier, mais malheureusement il utilise le python 2.7. Ce n'est pas notre environnement virtuel, et il y a un moyen de l'exécuter, en utilisant le genre de comme vous pouvez modifier ce python exécuter herbal et vous pourriez potentiellement définir malgré inexcusable ici et éviter. Mais je n'ai pas encore trouvé le temps de le faire. Peut-être qu'un étudiant qui a un peu plus de temps peut ah, comprendre cela et mettre un exemple là dans les formulaires. Mais pour l'instant, la façon dont nous voyons où il est en cours d'exécution, où vous allez au partage ici en haut et vous voyez que vous avez sur entrée application et éditeur de prévisualisation est de partager votre code. Um, et l'application est le réel étaient tous là que nous voulons regarder, Lequel est cette chaîne ? Donc c'est fondamentalement que vous travaillez. Euh, votre ah, vos projets Nom Dash, votre nom d'utilisateur point c 9 point io. Donc, si je clique là et que je clique sur ouvrir, vous obtiendrez un autre robinet. Et voilà. Nous avons Ah, bonjour monde, ce qui est Ah, essentiellement notre première obligation de lin en cours d'exécution. Félicitations. 26. Commencer avec Git: Ok, Il y a notre belle application appartements en cours d'exécution. Et comme vous le savez, euh, euh, je suis un grand, euh, je vous recommande, genre, genre, vraiment fortement qu'ils apprennent et, ah, utilisent Get comme contrôle de version. Si vous n'avez pas entendu parler de get ou que vous ne savez pas obtenir beaucoup, euh, il y a certainement bien sûr que je veux vous recommander, qui est la propriété essentielle obtenir cours, qui est aussi ici en vous, Timmy et fondamentalement essentiel obtenir cours vous apprend comme les bases sans entrer dans, comme, vous savez, vous savez, parce que les portes Skip sont un outil très compliqué que vous pouvez faire beaucoup de choses avec ici. Dans ce cours, je vais vous apprendre essentiellement les choses très essentielles que vous devez avoir en tant que développeur pour travailler sur une base quotidienne comme il y a d'autres choses plus spécialisées que vous pourriez potentiellement faire. Et vous pouvez apprendre après avoir suivi le cours. Mais un goût pour les choses de base et pour obtenir vos opérations quotidiennes pour oublier, fondamentalement recommander que vous le faites ou, vous savez si vous voulez. Vous pouvez également regarder d'autres cours obtenir dans una me ou sur Internet, mais je suis sorti comme ça. Vous êtes vite comment nous ferions ça ici. Donc chaque fois que j'ai commencé le projet, j'ai d'abord , vous savez , dès le début, je commence juste à me mettre en place. Donc, vous savez, pour que ceux pour nous le fassent, euh, vous devez être sur le dossier racine, et vous y entrez. Ça crée un get, hum, je rentre. Ah, dossier. Et, euh, nous voulons avoir un fichier ignoré pour que nous n'ayons pas, par exemple, ces répertoires python, um, compilés ou des choses que nous faisons habituellement. J' ai donc un, um un fichier gettinit de démarrage que nous pouvons utiliser, qui est le suivant. Donc être un nouveau top ici et juste aller voir un invité. Doug, vous avez cette barre oblique venant de la série D vous et vous verrez un get ignorer salissure là-bas. C' est le get ni donc vous devriez commencer avec celui-ci. Vous pouvez mettre cru ici, puis copiez et collez ça. Vous pouvez mettre cru ici, Et donc nous allons créer au même niveau au niveau gouverné. Um, nouveau point de fichier est ignoré. Non, j'ai fait ce fichier et mis ceci qui est un bon point de départ pour les fonds que nous n'avons généralement pas besoin de vérifier dans un dépôt. Parfait. Alors maintenant, je vais avoir le statut pour voir quoi ? Quoi ? Ce qui est nouveau doit être ignoré. Bonjour, P. Pourquoi j'ai ces dossiers là-dedans, et je vais commettre ça avec la première venue parfaite. Et maintenant, je peux essentiellement pousser ça pour obtenir le hub à nouveau. Si tu ne sais rien de tout ça, c'est bon. Et vous pouvez continuer le cours sans elle. Je recommande fortement, cependant, que vous vous lancez serait. Et, euh, vous savez, dites-moi si vous, hum vous savez, si vous avez des questions sur la façon d'obtenir le cours avec un rabais, euh, mais certainement recommandera vous pour obtenir un espion de votre ensemble d'outils de développement professionnel . 27. Débogage: Ok, donc nous avons notre candidature ici. , Avec le monde bonjour,Askew peut voir que tout ressemble à peu près le même. Si je vois ici, je vois Bonjour, monde. C' est parfait. Donc je vais contrôler l'évasion et mettre le faire fonctionner l'application à nouveau. Et il y a l'autre monde. Une chose que vous allez vous retrouver à faire beaucoup est d'éditer le code et vérifier le de ceci. Ah, si ce changement a l'air bien et que rien ne se brise alors disons que nous voulons changer le monde des orteils à Bonjour, tout le monde. Hum, j'ai enregistré le fichier et puis je vais recharger la page ici, mais je vois toujours Hello world. Alors que se passe-t-il ? Eh bien, ce qui se passe, c'est quand cette page est déjà, euh, disons que cette application est déjà en cours d'exécution. Hum, ce, ah, cette base de code n'est pas mise à jour parce que rappelez-vous ce que je vous ai dit à propos de l' encaissement de l' application, qui signifie que c'est un peu comme sur un mode statique, et il récupère simplement la version la plus récente de la base de code. Mais ça ne reflète pas vraiment les changements. C' est ça la douleur, parce que ça veut dire que je dois aimer le contrôle. Voir ici et puis mettre python Bonjour, p y à nouveau. Et maintenant, si je recharge la page, alors je verrai mon changement. Mais je ne veux pas faire ça à chaque fois. Droit ? Donc encore une fois, sauvegardons si je change ça à travers Hello world, sauvez-le Et puis nous savons que la page Rien n'est là. Donc une façon de faire le tour c'est, hum, hum, en passant un autre drapeau et ce drapeau, ça s'appelle le débogage. Donc, la façon dont nous faisons cela est de faire ce qui suit, nous avons juste à ajouter un Nous avons référencé l'application, l'instance de l'application. Ce qui est arrivé depuis ici. Et, euh, laissez-moi éclaircir ça et vous mettez le bug égal à vrai. Maintenant, vous ne voulez pas le faire sur un environnement de production car le débogage de l'application est en fait plus faible. Et vous serez aussi nous affaiblir. On verra plus tard. Il affichera les erreurs sur la page. Um, je dis qu'ils se produisent, et nous ne voulons pas faire ça pour, comme notre application face au public. On veut juste, genre, genre, afficher Ah, un générique, vous savez, 500 erreurs ou application là-bas avec un peu comme vous savez, belle image au lieu de comme, cracher, Vous savez, l'erreur par téléphone, les plateaux de stock. Voyons comment ça marche. J' ai fait des articles actifs. Vrai. Laisse-moi revenir sur le serveur, et je vais recommencer ça. sur le serveur, Python avait Opie. Pourquoi ? Donc si je me rafraîchis ici, ça dit bonjour monde. Mais remarquez ici sur le fond que j'ai changé ceci pour Bonjour, tout le monde. Et puis enregistrez comme vous pouvez le voir, il dit changement de détective dans ce rechargement de répertoire, Redémarrer avec cela afin que je n'ai pas à arrêter et redémarrer le serveur. Les changements sont reflétés simplement en appuyant sur refree Load sur le navigateur. Donc c'est une grande aide. Et ça, hum ça t'aide aussi, tu sais, continuer à travailler sur ta base de base sans avoir à aimer, faire le contrôle. Tu vois ? Et puis on a recommencé. Une autre chose cool que nous pouvons faire ici est, euh, quand vous avez des particules d'Abdi vraies. Laisse-moi te montrer avant sans la structure de particules d'Abdi, laisse-moi sauver tout contrôle, au cas où. Laisse-moi te montrer avant sans la structure de particules d'Abdi, laisse-moi sauver tout contrôle, au cas où. tout contrôle, , Et qu'est-ce que je vais faire ici sans les clandestins actifs ? Vrai. Je vais vous présenter là-dedans. Donc une chose que je vais faire, c'est dire que je vais mettre que je suis égal à trois, et ensuite je vais mettre, hum, vous avez visité. Je dois mettre un dollar court parce que je dois mettre un Vous avez visité quelque chose que je vais mettre, hum, je fois. Maintenant, si vous vous souvenez, um, de la , section des chaînes viables, nous ne pouvons pas mettre un plus I ici parce que c'est un entier et c'est une chaîne, donc cela devrait retour en erreur. Que se passe-t-il quand tu n'as pas à le faire ? Barnicle est vrai, et je vais recharger la page. Je reçois une erreur de serveur interne, ce qui est comme cela ressemblerait à la taille normale et c'est préféré au lieu de comme, montrant les utilisateurs publics Ce qui s'est passé il y a, comme un plus, hum, Comme, plus beau orteil de communication. L' utilisateur qui dit quelque chose s'est passé et, vous savez, il y avait quelque chose d'inattendu. Mais quand on se développe, on veut probablement voir ce qui s'est passé. Donc, euh, encore une fois, nous allons mettre les barnacles vraies ici, et nous allons relancer l'application et voir ce qui se passe. Donc, voyez, c'est un message d'erreur beaucoup différent. Maintenant ça nous dit où est l'air, et ça s'appelle la trace de la pile. Comme je l'ai mentionné, il dit fondamentalement, vous savez, de la très dans la paroisse ou la paix interne, Ce qui s'est passé sur faire généralement juste revenir en arrière et un peu comme échapper jusqu'à ce que vous arrivez à aimer la application réelle. Bien qu'après que vous ayez fait ça pendant un moment, ceci, certaines de ces choses pourraient avoir du sens, mais, euh donc, voici l'air qui nous intéresse vraiment. Il dit que le type air peut convertir l'objet int en chaîne implicitement. Donc, cela signifie que je dois mettre une conversion de cette chaîne d'orteil avant de pouvoir l'ajouter à ces deux cordes. Donc ça aide beaucoup. Et c'est quelque chose que, hum, nous pouvons certainement utiliser pendant que nous développons, mais pas pour les vrais comme les utilisateurs publics. Donc, la façon de corriger cela comme vous voulez non, est que je mets remue, je remue autour de cette sauver, et nous avons commencé automatiquement. Et puis si nous rechargeons, nous voyons que vous avez visité trois fois, donc ça marche parfaitement bien. Un autre truc cool que je veux vous montrer, c'est quelque chose qui s'appelle le par Sunday Bugger. Et, euh, je veux juste faire quelque chose ici, E je veux que je ferme un. Et, hum, juste mettre quelques lignes supplémentaires de code visitées égal à moi et ensuite mettre visité ici. Donc je suis juste comme, en commençant par égal à trois. Et puis je suis égal à moi plus un, ce qui serait quatre. Et puis j'aime juste un signe visité orteil I C'est tout un peu off, comme des bêtises, mais je veux juste te montrer quelque chose qui s'appelle Dirty Bugger. Donc, sur le nuage neuf, si vous tapez simplement PDB et que vous voyez cet extrait, vous appuyez simplement sur Entrée. Et c'est quelque chose qu'ils vont utiliser beaucoup de mal, un peu comme, essayent de rentrer pour des insectes. Quoi ? Ce que cela fait, c'est qu'il marche O. R arrête l'exécution du script à ce stade. Et après ça, vous pouvez, genre, aller de l' genre avant, revenir en avant, pas à pas et voir ce qui se passe. Donc, généralement, vous l'utilisez lorsque vous avez une erreur et que vous voyez le numéro de ligne. Vous mettez cette déclaration peut-être cinq lignes avant, ou quelque chose comme ça, sorte que vous pouvez voir ce qui se passe étape par étape sur l'application comme l' acide s'exécute. Donc, quand j'ai sauvé ça, il a déjà enregistré ça. Le changement. Alors maintenant, quand je charge ici, vous allez voir quelque chose, qui est les pages ne se chargent pas. Ça dit, tu sais, c'est un peu comme dans, ah, en attendant un tour à résoudre. Et si vous voyez ici, vous verrez que maintenant nous avons quelque chose d'étrange ici il dit, hum plus grand que Homo appartiennent. Bonjour, p. Y. Y. Neuf. Cela signifie qu'il s'est arrêté à Line a Line 9 sur la fonction Hello World et vous voyez, il y a une petite flèche qui est un curseur, et c'est là que l'exécution de la prochaine commande va se produire. Donc, il est dit que j'égale rue. Donc si je peux réellement interagir ici, voir que tu peux faire des trucs ici pour que tu puisses vraiment aimer Ah, tu sais, imprimer I sur ça va aimer ne rien retourner parce que ce qui se passe est que je n'a pas encore été défini. Mais comme vous pouvez le voir, je peux interagir avec le programme car il était comme figé dans le temps à ce moment-là pour passer à la ligne suivante que vous avez réprimée et ce qui se passe maintenant c'est dit, vous savez. Bonjour, P Y ligne 10. Bonjour monde. Donc, cela signifie que j'égale trois a déjà été exécuté et cela est sur le point d'être exécuté. Donc maintenant, si je fais imprimer, vous verrez que j'en ai trois. Donc ça veut dire que cette ligne a été exécutée et, euh, euh, vous savez, il a été affecté à trois orteils le I. Alors maintenant je clique sur suivant. Il dit visité ical Soit signifie que je dont je plus un que nous pouvons vérifier si je suis en fait parce c'est qui semble bon. Ensuite, j'appuie sur la suivante. Maintenant, je peux voir ce que la valeur visitée est parce qu'il a déjà été affecté à quatre. Donc, oui, vous pouvez voir que vous pouvez aimer, étape par étape. Regardez ce qui se passe avec l'application. Et de cette façon, vous pouvez vraiment traquer tous les insectes. Si je veux aimer, si j'ai vu l'air ou si j'ai fini, tu compresses. Si je veux aimer, si j'ai vu l'air ou si j'ai fini, Voyez ce qui signifie continuer et vous verrez que le, um, le programme continuera même s'il semble s'exécuter à nouveau. Alors je vais voir ici. Et voilà. Il a mis fin à l'exécution, et si je vois ici, il a chargé la bonne page. C' est bizarre d'avoir exécuté deux fois. Je devine parce que je déteste le rechargement. Peut-être, mais généralement que lorsque l'expression, lorsque vous appuyez sur, voir soit il continue et exécute cette fois. Alors, euh, souviens-toi , bébé , c'est cet outil vraiment utile, vraiment utile, le combat sur le bugger pour pouvoir identifier les zones que tu pourrais avoir . 28. Router avec Vars: Ok, sortons cette ligne. Euh, en fait, réfléchissons juste à tout ça et on va mettre ah, bonjour monde à nouveau ici pour le demander. On a commencé. Donc maintenant, nous allons faire un peu plus sur un routage et vérifier comment faire différentes routes pour différentes choses. Donc disons que maintenant, au lieu d'avoir cela demandé la page d'index, je vais devoir utiliser pour être la route bonjour. Donc ce que ça veut dire, c'est que , euh, vérifier si ce rechargé, il est rechargé. Ok, , ce que ça veut dire, c'est qu'au lieu de sortir sur la route, ce qui est, comme, fondamentalement, cette route ici maintenant, les mondes bonjour ont monté votre propre Hello ou barre oblique. Bonjour pour la presse. Entrez là. Je verrai bonjour le monde là-bas. Et puis on a mis ça un peu plus gros. Donc ce qui se passe ici, c'est que je viens de changer la route. C' est ce qu'on appelle une route, qui est le point d'accès pour cette fonction. Hum, et je peux, vous savez, ajouter un autre ici pour qu'il réponde à la page d'accueil parce que maintenant, si je vais à la page d'accueil ici, ça dit, tu sais, c'est un 44 pas trouvé car il n'y a pas de route ici dans ceci dans ce script qui répond à l'index. Donc je vais créer une autre route ici, AP Raut, et je vais appeler cet index, et maintenant je vais revenir ici. Page d'index. Ok, donc c'est ça, euh, allons vérifier la page. Maintenant, voyons cette fuite de contrôle que nous avons chargée. Donc, si je vais à la page d'accueil, je vois et je m'attends à l'année et nous allons vérifier les gars à Cela fonctionne. Oui, ça marche parfaitement bien. Une autre chose cool que nous pouvons faire ici, c'est que nous pouvons passer des virus. Donc le remorquage de ces routes et ces rebelles vont être transmis à la fonction. Voyons comment ça fonctionnerait. Disons, par exemple, que nous avons, ah, page de profil sur les utilisateurs comme, vous savez, Twitter le fait, et nous allons appeler cette route, um barre oblique, puis barre oblique Disons que j'ai passé aime, par exemple, utilisateur um Jorge, qui est mon nom d'utilisateur dans cette application. Mais je ne veux pas, tu sais, couper Jorge et ensuite, tu sais, Jack et toutes les routes possibles, est-ce pas ? Nous voulons juste avoir un itinéraire qui sert la page de profil appropriée pour chaque utilisateur spécifique . Donc, pour cela, nous utilisons cette notion hors viraux, et nous avons juste mis ici barre oblique um supérieure ou inférieure au nom d'utilisateur supérieur à. Et cela signifie que maintenant, tout ce qui, um slash utilisateur slash quelque chose, une chaîne ou un nombre, va être transmis à la fonction. Mais alors, comment la fonction obtient-elle cela ? Eh bien, vous le passez comme paramètre pour ça. Donc, disons qu'on appelle ce profil d'utilisateur show, et qu'on utilise son nom ici, et que l'utilisateur nommé Viable se verra assigner quoi que ce soit. Um, le nombre ou la chaîne a été passé après le signe barre oblique ici. Donc, et nous pouvons vérifier ça en revenant. Euh, mettons notre venue ici. C' est une bonne pratique de toujours commenter ce que les fonctions qui montrent également qu'ils utilisent son profil pour Daddy User. Donc je vais revenir, hum, vous, monsieur, monsieur, et puis plus le nom d'utilisateur. Hum, en fait, on devrait mettre, hum, la ficelle là juste au cas où. C' est un numéro. Bien que je pense que les appartements feront de cela un événement de chaîne même si c'est ah, c'est un nombre, mais je pense que c'est une bonne pratique de juste envelopper la chaîne au cas où. Voyons si c'est rechargé là qu'il l'a fait. Hum, donc maintenant je vais le faire si je vais à nouveau à la page d'index, ça marche. Très bien. Maintenant, je vais vous essayer, Sir Jorge. Et comme vous pouvez le voir, c'est le printemps. Il devient viable à partir de l'euro et le retransmet à la fonction, et il nous le renvoie. Donc, l'utilisateur Hori, si je vous mets ici, j'aurai l'utilisateur Jack. Alors, lisons-en un autre. Mais cette fois-ci, nous allons utiliser quelque chose, hum, froid, hum, pour que nous puissions, euh, essentiellement, nous attendre à quel type de virus on va passer là. Donc on va en créer un autre appelé Post, alors slash post. Et au lieu de juste mettre, je vais mettre le post I d. ici, non ? Et ça va être un numéro. Je sais que ça va être 123 un numéro là-bas. Donc au lieu de passer ça, je peux mettre je anti sur les animaux avant et il saura que ce viable qui va être passé ici sera un numéro. Donc maintenant on va mettre le beau post de spectacle et ensuite passer le post I d. et maintenant, euh, on va revenir, euh, post. Et alors que se passerait-il si je mettais les deux Saidi ici ? Probablement je devrais obtenir à l'antenne parce que c'est ah, c'est être passe un entier, mais vérifions ça. Alors maintenant, nous entendons le post 3. C' est vrai. Donc, je peux convertir et remorquer une chaîne. Donc ça veut dire que quoi que nous soyons en train de passer ici, ce doit être un nombre et extrême, juste un nombre ici. Donc, la façon dont nous pouvons corriger cela est en mettant la ficelle ici aussi. Donc maintenant, si je recharge, je reçois le post 3. C' est parfait. Et alors que se passerait-il si je mettais une ficelle là-dedans ? Disons, Jorge, j'ai un 44 sur ça parce que encore une fois, Flask attend un entier là et pas une force donc, mais au lieu de tomber en panne, ça me donne une belle, tu sais, Je n'ai pas pu trouver cette page au lieu de se casser, donc cela fonctionne assez bien. Une chose que tu vas utiliser, euh, euh, très souvent, c'est ça ? Comme, euh, peu comme mettre, ajouter comme une chaîne à une autre chaîne et des choses comme ça, mais ce n'est pas aussi lisible. , Et vous, si vous avez, comme beaucoup, genre, , si vous voulez mettre comme disons, quelque chose d'autre ici et que vous avez visité, euh x fois et vous avoir à mettre cela à nouveau X Donc c'est qu'il devient encombrant. Droit ? Donc, une chose que vous pouvez dio avec par téléphone et existe présent dans d'autres langues aussi bien est que vous pouvez faire comme une impression quatre matins. Donc, la façon dont vous faites cela est que vous mettez essentiellement où que cette chaîne apparaisse, vous mettez un pourcentage de s pour la chaîne. Hum, et puis vous avez juste mis un pourcentage ici, et ensuite vous avez mis le nom d'utilisateur. Nous n'avons pas besoin de mettre la chaîne là parce que c'est cela va automatiquement jeter le viable ici à une chaîne parce que nous disons que cela va être une force. Ils disent la même chose. Laisse-moi mettre une venue ici. Um, montrer le post avec le i d. donné. Le I d. doit être un entier. Donc la même chose ici. Mais au lieu de mettre un pourcentage s, je peux faire pourcent d, qui est chiffre. Et, euh et je peux le faire maintenant pour cent et ensuite poster I d sans rien. Voyons si ça marche. Hum, alors faisons-le, hum vous, monsieur ou hé, Parfait. Et mettons le post 15 et je comprends ça. C' est beaucoup plus propre à lire, et vous pouvez mettre comme vous, monsieur, monsieur, personne a visité pour cent le temps, n'est-ce pas ? Donc et puis, dans ce cas, vous devez mettre ceci entre parenthèses et ensuite mettre, hum, ce contremaître Donc il faudra comme si la première chaîne était la ficelle et le digitalis. Ça l'a fait. Donc ça marche. Euh, plutôt bien là. Oui. On ne veut pas qu'il trouve Mlle. Donc c'est très bien. Hum, donc c'est tout pour ce Ah, cette conférence. Je pense que tu en as beaucoup. Vous pouvez jouer autour, faire quelques itinéraires personnalisés et voir où ce que vous y arrivez. Et ah, nous allons parler de, hum, nouvelles choses ensuite 29. Url_for: Ok, alors regardons quelque chose de vraiment utile, qui s'appelle l'Ural 4. Et l'euro quatre est une fonction qui permet à flasque de regarder, hum quoi ? Ah, quoi ressemble l'euro ou à quoi ressemble la route pour une fonction spécifique à quoi ressemble l'euro ou à quoi ressemble la route pour une fonction spécifique. Alors quoi ? La façon dont nous allons vérifier cela est la suivante. On va dire, on va prendre celui-là. Et donc vous voyez comment nous avons jusqu'à la route vous sert le nom de dernier utilisateur ici, et il revient à l'utilisateur, sorte que cette fonction est appelée show profil utilisateur. Donc, ce qui se passe est flask sait maintenant que la fonction show profil utilisateur est associée à cette route. Et il y aura des cas où vous ne voulez pas, genre, genre, enrouler cette route, cette fille ici utilise quand j'aime trouver les fonctions parce que vous savez que votre autre peut changer souvent. Et peut-être que tu as cette fille dans de nombreux endroits. Et puis tu veux changer ça, quetu es. Je vais devoir changer, surtout commedans les modèles, que nous verrons plus tard. Et puis tu veux changer ça, que tu es. Je vais devoir changer, surtout comme changer, dans les modèles, Donc, la façon dont nous pouvons, hum, qui affaiblir um pas le code dur que, mais plutôt laisser flasque afficher. Pour nous, c'est à travers, um, dysfonctionnement appelé euro pour Donc, si nous entendons le retour euro quatre et ensuite nous mettons Ah, cela prend fondamentalement au moins un paramètre, qui est le nom de la fonction. Ah, mais vous devez le mettre entre guillemets. Donc, disons montrer le profil utilisateur. Et puis, euh, ce serait tout. Mais la chose est, genre, cela nécessite cette fonction spécifique. Vous montrer jusqu'à présent exige que j'utilise le nom afin que nous puissions passer cela aussi bien. Donc, ici, nous passerions. C' est un, euh, Richard. Ok, alors maintenant on l'a sauvé. Hum, nous devons importer votre pour de flasque. Voilà, tu y vas. Et donc ce qui se passe est maintenant quand quand je frappe le et attendre non. C' est que je ne vous mets pas slash utilisateur slash Richard. Je pointe juste sur Return quoi ? L' euro est pour cette fonction avec si je passe ce nom d'utilisateur, droit. Alors allons à la page d'index ici, et je reçois une erreur, etc. Oh, je dois mettre un viable ici. Le nom d'utilisateur est égal à Oui, donc ce n'est pas un ça. C' est ce qu'on appelle une position voir ici il dit Prend une affiche, un argument, mais deux ont été donnés une position. L' argument signifie que, euh, ce 1er 1 est celui qui prend cette position. La première position est la fonction. Mais après cela, il y a de vieux arguments qui ont besoin de ce que le viable est pour ça, Um, pour ce paramètre dont la fonction a besoin. Donc, nous devons passer. Le nom d'utilisateur est égal à riche. Alors vérifions à nouveau. Et voilà, vous, monsieur Richard. Donc, il ya essentiellement dire que l'euro pour la fonction montrer profil utilisateur si le Houston dans Richer est passé est slash utilisateur slash slash richard. Mais que se passe-t-il si nous changeons d'état ? Toby a utilisé son nom à la place de l'utilisateur. Alors imaginez que nous avions que nous faisions référence à ce que lorsque vous avez, vous savez, le flux Twitter a des profils de titulaire et que vous voulez aimer, avoir Si vous cliquez sur la photo, vous les prenez au profil. Si nous changeons le nom d'utilisateur, utilisateur à nom d'utilisateur ici cette année dans cette campagne rurale, nous devrions changer tous les modèles qui ont la barre oblique utilisateur pour slash nom d'utilisateur . Et ce serait une chose vraiment grande, vraiment grande, douloureuse. Donc, si nous avons utilisé vos anciens quatre, cela signifie que nous modifions ceci et qu'il sera mis à jour automatiquement. Donc si j'appuie sur recharger ici, tu vois ? Maintenant, il est dit, utilisez le nom Richard. Alors rappelez-vous, si vous utilisez votre aîné, vous référencez un euro pour quoi que ce soit. Ne fais pas référence, Ural. Référencez la fonction et utilisez vous euro quatre. Et ça va vous épargner beaucoup de maux de tête. Et bien sûr, vous ne voyez pas cet utilitaire en ce moment parce que nous n'avons pas fait beaucoup de choses avec les modèles , mais vous allez voir beaucoup de choses en continuant avec le cours. 30. Obtenir la méthode: Ok, donc nous allons commencer à regarder maintenant, um formulaires et les méthodes que nous avons utilisées pour interagir avec les formulaires donc former un formulaire est fondamentalement quelque chose où vous vous sentez ? Données. Et puis vous avez le bouton Soumettre. C' est une fonctionnalité de base que n'importe quelframework web doit avoir et flash ne fait pas exception. C' est une fonctionnalité de base que n'importe quel framework web doit avoir et flash ne fait pas exception. Alors à commençonsàjouer avec ça un peu. Donc je vais créer, disons,la forme la plus connue ou la plus courante est la journalisation pour. Donc je vais créer, disons, disons Donc, euh, voyons si je peux créer quelque chose que je vais aimer, supprimer ces choses ici et créons un tout nouveau. Donc disons qu'on a, un Prout, qui est une barre oblique Logan. D' accord. Et là, euh, on va obtenir des méthodes. Donc, xtalpi a plusieurs méthodes pour interagir. Entre le navigateur, la page sur l'ancien que vous servez et le serveur qui va avoir ces virus et c'est ah, c'est une longue discussion. Entre le navigateur, la page sur l'ancien que vous servez et le serveur qui va avoir ces virus et c'est ah, Nous n'allons pas entrer dans ah, les trous attendent de la place, mais nous allons voir ceux qui sont très importants. Et ce sont la méthode get et la méthode post pour cette leçon. Nous allons voir la méthode get au départ. Alors supporte avec moi alors que nous suivons cette route. Donc ici, je dis à Flash que je vais avoir une page de journalisation qui attend, hum, formulaires à soumettre en utilisant la méthode get. Hum, et je t'ai expliqué ce que ça veut dire. Donc ici, nous avons la fonction que nous ne allons pas passer n'importe quel viable est ici dans l' euro réel , mais nous allons les passer en utilisant pour obtenir la méthode get. Hum, donc pour l'instant, je vais juste retourner un formulaire. Ok, je vais mettre du html uhm ici. Hum, nous n'allons pas beaucoup entrer dans HTML dans ce cours parce qu'il est plus à propos de backend, et vous pouvez lire sur, vous savez, trucs HTML de base dans. Ah, un autre cours que je pourrais faire moi-même. J' ai pris le contrôle de toutes ces choses. Alors restez à l'écoute. Euh, assurez-vous que vous, vous savez, inscrivez à la newsletter de Zero. Je o, hum, ou je me suis sur Twitter depuis la Syrie. Le U, vous savez, obtenir des informations à ce sujet, mais ah, donc on va le faire. En voici quatre. Méthode. Viens avec l'action, Logan. Donc l'action signifie où va poster quand j'appuie sur ? Hum, ça et après ma trentaine nous a eu. On expliquait tout à l'heure. Alors maintenant, je vais juste mettre tout en une seule ligne. Je sais que ça a l'air un peu moche. On va s'améliorer sur ah, sur ah, à venir. Euh, leçon sur les modèles. Donc, je vais mettre un type d'importation hors texte et avec le nom d'utilisateur. Donc c'est le viable qu'on va passer au, hum, au So the script. J' allais faire quelque chose ici, donc on a fait en une seule ligne. J' allais faire quelque chose ici, Mais c'est ce que je vais faire une seule ligne, parce que c'est presque fini. Il va finir par l'API orteil ici pour se séparer. Et puis je vais faire ah, type de bouton est égal à soumettre. Et puis je vais mettre de la viande ici et le bouton dans la forme finale. Ok, donc c'est juste comme un long liner qui nous montrera l'entrée du nom d'utilisateur. Et puis je soumets le bouton. Alors voyons à quoi ça ressemble. Voyons si je n'ai rien cassé, alors contrôlez l'évasion, c'est redémarré. Donc, c'est bien. Et c'est pour couper et se connecter à Perfect. Donc maintenant ceux-ci Ils utilisent le champ de nom. Donc je tape des choses ici et puis je peux appuyer une minute. Maintenant que s'est-il passé ? Voyez si j'appuie sur omettre, rien ne se passe. Comme rien qu'on puisse. Nous pouvons voir, cependant, remarque sur la fille. J' ai un point d'interrogation maintenant et il dit que le nom d'utilisateur est égal à DF, qui est la chaîne que j'ai l'année dernière. Mettons quelque chose de plus reconnaissable, comme Jorge Submit. Comme vous pouvez le voir, ça fait quelque chose comme ça. Il nettoie le champ ici, puis il dit l'utilisation de produits chimiques par point d'interrogation. Jorge. Donc c'est ce que la méthode get. On dirait de la méthamphétamine. La méthode get est qu'il va bourrer tous les Divi Valls, hum, sur le formulaire après un point d'interrogation et l'envoyer à votre aîné avec un signe que nous avons défini là-bas. Donc, en gros, il envoie l'utilisation de produits chimiques. Jorge, euh a dit au script en le mettant sur l' euro hors euh a dit au script en le mettant sur l' euro horsdu formulaire. Hum, donc, mais je ne sais pas comment puis-je lire ce nom d'utilisateur ? Sentez-vous là pour ça. On va utiliser quelque chose appelé « demande ». Donc, nous devons prendre vos quatre parce que nous ne l'utilisons plus et ajouter la demande. Donc, la requête est la façon dont flask gère toutes ces requêtes. Tout cela, comme les messages de formulaires ou d'actions http. Et ce que nous allons faire est, euh nous allons vérifier essentiellement les valeurs que le nom d'utilisateur va être dans la demande en tant que , um nous sur Ah, liste. OK, euh, nous ne sommes pas moralement désolés en tant que dictionnaire. Donc je vais vérifier s'il y a des valeurs sur la demande. OK, puis retournons le nom d'utilisateur qui est présent dans cette requête. Donc je voulais retourner utiliser son nom est et puis je vais mettre les valeurs de requête sur l'utilisation de son index de nom. Donc, les valeurs de requête contiennent essentiellement toutes ces entrées. Ah, nom avec le nom étant l'index de ce dictionnaire. Et puis s'il n'y a pas de valeurs, alors nous allons retourner le formulaire. Donc ça veut dire que la personne a impressionné un idiot, alors on verra si ça marche. Euh, vérifie que c'est rechargé. Et ah, essayons encore sans rien ici, Logan. Ok, donc j'ai le formulaire avec lequel j'essaie, um Ah, Sam. Certains se sont rencontrés. Impressionnant. Donc je reçois le nom d'utilisateur est Sam Donc vous voyez la première, la première version de cette page, qui était cette Slash Rogaine. Il vérifie quand il frappe. Ce sont alors toutes les valeurs sur la requête. Et la réponse est non, parce que nous n'avons rien envoyé. Donc, il va dans les retours que HDP um ou string html frère qui nous rend, Ah, nous Un formulaire sur le navigateur. Mais dès que je tape quelque chose ici et que j'appuie sur une mitaine, il renvoie à la barre oblique à nouveau avec le point d'interrogation est le nom Jorge. Et puis les valeurs de requête ont une valeur. Donc, il va dans ce bloc, qui est retourné nom d'utilisateur est et demande des valeurs de votre nom de famille. Donc c'est comme ça que vous interagissez ici avec, hum, avec ce champ. Et on peut faire des trucs avec ça. Avec ça, avec cette valeur. 31. Méthode de publication: Ok, une chose , on allait parler, c'est, euh, la sécurité, la sécurité, non ? Et une chose que je vais vous dire est que les demandes d'obtention ne sont pas très sécurisées parce qu'elles envoient ces informations sur l'euro lui-même. Donc fondamentalement, ils sont l'utilisateur, ou même, vous savez, une, hum, une personne qui est comme renifler. Ah, d'une certaine façon je suis allé parler ici comme des pirates et des choses comme ça, mais aussi, comme, vous savez, les administrateurs système qui vérifient les journaux de leurs serveurs, ils sont va pouvoir voir le nom d'utilisateur ici. Et si nous avons aussi un mot de passe, comme vous, ils verront un passeport égal. aussi un mot de passe, comme vous, Vous savez, vous êtes un mot de passe très sécurisé en texte brut. Donc ce n'est pas très bon. Ce n'est pas très sûr. Donc on veut changer ça et faire de ça un environnement plus sûr, un peu comme ça. Mais comment pouvez-vous passer alors à travers le journal dans cette utilisation de produits chimiques, Jorge sans l'afficher là. Et c'est là que le poste entre en jeu. Alors, qu'est-ce qu'on a besoin de changer ici ? Donc, la première chose ou la seule chose que nous devons changer dans la forme est que nous allons mettre post for method equals supposés au lieu de get. C' est le premier changement. Le deuxième changement que nous devons faire ici. Les méthodes pour accepter à la fois get et poses. Mais pourquoi c'est ça ? Vous pensez, genre, genre, n'est-ce pas maintenant le formulaire Ethic post ici ? Pourquoi avons-nous besoin d'y arriver ? Eh bien, donc la chose est comme quand vous avez frappé pour la première fois l'Ural, la barre oblique Logan, vous utilisez réellement une requête get. Et la raison derrière cela est que l'opération la plus basique que vous faites via http est oh, donnez-moi la page de connexion qui me donne la page de connexion est une requête get. Donc, chaque fois que vous appuyez sur une page, disons que vous allez sur Twitter. Vous allez à Facebook, vous allez sur Facebook slash profil. Ce sont tous des demandes de get. Mais au moment où vous ressentez ensuite quelque chose et que vous publiez en utilisant la méthode post, vous soumettez quelque chose, alors la méthode post est utilisée. Donc, um, une façon dont nous allons pouvoir vérifier um, dehors de la requête, les valeurs sont que nous allons pouvoir, euh, vérifier le type de requête sur le, um souligné la fonction. Donc, au lieu d'avoir toutes les valeurs de quête, nous allons utiliser ceci, qui est plus, euh, le plus souvent utilisé si la méthode de requête est égale. Ah, poste. Ensuite, vous retournez le nom d'utilisateur. Et si vous frappez, si vous plaisantez la première fois, c'est la méthode de requête égale va être obtenir. Donc, il va retourner ce formulaire. Voyons si ça marche. Um, c'est pour contrôler l'évasion ici. Ça a l'air bien. Donc on va frapper le journal de bord. Nous obtenons l'utilisation de son nom. Non, attends. Voilà, tu y vas. Et on va mettre ici. Hum, disons que Robert a appuyé sur l'utilisation de soumettre. Elle s'appelle Robert. Donc, une chose que vous remarquerez ici est qu'il n'y a pas de point d'interrogation nom d'utilisateur égal Robert. Et mais au lieu de cela, cela a été récupéré parfaitement à partir des valeurs de requête. Comment est-ce possible ? Où est ce raisonnement égal, Robert ayant passé de sorte que c'est réellement fait à travers les , paramètres de post, qui est qui est un en-tête. Et cela va un peu dans, vous savez, spécifications plus techniques. Je te recommande d'aimer si tu peux marcher, euh oh. Sont mis de côté un peu de temps pour étudier comment il doit être fonctionne. C' est un très bon outil d'apprentissage. Mais une chose que vous pouvez faire ici en chrome est que vous pouvez voir les en-têtes des choses se passent. Et la façon dont vous faites cela est, euh, vous allez à vous pouvez voir le développeur sur les outils de développement puis. On peut aussi utiliser, euh, sur les marchés. Je vais commenter je orale venir. Et J, j'utilise habituellement J parce que c'est jaloux que nous soyons console. Mais si vous appuyez sur ça, vous allez voir que quelque chose comme surgit en dessous et ici, vous allez pouvoir voir des choses comme les demandes de poste et des choses comme ça. Euh, alors essayons encore ça. Mais cette fois-ci, on va voir l'information que certains ont faite. Mais cette fois-ci, Alors rechargeons ici, d' accord ? Et puis nous allons mettre Robert ici et ensuite nous soumettre. Donc, il semble que différents types ici, um, éléments, choses fondamentalement comme le html hors de la page et d'autres choses que vous pouvez jouer avec. Hum, nous allons vérifier quelques choses ici, mais une chose que vous remarquerez est que si vous cliquez sur, donc si vous avez une longue ligne ici de choses qui sont servies quand vous appuyez sur cette page. Mais si vous appuyez sur si vous cliquez sur la connexion ici, qui est la demande de connexion hors de la page, vous verrez que maintenant vous voyez un arrêt d'en-tête ici et si vous faites défiler vers le bas, vous verrez qu'il y a, vous savez, Général, c'était vous savez, les en-têtes de réponse de requête, qui est ce qui a répondu a été répondu à partir des en-têtes de requête de page, qui est un peu plus proche de ce que nous essayons d'obtenir à, hum, et enfin, ici, ici, tout en bas, vous verrez les données de formulaire. Et si vous voyez ici, il est dit nom d'utilisateur Robert. C' est là que c'est. Donc, cela fait partie d'un Il est annulé de l'en-tête de données de formulaire. Hum, le post frappe de votre L. Donc ça veut dire qu'aucune personne entre les deux ne peut regarder les données et quand même l'application sera capable de les lire. Donc, post est la méthode de préférer. Si vous envoyez, vous savez, choses qui ont besoin d'une certaine sécurité et que vous pouvez utiliser get par exemple, si vous êtes le profil utilisateur Twitter est slash utilisateurs. C' est Jorge. Um, c'est plus qu'une chose acceptable à publier publiquement pour que vous puissiez utiliser get pour ces requêtes 32. Introduction aux modèles: Ok, donc on va regarder Tempt. C' est maintenant, comme vous vous en souvenez, nous avons ce, genre, moche formulaire de soumission de nom d'utilisateur ici, euh, et nous voulons rendre cela, vous savez, plus facile à mettre à jour. Et vous pourriez avoir un type différent de, comme avant et les développeurs faisant les modèles par rapport à vous êtes ils vous obtenir à l'arrière et l'application. Donc les modèles viennent pour sauver. Et les modèles font partie d'un logiciel, euh, méthodologie appelée M V C, qui est fondamentalement contrôleur de vue de modèle. Um, M v Sea sépare que je base les opérations de la couche de présentation, qui est comme les modèles de la logique ou des contrôleurs. Donc, les vues dans ce cas seraient les modèles, et le et les contrôleurs seraient les fichiers p Y réels, vous savez, comme celui-ci ici. Donc nous n'avons pas vu les modèles ici parce que nous n'avons pas encore ce que je base, mais , euh, nous allons jeter un oeil à cela dans la section suivante. Donc avant de faire quoi que ce soit, effacons ça. Hum, et on va se classer à une toute nouvelle ah, route là-bas. Donc on va aller de l'avant et créer un dossier de modèles. Il doit être au niveau de la racine, et il doit être appelé templates. On peut modifier ça à travers les paramètres, mais on ne va pas faire ça. On peut modifier ça à travers les paramètres, On va juste faire la valeur par défaut, et ensuite on va créer un nouveau fichier. On les appelle bonjour. Html et cela tombe sont essentiellement courrier électronique ext. Mais ils ont une gestion viable. C' est une houle. Donc nous allons enregistrer ceci et allons à Ah, fichier xml très simple à nouveau. Je ne vais pas, genre, décrire en peu de peu ce que je fais ici, parce que ce n'est pas un front end, euh, mais c'est comme, ah, ah, structure très basique d'un, um d'un prochain email. Cinq, hum, plat. Donc ici, on va avoir, euh on peut faire conditionnel ici. Alors, euh, mais commençons par quelque chose de simple. Alors disons que chacun d'entre eux Bonjour, monde. Et, euh, c'est fondamentalement tout. Hum, disons ça. Et maintenant pour nous de rendre ce modèle, nous allons créer une route juste faire, um appelé Bonjour. Et, euh et nous allons définir bonjour pour être un, euh fondamentalement retourné ce modèle. Donc, pour ce faire, nous utilisons cette fonction appelée modèle de rendu. Et, hum, c'est rendu signifie que ce n'est pas le même contenu. Mais python fera en fait un peu, disons, calculant dessus ou en traitant. C' est pourquoi il s'appelle Render Template. Mais dans tous les cas, euh, on va passer le html bonjour là. Ah, et que ce que ça fait va, comme, juste retourner ce modèle Ah, sa prochain fichier email. Une chose que nous devons insérer ici est le modèle rendu, qui est une fonction flask dont nous avons besoin dans le script. Une chose que nous devons insérer ici est le modèle rendu, Alors c'est ça. Voyons si l'application est en cours d'exécution. Oui. Ça marche bien. Alors faisons bonjour ici. Et voilà. Donc c'est en fait le tempéré que nous avons. Ah, qu'on doit trouver ici. Hum, et, euh, si vous voyez la source de la page, vous verrez que c'est exactement le même contenu qu'on a mis sur les Extrmophiles de Londres. Maintenant, on va aller un peu plus loin, et ce qu'on va faire, c'est qu'on va voir comment on peut mettre viable vu là, et, hum, et un peu comme, modifié, tenté sur la base du pied ustream. Donc quand vous mettez un juste va être capable de passer. Bonjour. Nom ici. Et on va passer ce nom. Hum, ici, tu peux le faire. C' est quelque chose que je ne pense pas qu'on ait vu que tu peux vraiment passer. Le nom est égal à zéro, ce qui signifie qu'il n'est pas nécessaire. Donc ça allait nous permettre de servir orteil ? Hum, bonjour tout seul ou Ah, bonjour. Nom. Et je vais créer une nouvelle route pour ce premier cas, parce que sinon ce serait nous aurions besoin de cette barre oblique après. Bonjour. Donc, c'est aussi quelque chose que vous pouvez avoir plusieurs routes assignées à une fonction spécifique . Euh, mais n'importe quel cas, Bonjour ? Nom égal à connu signifie que nous pouvons rendre bonjour juste par lui-même et bonjour. Nom. Ah, bonjour. Nom de barre oblique. Et le nom va être rempli avec tout ce qu'on passe après le bonjour et c'est truc très important. Vous pouvez passer ici en paire, fondamentalement le viable que nous allons obtenir, hum, hum, assigné par l'euro. Donc, ce que cela signifie, c'est que le nom à l'intérieur du modèle sera égal au nom que nous avons passé ici. Hum, mais regardez-vous donc pour vous les gars, orteil, voyez mieux. Cela s'appelle ce modèle de nom afin que vous puissiez voir la différence. , Et puis ce que je vais mettre ici,c'est que je vais avoir beaucoup et ensuite accéder à ce viable l'intérieur. J' ai mis des crochets trop bouclés. J' ai mis le nom ici. Ok, donc il y a beaucoup de choses là-dedans, mais voyons comment ça marche, on voit que ça marche bien. Et maintenant on va faire bonjour, Slash Jorge et on ne voit pas le klaxon. Je veux dire, modèle nommé au lieu du nom. Alors voyez comment le nom n'est pas ici, mais le modèle de nom va être lu, donc il redémarre. Essayons encore ça. Et voilà. Allô ? Ou si je mets Bonjour, Robert, je prends Robert. Donc tu vois comment ce n'est pas le cas. Il ne retourne pas ce HTML exact, mais il rend ou remplace une partie du html à la volée par n'importe quel endroit nous passons. Donc, je ne trouverais pas vraiment son nom, mais c'est une convention que je veux dire, c'est une fois que vous savez que ça se passe, on peut juste l'utiliser comme ça. , Et la dernière chose que je vais essayer,c'est que je vais avoir une condition pour me rappeler comment on Bonjour et bonjour. Nom si je passe. Allô ? Prenons ça. Il travaille. Alors, Richard, Infirmière Richer. Ok, donc si je passe bonjour seul. Je vois Bonjour. Connu, ce qui est assez drôle. Ce n'est pas très sympa parce que ce n'est pas ce qu'on veut. Comme quand on les connaît là-dedans, ça n'a aucun sens. Donc, ce que nous allons faire, nous sommes en fait capables de faire conditionnel, comme si des déclarations dans le modèle. Et pour ce faire, nous le faisons. Au lieu des deux crochets, des crochets bouclés, nous faisons le pourcentage de support bouclés. Et ce que nous allons faire, c'est comme si nous allons vérifier si le nom, ce qui signifie que si le nom a une valeur, puis imprimer ceci mais autrement et voir comment c'est comme si c'était python. Si alors on va juste dire bonjour monde et tu dois mettre fin aux si alors on doit le faire. Et si ici. Ok, donc ce qui se passe, c'est , genre, s'il y a une personne nommée va dire bonjour nom, sinon il va montrer Hello world. Euh, alors voyons si ça marche. Hum, si je fais juste bonjour, je reçois Bonjour, monde. Si je le fais ? Bonjour, Jorge. Je reçois Bonjour, salope. Donc c'est un peu comme le très basique, mais c'est comme, fondamentalement comment vous faites des modèles sur flasque, et nous allons continuer, euh, explorer plus de choses que nous pouvons faire avec ça. 33. Modèle de connexion: Ok, donc maintenant qu'on sait comment faire le gabarit , on va essayer de faire le formulaire qu'on avait avant en faire, euh, euh, partie d'un gabarit. Donc, la première chose que nous voulons faire est de créer un nouveau modèle. Donc je vais juste supprimer ça. Allô ? Html. Et je vais créer un nouveau modèle ici appelé Logging Exstein. Eh bien, donc c'est comme une page de connexion, alors regardons ça. Um, je vais créer, genre, une plaque chauffante. C' est encore la cinquième page du milieu. Ce n'est pas quelque chose que vous devez, hum, maîtriser pour les scores. Et quand j'ai dit une page de blog, et donc je vais faire un formulaire ici. L' action va être, hum c'est une connexion. Eh bien, ne vous souvenez pas de ce qu'on a dit sur l'Europe avant. C' est un exemple parfait de la façon dont nous pourrions utiliser l'euro, et nous y reviendrons dans une seconde. J' ai donc ma forme là-bas. Je vais juste mettre un, euh, utiliser le nom type des gens. type d'entrée est égal au texte, et je vais l'appeler utilisé son nom et ensuite je vais en faire un autre ici, qui est rapide Word. Et, hum, il va nous passer le mot de passe viable et enfin besoin d'un bouton pour soumettre le formulaire. Et je vais appeler ça Le Guin. Parfait. Ainsi, vous pouvez voir cela en plein écran. Hum, donc j'ai ma forme Action va être lovin slash. Donc ça veut dire que quand j'appuie sur Soumettre, ça va aller à la page d'amour des slash, et ça va passer. J' utilise son nom viable avec une certaine chaîne et le mot de passe viable avec une autre chaîne. Et alors, nous allons filer ça dans notre application. Ok, alors allons-y et changeons notre bonjour, p. alors allons-y et changeons notre bonjour, p. Hum, donc je vais juste créer une nouvelle fonction ici. La partie supérieure va être, hum, slash connexion. Et puis je vais autoriser deux méthodes, euh, get and post et je vais appeler cette fonction logging. Donc, je vais dire comme nous l'avons fait avant la demande d'Eve, euh méthode point est supposée Cela signifie que l'utilisateur a déjà appuyé sur soumettre, donc nous allons juste revenir. Euh, vous, monsieur, pourcentage s, qui va être une chaîne enfermée. Alors, comment pouvons-nous obtenir la valeur sur le nom d'utilisateur ? Donc, il s'avère que la, um, requête a un objet na ou un dictionnaire plutôt qu'on appelle formulaire de requête. Et dans celui-ci, il y aura tous les champs que vous avez envoyés sur la demande dans ce champ ici. Donc, si nous demandons Désolé si nous demandons ce nom d'utilisateur de formulaire, alors cela tiendra la valeur de ce champ intérieur Houston. Et, euh sinon, si nous ne recevons pas le message, cela signifie que nous allons juste charger dans la page. Eh bien, juste pour retourner le modèle Render. Hum, Logan HTM. Alors voyons à quoi ça ressemble. Hum, ça commence l'application ici par téléphone. Allô ? y Et il n'ya pas d'air. Et allons chercher l'application. Vous êtes tous ici de la part. Hum, il n'est pas trouvé ici parce que nous, hum, spécifié que la seule route disponible pour cette obligation est la barre oblique Logan. Donc, on fait une barre oblique en regardant là-bas. Voilà, tu y vas. Donc nous rendons le modèle comme un formulaire et nous pouvons essayer de faire Jorge. 12345 Non, encore. Utilisateur Jorge chargé. Donc, il lit correctement ce champ de nom d'utilisateur ici et donc nous avons une assez bonne forme initiale à travailler avec avant de passer à autre chose. Une chose que je veux changer, c'est ce dernier Logan. Tu te souviens quand on a parlé de ton 4 ? Comment on ne l'a pas fait. Ce n'était pas une bonne pratique de mettre les pieds dans la cour des filles. Donc, chaque fois que vous avez tapé A chaque fois que vous tapez quelque chose qui slash vous connaissez un l sorte de off comme vos routes d'application, il devrait être un grand drapeau rouge pour vous. Donc, au lieu de cela, ce que nous devrions utiliser ici, c'est l'euro pour la méthode et la rumeur Comment nous l'avons vu plus tôt. Donc dans ce cas, nous allons mettre vos quatre, et ensuite nous devons mettre le nom de la fonction, qui dans ce cas, est la fonction de journalisation. Donc si je mets, hum, si je mets l'huile pour Le Guin ici et puis économise, voyons si j'ai des héritiers ici. Je reçois des années. Donc, ils me permettent de recharger la page et vous verrez si je vois la source de la page de vue qu'il mappe correctement cela pour barre oblique Logan. Donc c'est un gros avantage d'utiliser l'euro 4 à la place, hors de la barre oblique réelle à nouveau parce que ce qui se passe est, vous savez, peu comme penser à cette dernière. Logan est poivré à travers un tas de temples comme des centaines de modèles. Et au lieu de ça, on change à, hum, la journalisation. Souligner, utiliser ou droit, um, maintenant l'utilisateur de journalisation de sortie euro au lieu de se connecter. Et si nous frappons cela, vous êtes tous ici l'utilisateur de journalisation, nous verrons qu'il se charge ici. Mais pas seulement cela, votre L quatre met automatiquement à jour cela. Donc c'est le gros. C'est un gros truc. Et nous devrions toujours utiliser vos quatre chaque fois que vous faites référence à l'Oural sur vos modèles et même dans le cadre de votre obligation, hum, contrôleurs aussi. 34. Fonction de connexion: Ok , , donc on va faire un peu plus de travail sur l'application. Ce que nous voulons faire dans cette leçon est de faire une fonction de journalisation comme la vérification de l' utilisation de l' ennemi spot sur la basse. Ont fonctionnaient bien. Bien qu'on ne va pas comme vérifier commeune vraie application en utilisant une base de données, mais on va faire semblant. Et la façon dont nous allons le faire est que nous allons vérifier si le nom d'utilisateur et le passe sont les mêmes que l'utilisateur peut se connecter. C' est un peu simple, mais ça nous permettra de vérifier comment ces choses fonctionnent. Donc, euh, je vais créer une fonction. Ainsi, dans votre application flasque, vous pouvez définir des fonctions qui sont, comme internes. Ils n'ont pas de routes. C' est comme des fonctions d'aide, pour ainsi dire. Et je veux une grande fonction de connexion dans cette vallée que, si vous passez, j'utilise le nom et le mot de passe. Il vérifiera si le nom d'utilisateur est égal au mot de passe. Ensuite, il revient. Fidèle à celui qui l'a appelé, sinon il reviendra tomber. Donc c'est une fonction très simple, euh, genre de fonction, mais imaginez que c'était ce serait un peu comme où vous allez dans la base de données et récupérez l'utilisation du nom et du passeport et vérifiez s'il y a violet et puis vous retournez quelque chose en arrière. Donc c'est un peu comme comment ça fonctionnerait. Mais ici, nous allions juste faire en sorte que si le nom d'utilisateur et le mot de passe sont les mêmes, alors l'utilisateur peut l'adorer. Donc, euh, ce que nous voulons faire, c'est que nous voulons vérifier cela en utilisant la méthode post. Si la méthode de l'enregistrement est publiée, nous allons vérifier si valide, Logan et ensuite nous avons le nom d'utilisateur. Donc nous devons passer le formulaire de requête point, utiliser son nom comme premier baromètre, et ensuite le formulaire de demande, euh, mot rapide pour, euh , , orteil prendre le mot de passe. Donc, si ces deux sont les mêmes parce que cela va vérifier la même chose et que cela retourne vrai, alors tout ce qui est en dessous sera exécuté. Donc on va dire « retour ». Bienvenue de retour. Um, puis l'utilisateur, le nom de l'utilisateur, Donc, demandez ce formulaire. Il a utilisé le nom, mais que se passe-t-il si ça ne va pas, alors disons qu'on se trompe en utilisant un passeport, ce qui veut dire qu'ils ne seront pas les mêmes. Donc, nous avons un bloc else, et nous pouvons définir une erreur ici, donc l'erreur est égale à incorrecte. Uh, utilisez le nom et le mot de passe. , Ok, alors, mais que se passe-t-il ? Um, avec cette erreur, où est-ce que c'est affiché ? Hum, donc une chose que nous voulons faire est, euh, nous voulons passer, et vous pouvez transmettre le contenu des modèles. Et vous avez juste besoin d'assigner fondamentalement le viable, comme, dans le modèle, et puis quoi ? Ça équivaut à deux. Donc, dans la meilleure erreur équivaut à l'air. Et une fois qu'on sera sur la page de connexion ou sur le modèle, on va vérifier ça. Et une fois qu'on sera sur la page de connexion ou sur le modèle, Cependant, au premier coup, première fois, ça ne va pas exécuter cette partie ici. Et l' air va être indéfini. On pourrait y entrer. Donc, la façon d'éviter cela est que nous pouvons définir l'erreur de la du get go avant même que nous ne le faisons. Est-ce que c'est une partie du code ? Mais vérifions ce qui se passe si nous faisons cela, donc Voyons si l'application est en cours d'exécution. Il a été rechargé. C' est parfait. Et donc nous allons faire la journalisation de l'utilisateur ici. Euh, c'est Logan. Désolé. Connectez-vous. Ok, donc c'est l'époque qui parlait vrai de référence d'erreur si locale viable avant l'affectation . Donc en gros, ici là, il dit , vous savez, que l'air est égal à l'erreur. Je ne sais pas ce qu'est cette erreur, donc pour éviter cela, nous mettons l'erreur n'est pas égale au début, sorte que, vous savez, le début est juste dit à aucun. Et puis si l'air se produit, alors nous allons passer cette erreur en provoquant n'est même pas passeport retour au modèle. Et vous pouvez imaginer qu'il pourrait y avoir plus d'erreurs. Comme, tu sais, tu n'as pas senti le nom d'utilisateur ou les anciens cas d'utilisation, mais pour l'instant, on va s'en tenir à ça. Alors voyons que rechargé, euh, et aller recharger ça. Donc maintenant, nous avons les modèles appropriés, et c'est tout bien et bon. Essayons donc de mettre le similaire, le nom d'utilisateur et le mot de passe. Ils disent une lettre pour que ça marche de la même façon. Vous voyez, votre passeport signifie que nous allons obtenir le journal valide retourné vrai. Et ça va dire que le retour, je veux dire, va dire, Bienvenue de retour, euh, Jorge dans ce cas. Alors essayons ça encore. Ça marche parfaitement bien. Si je retourne et mets Jorge et que je mets John ici, alors je devrais y aller. Oh, mais où est l'air que nous définissons ici ? Hum, eh bien, le fait est que nous transmettons cette erreur ici, mais nous ne mettons pas le fait est que nous transmettons cette erreur ici, mais nous ne mettons pasn'importe où sur le modèle que nous devrions expliquer ça à l'utilisateur. Alors comment on fait ça ? Um, c'est assez simple. Je vais mettre un bloc if ici en cas d'erreur. Cela signifie que s'il y a quelque chose qui peut contenir quelque chose et juste pour que nous ne nous souvenions pas de fermer, il le fermera ici. Et puis on va dire, hum je vais juste mettre un texte de couleur rouge ici, et je vais dire, juste imprimer l'air que le gabarit est un réglage. , Une autre petite chose que je veux changer,c'est que je vais définir ça pour taper le mot de passe pour que vous ne puissiez pas voir ce qui est serré. Et c'est juste comme une chose intégrée que HTML a. Um Donc, s'il y a une erreur passée à travers le modèle, alors nous l'avons affiché là. C' est un bean défini par le contrôleur. Le contrôleur étant Bonjour, P Y. Alors voyons. Ça a l'air OK. Pas d' héritiers, alors essayez encore une fois. Donc on va mettre Jorge et Jorge. Regarde ça. Tu trouves un peu comme un point ou des astérisques ? C' le type de mot de passe. Eh bien, encore. Et j'étais, c'était parfait. Que se passe-t-il si on se trompe pour que Jorge et Ana mettent le test Perfect. Donc je prends l'air en lettres rouges. Euh, très, tu sais, attirant mon attention. Et il affiche cette erreur que nous avons définie ici. Nous nous rapprochons donc d'une bonne application de travail. Euh, voyons voir. Ce qui vient ensuite. 35. Rediriger après publication: Ok, la prochaine chose que nous allons voir est, euh, euh, rediriger les utilisateurs après la journalisation et le mot de passe sont corrects. La raison en est que lorsque nous entrons dans notre soumettre un formulaire et il arrive à la page ou au serveur plutôt que, ah, ah, informations de poste sont toujours suspendues autour. Et c'est quelque chose que vous verrez arriver si vous ne faites pas de redirection. Alors ils disent que je fais ici, Jorge Jorge, qui est le bon Logan sur un journal de presse, j'arrive à la page de connexion avec Welcome back, Jorge. Droit. Mais que se passe-t-il si je frappe ? Recharger ? voyez, vous voyez ce genre de dialogue laid qui dit, vous savez, confirmer la soumission, ce qui n'est pas très professionnel. En plus, c'est, ah, c'est un problème de sécurité parce que, vous savez, vous pourriez potentiellement avoir des données autour. Donc, ce que nous faisons normalement après un Logan réussi, c'est que nous envoyons l'utilisateur à un autre sur une autre page que, hum , ce genre de genre peut, ah clair que cela poster des informations et vous envoyer sur votre chemin. Donc nous allons le faire dans cette leçon, et c'est comme ça que nous faisons ça. Donc la première chose que nous allons faire ici est que nous allons essayer d'ajouter, um redirection, qui est un utilitaire de flasque, et cette redirection nous enverra à n'importe quel oral que vous spécifiez. Euh, donc ici, au lieu de revenir, bienvenue, Jorge ou autre, les Houston waas on va avoir un peuple de redirection et c'est un peu drôle parce que tu es revenu la redirection. Et, euh, je pense qu'une partie de la raison pour laquelle c'est le travail est parce que c'est un il y a un code http appelé trois ou quatre, qui est une redirection. Et je pense que c'est ce que Flask fait là-dedans, mais indique que vous devez utiliser le retour, redirection et, euh, mais avant de faire ça, nous allons, euh nous allons créer une nouvelle route AP, qui va être une page de destination de bienvenue. Alors créons ça. On va faire la route. On va l'appeler bienvenue. Et puis nous allons mettre un nom d'utilisateur là pour que nous puissions passer le nom d'utilisateur sur cela sur l'euro, et ensuite nous allons bien définir ceci comme une fonction appelée bienvenue et retournera ce modèle. Modèle de rendu. Um, porte de bienvenue, poste. E-mail. Ce que nous n'avons pas encore créé et passera le nom d'utilisateur. orteil à ça. Donc maintenant, nous pouvons maintenant, euh, mettre ce retour. Rediriger. Donc on va revenir. Rediriger vers ça, vous êtes 4, ce qui, comme vous le savez, pendant l'euro pour une fonction spécifique, euh, et on va passer. Le nom d'utilisateur est égal au formulaire de demande. Ah, s'habituer. D' accord. Donc, ce qui se passe ici, c'est que nous sommes en train de rediriger l'euro. Hum, quatre de cette fonction. Bienvenue. C' est celui-là. Et nous passons le nom d'utilisateur, qui est la, um, cette première méthode. C' est ce nom d'utilisateur ici, qui ah, s'avère être le nom d'utilisateur. Ah, paramètre pour cette méthode. Donc il va le lire là-dedans. On n'a pas d'air ici 40 euros donc on n'a pas encore l'euro 4 défini ici. On n'a pas d'air ici 40 euros donc on n'a pas encore l'euro 4 défini ici. Alors, voilà. Maintenant, nous avons configuré notre redirection de retour, et ce qui arriverait, c'est quand le nom d'utilisateur et le mot de passe sont corrects, reviendront, ou vous nous redirigerez vers cette page. Barre oblique de bienvenue. Vous savez, nom d'utilisateur Jorge ou Jack, ou quoi que ce soit les ennemis de l'utilisation et puis renvoyez-le un modèle. Hum, ça va définir maintenant. Voyons donc à quoi ressemble ce modèle. On va faire quelque chose de plutôt simple. Donc nous sommes super nouveau fichier ici, et nous allons l'appeler Welcome, HTML, et nous allons ouvrir ça, et nous avons juste super un fichier HTML très simple. Hum, aura, euh, titre East. Page d'accueil. Et nous allons avoir la dernière chaîne qui dit bienvenue et utiliser son nom, qui est le viable qui passait orteil au temple. Alors c'est tout. Voyons si nous avons des erreurs. Ça a l'air bien. Maintenant, on va retourner à l'exploitation forestière et on va essayer Jorge. Jorge, euh, voilà. Et maintenant, nous sommes passés deux ou redirigés vers la barre oblique Jorge et vous voyez accueillir Jorge là-bas . Que se passe-t-il si j'appuie sur le rechargement ? Rien. Mais je ne vois rien parce que c'est une page statique. C' est déjà un peu comme s'il n'y avait pas de données postales là-bas. Donc, c'est quelque chose que vous allez toujours faire dans quand vous faites la soumission de formulaire est de rediriger les utilisateurs vers, disons que la page réelle où, um, où vous allez commencer à faire n'importe quelle sorte d'opérations comme et des trucs. Alors rappelez-vous que c'est un bon orteil règle 36. Messages flash: l' une des opérations que nous voulons pouvoir faire est de communiquer à l'utilisateur. Um, quand quelque chose comme s'est passé, Par exemple, si vous avez verrouillé avec succès, Mais vous voulez le faire sur la page suivante, par exemple, dans ce cas, nous voulons pour être en mesure de quand les gens frappent ça. Bienvenue, fille. Imaginez ça. C' est la page d'accueil de votre application. Vous voulez pouvoir passer des messages et des messages différents en fonction de ce que la dernière opération Waas et parce que, um, x t p est ne conserve aucune sorte de, comme l'état entre différentes pages. Vous devez être capable de stocker ça quelque part. Ces messages de notification et flasque offrent un, euh, genre de sous-système appelé messages flash qui vous permettent de faire exactement ça. Donc on va faire un message de mesure flash ici pour que vous puissiez voir comment ça marche . Donc, pour que nous utilisions des messages flash, nous devons ajouter flash. Voici l'une des bibliothèques que nous allons importer et ah, utiliser Flash est très, très simple. , Ce que nous allons faire ici,c'est qu'après la méthode Logan valide, Um, ou si conditionnel, nous allons juste dire flash, et ensuite nous avons mis connecté avec succès. Maintenant, ce que ça va faire, c'est qu'il va, hum, stocker ces messages flash dans un cookie de session. Lors de la prochaine fois qu'une page est chargée qui récupère ou veut obtenir ces messages, elle recevra n'importe quel message, tous les messages que vous avez clignotés dans les pages précédentes et elle reviendra à zéro, comme, réinitialisez-le et vous peut en avoir plus d'un. Donc, si vous mettez flash ici connecté avec succès, Mais vous aviez un message flash précédent disant ainsi enregistré avec succès et vous n'avez pas atterri dans une page où ces messages flash sont récupérés, alors vous verrez tous. Hum, mais nous devons faire cette recherche, euh, peu comme le code. Et on va le faire ici sur la page d'accueil. Donc ce que je vais faire, c'est que je suis voulu à un groupe générique, hum groupe générique, oubliant tous les messages flash et en les mettant sur la page. Donc on va utiliser ça. Um, cette méthode appelée avec des messages égaux obtenir des messages flash et obtenir des messages flash est comme la méthode intégrée, um, disponible dans le modèle pour obtenir tous les messages. Donc fondamentalement, je dis mettre les messages comme un viable qui contient tous les messages flash que nous avons jusqu'ici, Um et quand finissent par ici. Donc c'est Ah, c'est fondamentalement une boucle. Et maintenant je vais vérifier si les messages pour que s'il n'y a pas de messages, nous gardons juste cet extrait. Hum, et maintenant je vais à Est-ce que c'est une commande sur la liste des commandes dans le prochain email ? Et tu peux regarder ça. Et quand j'ai défini ceci comme une classe appelée Flashes, euh, et puis pour chaque message dans ce message est, euh, fondamentalement,c'est une liste ou une sorte de comme tous les messages sont en train de jeter qui dans le Et quand j'ai défini ceci comme une classe appelée Flashes, euh, euh, et puis pour chaque message dans ce message est, euh, fondamentalement, message. Donc, pour les messages dans les messages, nous allons obtenir chaque message. C' est là que cette liste, euh, euh, et allons à une fin pour ici pour qu'on ne puisse pas perdre la structure et on va déchirer les orteils sur les deux et que tu le feras sur le dessus. Et maintenant, nous avons notre message. Donc nous avons juste, hum, insérer un nouvel élément dans cet élément de liste, et nous y imprimons le message. Parfait. Donc ça devrait être tout, um Donc encore là, nous sommes prêts. Nous définissons les messages viables pour obtenir tous les messages flash sous forme de liste. Si nous avons des messages bien avoir cette liste, alors je vais créer un nouveau puits ou sur la liste des commandes, et ensuite je vais aller pour chaque message. Ce message est imprimé. Assad, c'est un individualisé. Voyons donc si nous avons des erreurs ici. Ça ne ressemble pas à ça. Et non, nous n'avons pas sauvé ça. Droit ? Alors maintenant, bâton. D' accord. Parfait. Alors maintenant, essayons à nouveau. Donc on va aller se connecter et quand il sera à Jorge, Jorge et regarder ça. Mais que s'est-il passé ici ? La session n'est pas disponible car aucune clé secrète n'a été définie. Ok, donc c'est quelque chose que tu vas devoir mettre en place. Et je, euh j'ai fait ça exprès pour que tu ne puisses pas, euh, peu comme les orteils de course parce que c'est très commun. Um, j'aime toujours nous oublier. Eh bien, donc ce qu'on doit faire, c'est mettre sur le, euh ici sur la principale principale. Um, la méthode, on va devoir passer un nouveau, um viable appelé secret d'application. Alors disons de le faire jusqu'à maintenant. Clé secrète fondamentalement encodera toutes les sessions que vous avez afin que les utilisateurs ne puissent pas être en mesure de, hum, pour récupérer ceux les informations sur ces sessions, et je vais vous montrer plus tard comment générer un bon secret clés. Mais pour l'instant, on va juste mettre une clé très simple, super secrète ici, et ça va être notre clé super secrète. Bien sûr, ce n'est pas très bon. On devrait avoir une combinaison comme des personnages et des chiffres, des choses comme ça. Mais pour l'instant, nous dirons, c'est une clé secrète. Alors maintenant, nous y retournons et essayons encore une fois. Ou ici ou ici et maintenant ça marche parfaitement bien. Nancy, dit-il, connectée avec succès. Oui, un peu comme le dard là-bas parce que c'est une liste hors d'objets. Mais comme vous pouvez le voir que ce message a été, euh,a euh, été récupéré en toute sécurité à partir de la page de journalisation précédente. Que croyez-vous que se passe-t-il si je rafraîchis la page ? Est-ce que je recevrai ce message ou non ? Voyons si je recharge. Oh, ça a disparu. Laisse-moi recharger. Oh, je ne le vois plus. Alors voyez, c'est comme ça que les messages fonctionnent. C' est un peu comme si tu les ramènes. Vous réinitialisez cette liste, et maintenant vous vous trompez. Tu n'as plus ce message, ce qui est parfaitement, tu sais, c'est comme ça que ça devrait fonctionner. Hum, nous devrions avoir ça, euh, fonctionnellement en place. Donc de cette façon, vous êtes sûr qu'on va, euh on va passer un message va être consommé par l'autre page. Et après ça, c'est Ah, c'est une réinitialisation, et on ne le fait pas. On n'affiche pas à l'utilisateur. 37. Meilleur HTML: Ok, on va devoir, euh, commencer à mettre un peu une meilleure structure dans notre HTML. Donc, si tu veux sauter cette leçon, c'est bon. leçon, Ah, je vais juste mettre un peu pour mieux. C' est une femme ici sur notre page de journalisation, journalisation, afin qu'elle soit plus conforme aux normes. Et, vous savez, il est toujours important d'être conforme aux normes, hum, dans n'importe quel code que nous faisons. Donc on va ajouter quand il l'a essayé. Html, um, désignateur ici au début, et puis nous fermons cela, alors généralement vous avez une tête, qui est l'endroit où vous définissez le titre et d'autres, euh, autres type d'attributs pour la page. Et puis nous devons faire corps, qui est là où se trouve le corps réel de la page. Et on ferme ça, euh , et , etenfin, je veux avoir un peu comme un titre ou un cheveu, et je vais appeler ça, tu sais, le numéro enfin, je veux avoir un peu comme un titre ou un cheveu, et je vais appeler ça, tu sais, peut compagnie, hum, en l'honneur de ceux de ces célèbres ah, dessins animés. Tu sais, comme le coureur de route. Hum, et je vais mettre ici la page de journalisation. La société Acme a demandé aux États-Unis un titre donc OK, maintenant nous avons Ah meilleure page html. Nous avons notre déclaration HTML du début de la fin. On a une tête avec le titre, et ensuite on a le corps et sur chacun , donc on va avoir ça. Voyons si ça a l'air bien. Et si on frappe la connexion, on verra que ça a l'air un peu mieux. Mais surtout, c'est maintenant un peu conforme aux normes. Hum, mais le point que je vais faire ici que tu ne vois toujours pas c'est que, euh tu sais, on aurait besoin de le faire aussi avec la page d'accueil, parce que tu sais,cette parce que tu sais, page est exactement la même. Donc, vous savez, nous devons, genre, genre, peut-être copier tout ça et rapporter ici. Eh bien, le titre dans ce cas est la page d'accueil. Donc j'aurais besoin de faire est ici. Mais vous pouvez voir comment cela peut devenir vraiment répétitif et pas très évolutif. Donc, par exemple, que se passe-t-il si vous voulez changer ? Vous connaissez cette partie ici qui dit la société Acme pour tous les titres, par exemple, ou vous ne voulez pas que vous voulez avoir ces h un titre. Peut-être avec le logo de l'entreprise dans chaque page. Comme si ça allait vite devenir un gâchis pour pouvoir, euh, soutenir ça. Donc ce que nous allons voir, c'est quelque chose qui, hum, va nous aider, hum, hum, faire face à ça. Et cela s'appelle, um template Héritage. Alors voyons quoi ? C' est à ça que ça ressemble. 38. Super de bloc: Un dernier déclencheur veut vous montrer les gars est et vous allez voir ça. Vous allez vous retrouver, hum, dans cette situation, je pense, assez souvent, assez souvent, surtout quand vous commencez à faire des bibliothèques javascript et des choses comme ça. Souviens-toi comment on a dit que si j'avais le titre du bloc ici, sans trouver la tête, il serait intelligemment comme inséré ici. Souviens-toi comment on a dit que si j'avais le titre du bloc ici, sans trouver la tête, Mais que se passe-t-il si je veux définir d'autres choses que je veux insérer dans ce titre en dessous, comme, disons, vous savez, bibliothèque javascript ou quelque chose, mais de Le modèle lui-même, euh, eh bien, une façon de le faire est que nous pourrions avoir une tête de bloc ici. Droit ? Et disons qu'on a, euh et bloqué, non ? Et puis nous avons je vais juste aimer un script javascript tag, mais ça ne va pas faire quoi que ce soit de fantaisie. Juste comme juste pour avoir quelque chose qui est un espace réservé de notre X égal à un et script. Droit ? Alors que se passe-t-il si je fais ça ? Eh bien, le problème que nous allons saisir que ça va remplacer leur tête entière, et ça ne va pas partir. Um, n'importe quoi pour le titre. Comme Imagine, il fait ça comme s'il remplaçait tout ça par ça. Ce Ah, ces emplois étaient probablement que nous sommes que nous mettons ici, donc vous pouvez le voir ici. Comme, si je me rafraîchis, hum si, si, si, comme de l'hydro-électricité. Je n'ai plus le titre là-bas. Hum, c'est que ça remplace toute la tête par elle, donc ce n'est pas très bon et vu, comme si nous avons maintenant ce titre moche, qui est l'euro. Donc, je veux être capable d'insérer ce JavaScript en pensant qu'ils sont ici, mais en même temps j'ai mon titre de bloc, hum, dans leur Et, um donc la façon dont vous faites ça est de appeler une, euh une méthode appelée super. Donc si on le fait, , c'est comme si c'était un super viable. Alors que va-t-il se passer ? Ça va remplacer ça la tête par ça avec ça, mais ensuite ça laissera le titre la balise titre, hum, hum, pour être un Toby comme, hum, hum, autorisé à être modifié par un appel ultérieur. Donc, nous allons voir que dans l'action a reçu le titre maintenant semble bon. Et voilà. Voir, Maintenant avoir mon titre si je vois la source être payé source, j'ai mon type vissé ici et puis mon titre ici. On pourrait aussi le faire dans l'autre sens. Um, si tu voulais d'abord titre pour une raison quelconque, tu peux le faire, non ? Donc d'abord, nous disons, OK, le bloc de titre, remplacez-le par ceci et ensuite, pour la tête, faites cette insertion sur la partie de la tête, mais appelé le super qui va, genre, insérer le titre de retour. Et si nous rechargeons maintenant ici, nous verrons le même résultat. Nous avons notre droit le bon titre. Mais si nous voyons la source de la page Afficher, vous verrez que Oh, le titre apparaît toujours en dessous. C' est intéressant. J' attendais le titre Toby Toby d'abord, mais non, en fait, quoi ? La façon dont nous ferions le changement d'ordre serait ceci exactement parce que supers appelle comme la pièce de titre, puis il insère la chose par la suite. Alors laissez-moi recharger les plaies de vue encore, et voilà, Um, et ça a mis une invention là pour qu'il ait l'air un peu plus agréable. Parfait. Alors voyez, c'est comme ça que vous aimez votre capacité, hum,de hum, modifier l'attaque à l'intérieur d'un bloc, mais aussi un peu comme appeler la super méthode pour que vous puissiez aussi faire plus de choses avec elle. 39. Inheritance modèle: Donc, comme nous l'avons vu en profondeur sur la leçon de la brise, nous, euh, nous essayons de réparer, euh , les pages, la page de connexion pour être plus étonnantes, plus conformes que nous ne l'avions. C' est comme requis, euh, des étiquettes pour proprement. C'est le mâle. Mais comme nous l'avons vu, il est très répétitif ou sur non qualifié capable de faire cela pour chaque page que nous faisons. Donc, la façon dont nous, um, que nous résolvons ce problème est que nous utilisons quelque chose appelé Template Heritance et l'héritage Tim Blizter signifie juste que nous allons avoir un modèle basé sur qui a le choses communes et puis chaque page supplémentaire Eh bien, tout comme étendre ou ajouter à l'orteil ce type existant de page de base comme. Pourtant, la meilleure façon de voir ou de comprendre cela est de voir en action. Donc, créons notre page html de base et voyons à quoi cela ressemble. Donc, nous allons créer un modèle html de base et donc un nouveau fichier et nous allons appeler ce html de base et nous allons copier et coller un tas de choses que nous avons entendues plus tôt. Hum, donc on va avoir le type de doc qu'on a devant, et ensuite j'aurai un corps, et on aura fini HD. Donc c'est comme la structure de base, très, très, très basique. Mais, euh, commençons à faire d'autres farces plus intéressantes ici. Donc, par exemple, sur la tête, euh, je peux faire quelque chose comme le titre, non ? Et puis je mettrais quelque chose comme, vous savez, la société Acme. Cependant, cela signifie que les mêmes titres apparaîtront sur chaque page. Mais je veux pouvoir faire ce genre de choses, comme le blogue Paige Dash et dans la page d'accueil. bord de la page de bienvenue. droite. Ça, puis imprimez la société Acme. Donc, la façon dont nous faisons cela avec le modèle de base est que nous définissons des zones où les choses peuvent être substituées par les enfants ou par les modèles héritant et modifions le temporaire dans ces endroits. Donc, la façon dont vous faites c'est que nous utilisons cette, um, cette commande appelée bloc, et ensuite vous mettez un nom comme pour ce bloc. Donc si je fais le titre de bloc et que tu en définis la fin et le bloc, ce qui va se passer, c'est qu'à chaque fois mettons un espace et ensuite le tiret ici. Donc à chaque fois qu'une page comme la page de connexion hérite que nous allons avoir remplacer, euh, fondamentalement, cette partie qui change avec ça avec cette tuile de bloc et le reste sera, hum ça va nous être imprimé comme nous est sur la base sur le modèle de base. Donc, euh, je vais aller de l'avant et définir tout ce bloc, euh, pour la tête, parce que je veux être capable de peut-être aussi à des attributs plus anciens ici, peut-être injecter du JavaScript bibliothèques, des choses comme ça. Et puis je finirai. Regardez ici, euh, donc maintenant sur le corps, je veux avoir ce h, qui est, vous savez, l'en-tête de toutes les pages. Je voulais être la société Acme à travers les conseils d'administration ou pas de changements là-bas. Et je veux toujours avoir s'il y a des messages flash orteils les afficher ici. Donc je vais juste copier et coller cette partie parce que ça va marcher comme ça . Et je suis en train de le couper aux porcs de bienvenue, et je vais le mettre ici. C' est, euh, inventer ça. D' accord. Et, euh je voulais trouver une zone même si ce n'est pas euh je voulais trouver une zone même si ce n'est pas nécessaire. C' est encore un modèle très courant, d' avoir un Dave qui détient tout le genre de, genre, le contenu principal. Et je vais appeler ce bloc euh, contenu. D' accord. Et, euh, dernière chose que je vais faire, c'est que je vais à un restaurant qui est un nouveau html, hum, attributs. Et je vais appeler ça aussi la nourriture bloquée ou parce que je veux être capable de le remplacer , euh, pas du tout imprimé. Ou, hum, ou ajouter des trucs à ça. Mais ici, je vais avoir un panneau de copyright et copyright 2014 par sur un petit hyper lien là-bas. Euh, tu sais, retour May Co et, euh, l'acte moi est parfait. Maintenant, j'ai ma base. Html semble vraiment bon. Hum, j'ai de l'avance que je peux remplacer par un titre. J' ai un message flash pour toutes les pages déjà construites dans Avoir un Contin, aéré et un pied de page. Commençons donc par la page de connexion. Alors, comment puis-je obtenir que ce basique semble malade ici ? Donc nous utilisons un mot clé froid étend, et donc je vais être capable de fondamentalement Ah, prendre tout ça et je vais dire, euh, euh, étend le code de base et vous le mettez plus bas. Je dois mettre des citations. Désolé. Et Flats va trouver n'importe quel modèle que vous avez avec ce nom Basij femelle. Et ça va plaire, rendre les choses évidentes pour cette tentative. Donc pour le titre, euh, aller à, hum, bloc, oups, bloc, hum, titre. Et puis je vais mettre, hum, appelons ça se connecter et finir chance et regarder, et ce que ça va faire, c'est, tu vois comment j'ai, hum, hum, bloque la journalisation des titres ici. Cela va aller ici, mais remarquez que je n'ai pas eu à inclure une tête de bloc et un bloc au début parce que cela signifie que si j'en ai , des balises internes mais remarquez que je n'ai pas eu à inclure une tête de bloc et un bloc au début parce que cela signifie que si j'en aiun, des balises internescomme des appartements de titre seront assez intelligent pour savoir que ce n'est pas le cas. On ne veut pas remplacer tout ça. Nous voulons juste remplacer cette ligne ici, et c'est une chose assez utile. , Pour nous, on n'a plus besoin de se diriger parce que la tête est définie, tu sais, ici. Et nous n'avons pas besoin de tout ça et ce que nous voulons faire c'est que nous allons définir ceci comme le contenu, donc bloquer le contenu qui et ça va être imprimé ou inséré dans cette zone. nous n'avons pas besoin de tout ça et ce que nous voulons faire c'est que nous allons définir ceci comme le contenu, Ici. Bloquer le contenu. J' ai l'action du formulaire d'action. Je n'ai plus besoin de ce corps ou de ce HTML, et je vais finir un bloc ici. Je n'ai plus besoin de ce corps ou de ce HTML, Cool. Nous traiterons donc de la page d'accueil un peu plus tard. Nous voulons juste voir que le il y avait des plaintes fonctionne bien. Voyons donc si nous avons des erreurs. Ça a l'air bien. Rechargeons donc la page de connexion et voyons ce qui se passe. Wow. Parfait. Donc, vous avez maintenant l'écriture de Kobe là, qui vient de l'à partir du modèle. J' ai la journalisation en pointillés. La société Acme, qui est le titre que je voulais avoir. Et, euh et tout le reste devrait marcher. Euh, la même chose. Donc, si je fais Jorge Jorge, je peux me connecter et je reçois le message. Bien que ce message vient de la page d'accueil. Donc ça ne compte pas. Mais finissons et voyons comment nous faisons le travail sur la page. Ok, alors faisons-le maintenant. La page d'accueil um, donc ici. Je n'ai pas besoin de ça, mais j'ai besoin d'une extension. Je vais juste copier ça d'ici, et ensuite j'aurai un titre. Et quand je nous mets la page d'accueil, euh et, hum voyez, et j'ai besoin que ce soit le contenu, non ? Bloquer le contenu. Hum, et c'est tout. Tu vois à quel point ça a l'air simple maintenant ? C' est, ah, assez réduit. Et maintenant, nous avons, euh, un moyen très facile de prolonger ça . Fondamentalement, Melanie va ressembler exactement à travers différentes pages. Donc, euh, voyons si nous avons une erreur et nous allons recommencer la journalisation. Allons à Jorge Jorge Logan. Voyez comment j'ai toujours le H ici. L' en-tête. J' ai l'accueil Jorge et moi avons ma nourriture. Ou qui apparaît dans chaque page. Si j'avais rechargement, je devrais me débarrasser du message flash. Voilà, tu y vas. Il a l'air bien. 40. Cookies: Ok, donc maintenant on va essayer quelque chose de nouveau, qui est, euh, utiliser des cookies pour pouvoir suivre la déconnexion de l'utilisateur. Et les cookies sont fondamentalement petits. Les fichiers sont enregistrés localement sur votre ordinateur et ne répondent qu'au domaine auquel ils sont associés. Donc, dans ce cas, vous seriez avec notre application I d ou plutôt bonjour de Syrie, le domaine u C neuf points io. Donc, Donc, on va apprendre à utiliser les cookies. Bien que, hum, c'est plus sûr ou sûr d'utiliser les sessions. Mais c'est ah, c'est une bonne chose d'apprendre à utiliser les cookies de toute façon, parce que les sessions sont basées sur des cookies. Et c'est quelque chose que tu devrais certainement avoir. Ah, et tout son propre sur la façon de le faire Pour que nous utilisions des cookies avec flasque, nous devons ah, utiliser une bibliothèque A ou une fonction appelée make response. Et faire réponse vous permet de modifier la réponse, um, que vous puissiez définir, euh, vous savez, Rex. C' est bien comme, hum, comme des cookies avec le même genre de comme sur le même. C' est un aller-retour, euh, ou sur la même demande. Alors faisons réponse aux bibliothèques de flasques ici sur les sommets. Et, euh donc on va remplacer ce retour Resurrect ? Ah, vous êtes un quatre avec un fondamentalement, nous allons créer un objet de réponse. Donc, nous allons faire des réponses égales, faire réponse, et ensuite la même chose Europe pour accueillir. Um, ce tout ça, tout ça. Et fondamentalement, nous faisons que je suis une réponse pour la partie de la redirection de la chose. Et maintenant, nous allons aussi mettre un cookie, et la façon dont nous allons le faire, c'est que nous allons réagir. Ça dit cookie. Et puis on a mis le nom du cookie et une valeur. Donc, dans ce cas est formulaire de demande, euh, obtenir le nom d'utilisateur, et nous fermons cela, et puis nous retournons la réponse. Donc c'est comme ça que nous faisons. Donc, comme vous pouvez le voir, vous savez, façon responsable. abord, créez un objet de réponse de marque qui a l'euro quatre. Bienvenue. Ce qui va être un peu comme une redirection. Je connais la même réponse. Nous étiquetons également sur ce site. Cookie, utilisez le nom. Hum, ça l'a dit. Nous allons également créer une fonction de regard qui nous permettra, comme, fondamentalement, comme, fondamentalement, de se déconnecter Et une déconnexion dans ce cas serait de supprimer le cookie, ce cookie de nom d'utilisateur dans, hum, dans le application si discrète, cette barre oblique fière Regardez et, euh, à d'autres conclusions quant à la méthode de déconnexion. Et nous étions plus ou moins la même chose que nous allons à Ah, répond, euh égaux font réponse et puis chaque Ah direct, vous êtes vieux pour, euh, Logan. Donc, dans ce cas, nous allons envoyer la personne orteil la page de connexion quand ils regardent dehors, et ensuite nous allons répondre, dit Cookie. Et c'est drôle comment ah, la façon dont vous les cookies de chef. Tu as dit que c'était, euh, l'expiration à zéro. Et, euh et vous mettez la valeur est noire. Ce troisième paramètre expire vous permet de définir la durée de vie des cookies. Euh et tu sais, tu peux mettre un cookie pour, genre, une heure ou une journée, etcetera. Je crois que c'est ah, c'est des secondes. Et puis vous renvoyez la réponse. Ok, euh, nous devons aussi changer l' accueil. Hum, donc on va faire les bienvenus comme devenir la route de l'application ou l'index l'application. On va nous trouver une barre oblique. Et ce que nous allons faire ici, c'est que nous allons obtenir le nom d'utilisateur du cookie et la façon d'obtenir une valeur de cookies. Vous le demandez. Cookie start obtenir utiliser le nom. Et si c'est vide, alors cela signifie qu'ils utilisent son nom n'a pas été défini. Donc on va régler ça sur s'il y a un nom d'utilisateur dans ce cookie que nous faisons ça d'autre. Nous retournons une redirection à la fille pour regarder. D' accord. Ok, alors voyons si on a des erreurs. Hum, que nous allions bien. Donc maintenant, nous allons aller à la racine de la page d'accueil et voir comment ça me renvoie pour me connecter parce que je n'ai pas de cookie dit, hum et il y a un moyen de voir les cookies. Si vous allez à, um sur chrome sur le fichier, um, um, voir développeur, outils de développement. Vous pouvez ouvrir ceci essentiellement ces aides, et ensuite nous pouvons aller à, euh, ressource est cool touches et cliquez sur votre application. Et c'est contre l'un ou l'autre. Il y a, monsieur. Il y a quelques cookies là-bas accepteraient, mais ils ne sont pas vraiment de notre application. Ils ressemblent plus à des trucs d'aide de Cloud 9. Donc on va pouvoir suivre quand le cookie a dit là-dedans. Hum, et il devrait avoir le nom utilisé son nom. Donc la connexion droite, hum, le moi moi mon statut pendant une seconde, et ensuite on va faire Jorge courtiser le slogan haleine. Et il y a quelque chose qui ne va pas ici. Tu vois ? Pourquoi imprime-t-il le nom d'utilisateur égal plaie, je suppose. Il y a redirection. Hum, ça ne marche pas bien. Oh, je vois que vous avez un genre d'ici. Hum, je devrais faire une réponse. Pas euro quatre, mais plutôt rediriger. Donc, c'est faire réponse. Redirige-toi, Earl pour le travail. Et je n'ai plus besoin d'utiliser son nom ici parce que je l'ai retiré. Donc c'est, euh, voir cet accueil. Il n'a plus ce pilote. Tellement désolé pour ça. Hum, donc réponse. Les aigles répondent. Rediriger vers l'Europe pour la bienvenue. Et ça devrait être, c'est ton travail. Alors voyons encore ici. Hum, donc je suppose que si le moyen de voir qu'il voit ici que le nom d'utilisateur a été dit, vous voyez comment le nom d'utilisateur ? Il a dit avec Jorge. Donc supprimons que nous pouvons appuyer sur un peu X ici orteil la session leader. Et essayons encore ça. Alors, prends le nom de Jorge. Mot de passe Jorge. Pas de gain. Et maintenant ça marche. Je suis donc entré dans la page d'accueil et j'ai remarqué que nous n'avons pas de nom d'utilisateur ou barre oblique. Bienvenue barre oblique Jorge. Ceci est lu à partir du cookie. Et nous pouvons vérifier ici qu'ils cuisinent le set juste ici. Nom d'utilisateur et prostituée. Hum, donc ça marche parfaitement bien. Ok, alors allons bien, dirigeant directement la fonction de déconnexion et ce cookie devrait disparaître, et nous devrions être renvoyés à la page de connexion. Alors voyons ici, regarde dehors. Donc tu ne l'as pas trouvé ? Voyez pourquoi un fier Oh, il me manque un panier dehors. Voilà, tu y vas. Alors regarde dehors. Parfait. , Voyons voir, il n'y a plus de cookie de nom d'utilisateur. Donc ils en commencent un autre qui dit, um, Robert Robert Logan encore bienvenue, Robert. Et utilise son nom. Robert est là ? OK, mais je ne veux pas écrire comme, vous savez, regarder manuellement ici, donc je préfère le mettre sur un modèle. Donc, la meilleure façon pour le lieu de repos de mettre cela dans est sur le, um sur le modèle d'accueil réel, hum , qui est dur comme Index. Et on va le mettre sur le ah, on va ajouter quelque chose ici. Bienvenue. Utilisé son nom et on va l'avoir enveloppé équivaut à votre URL 4. Regarde et on met la déconnexion. Non, et parfait. Donc maintenant avoir l'euro pour se déconnecter et se déconnecter liaison là-bas. Et c'est toujours en train d'essayer avec Robert. Robert. Donc vous savez, j'ai ma fonction plus longue à laquelle je peux accéder Le nom d'utilisateur est là. Regarde dehors. Plus de cookies pour cet utilisateur, donc l'air vraiment bien. 41. Dossier statique: Donc une chose que j'ajouterais est un petit local pour que, vous savez, ça semble un peu plus agréable. Et j'ai trouvé ce logo sur Internet. C' est comme un logo générique, , et vous pouvez y accéder sur Ah, sur mon compte get hub qui est lié sur la sur cette leçon. Mais en tout cas, je vais sauver cette image. Et je vois Étais-tu sous cet arrêt mon logo. Et maintenant, je veux transférer ça à l'orteil. L' application ici. Donc, créons pour tout ce que des fichiers statiques comme cette image, nous voulons créer Ah, ce qu'on appelle un répertoire statique et que les répertoires automatiquement reconnus par flask comme un, um tout comme les modèles, comme un endroit où vous allez mettre essentiellement des fichiers qui ne sont pas des fichiers python, mais des images. JavaScript, fichiers, fichiers CSS, ce genre de chose. Donc, créons un dossier, appelons-le statique. Et maintenant, on va ajouter le logo à ce dossier statique. Et allons-y. Donc, nous devons faire est de faire glisser le fichier et le mettre sur le dossier statique, voir comment il convertit les fichiers que je peux aimer un peu Barbaro. Nous sommes fondamentalement cela vous permet de télécharger ce fichier. Donc maintenant, nous avons l'AG Melo là. Si vous cliquez dessus, vous verrez, Comme un aperçu ici, ce qui est assez cool. Euh, vous pouvez aussi réciter et tourner. Hum, et, euh, disons que c'est le local. Donc maintenant, nous devons l'ajouter au modèle de base. Droit ? Parce que nous sommes allés à nous l'avons fait apparaître partout. Alors allons-y et entrons dans la base. Et je vais l'enlever et le mettre quand je l'appellerai. C' est un I D. Je veux dire, un diff que j'ai fait logo. Et ici, nous allons mettre une source principale, euh, égal et avis vont faire un euro pour mais je vais mettre une virgule statique, et puis le nom de fichier est égal. C' est comme une convention pour ah, flasque, ce qui nous permet de charger extatique, euh, des actifs à la page religieusement. Et je veux dire que c'est Acme Corp. Ce qui est comme ça, l'indice, et je vais mettre Ah, hauteur off. Euh, 150 pixels. C' est ça. Alors voyez si j'ai des erreurs. Ça a l'air bien. Donc maintenant, ce que nous faisons ici, c'est que nous servons un fichier statique et statique. Cela signifie que ce n'est pas un fichier python qui sera affiché sur une page propriétaire. Alors rechargeons la page. Parfait. C' est Ah, j'ai regardé ça de façon supposée. Donc si je le mets sur la bonne taille, c'est comme la taille réelle. Ça air un peu mieux, mais juste pour que vous puissiez lire mieux quand je l'ai mis là. Encore Eso, Jorge, Jorge, connectez-vous à Perfect. Nos images de fichiers continuent d'apparaître là, et c'est ainsi que vous faites des fichiers statiques sur flasque. 42. Sessions: D' accord. Donc, comme je l'ai mentionné plus tôt, nous n'utilisons généralement pas de cookies. Um, pour les applications. En raison des problèmes que nous avons décrits précédemment, par exemple, ont pu voir, vous savez, les valeurs des cookies ici sur le on sur la ressource est hors de cette page Web , Où sont les sessions sont plus sécurisées car elles sont encodées. Um, c'est aussi plus facile d'utiliser le soulagement des sessions ou non. Alors, Cookie. Alors listons cette année, nous faisons ça au lieu de répondre, nous allons importer des sessions. Non, la bibliothèque de session, et puis on va juste supprimer ces trois choses ici, et on va déclencher la session, utiliser son nom est égal, hum, demander le formulaire de demande, Utilise son nom, et puis on va retourner une, euh, redirection pour l'euro pour, euh, Bienvenue. Hum, et après la déconnexion, pour qu'on puisse, hum , manger le cookie, on va juste ou dans ce cas, la séance. Nous n'avons pas de session pop et passé leur nom d'utilisateur. Euh, et, euh, et puis on Mark, on vaut mieux personne ici, et, hum, enfin on est revenus. Rediriger. Ah, tu es un pour la journalisation. Donc, c'est à peu près c'est un Donc, vous pouvez le voir lire plus facilement. Ça a l'air mieux. Euh, et essayons ça. Alors regardons ici. Hum, je dois en fait, genre, supprimer manuellement parce que cette surveillance fonctionne maintenant à la recherche de sessions au lieu de cookies. Essayons Jorge à nouveau et refoulé. Connectez-vous. Et, euh, il faut qu'on vérifie autre chose, je crois parce qu'on ne vérifie pas la séance. On vérifie le cookie. Droit ? Donc ce n'est pas maintenant ce n'est pas les frais que son nom est, hum, demander des cookies, obtenir le nom d'utilisateur. Nous devons faire ce qui suit. Um, mec, c'est avec la libération. Nous disons juste, si le nom d'utilisateur ah, chaîne dans l'objet de session, alors, um, nous pouvons retourner. Modèle de rendu. Le nom d'utilisateur est égal à la session désactivée. Ah, utilisez votre nom. C' est à peu près tout. Alors, euh, allons à la page d'accueil. Et maintenant c'est C'est ah, ça a l'air bien. Bienvenue, Jorge. Regarde dehors. Et comme vous pouvez le voir ici, c'est, vous savez, ça s'appelle session, et c'est juste un tas de personnages que nous ne connaissons pas vraiment. Tu sais quoi ? Ils sont là où ils sont. Mais dans cette chose encodée, la force. Hum, c'est en fait la valeur du truc horti. , Jorge, nom d'utilisateur. Donc, si vous vous déconnectez, vous verrez que cette session n'est plus là. Cet essai atteindrait blessé, et Richard, puis encore et avec succès connecté. Bienvenue, Richard. Tout a l'air bien. La session est définie. Et, hum, si je recharge la page, je devrais voir ce message flash disparaître. Donc j'ai l'air bien, euh, et beaucoup plus sûr. Comme je l'ai dit, il est là pour utiliser, euh, et, euh, on va jeter un oeil à une dernière chose, ce qui est quelque chose que je te promets, qui est de savoir comment générer une bonne clé secrète. Ok, donc voici un truc à générer. Ah, la clé secrète. Et c'est vraiment facile. Il y a une fonction que nous pouvons tirer parti de, hum, de Python. Hum, et ça s'appelle Es-tu aléatoire ? Donc pour que nous puissions faire cette clé du générateur, nous allons aller au contrôle du terminal, voir arrêter le serveur, et ensuite nous allons faire python. Et ici vous faites ce qui suit faire importer os, et puis vous orteil os vous aléatoire et puis 24 qui est comme 24 bits sur. Vous obtenez ça, genre, très étrange regard. Hum tu sais, liste de personnages. Et si tu frappes à nouveau, tu en auras un autre. Mais dans tous les cas, c'est ah, bon, um, um, String pour nous mettre en tant que thèse ECR c'est clé pour votre python. Je veux dire, pour votre demande d'appartements. Donc tu viens de copier ça, euh, et ensuite tu es basé ici, et ça va être ma nouvelle clé secrète. Donc si nous gardons là, euh, et essayons C o, nous devons, genre, remettre le serveur en marche, donc je pense que ce sera pourquoi ? Et on va recommencer. Jorge, Jorge, aucun gain parfait. Fonctionne bien. Et c'est, ah, ah, clé secrète super sécurisée que c'est très difficile pour quelqu'un de faire de l'essence. Alors tu te souviens de ce truc ? Hum, et, euh, maintenant nous avons une application plus sécurisée. 43. Loggers: dans cette leçon secondaire. Je veux vous parler des lagers, ce qui n'est pas important. Hum, composant de n'importe quel développeur Web l'a pris. Et, hum, il est toujours utile de savoir ce qui se passe avec votre application en termes de off. Comme ce qui se passe, surtout quand les utilisateurs regardent ou voient des erreurs, c'est que nous enregistrons des erreurs et, hum, n'importe quel genre de, ah, sur des situations attendues pour enregistrer des fichiers, puis comme, L' application Assad est la vie. Nous regardons ces fichiers de verrouillage soit sur le terminal, euh, notre utilisation Il y a beaucoup de bons outils tiers pour regarder ce regard aussi vite. Mais voici une petite introduction à, hum, la journalisation et comment vous faites. Um, vous vous connectez avec votre application Flats. Donc ce qu'on va faire ici, on va se connecter chaque fois qu'il y a un problème avec le mauvais nom d'utilisateur et mot de passe entrés par l'utilisateur. Donc, euh, on va faire ça, on va importer la journalisation, qui est le service de journalisation Python. Et nous allons utiliser, euh, le gestionnaire A appelé gestionnaire de fichiers rotatifs. Rotation 500 vous permet de ne pas remplir l'espace de votre serveur complètement par ah , vous savez, vous savez, générant automatiquement des fichiers journaux qui ont, comme, comme, timbres de date. Et puis une fois que vous entrez dans un certain nombre hors dates, puis il copie automatiquement cela dans ah ah, un nouveau fichier et l'archive comme un numéro séquentiel suivant. Et puis ainsi de suite. Et enfin, le dernier, vous savez, le plus vieux fichier hors aime il va supprimer automatiquement du serveur. Mais, euh, vous pouvez en savoir plus sur la rotation des gestionnaires amusants sur le Web. Mais pour l'instant, je veux vous voir comment nous faisons cette année. Donc, euh, ce qu'on va faire, c'est qu'on va avoir un, hum, on va introduire une erreur, hum, plus longtemps ici. Donc nous avons cette région gloires et même mot de passe Nous allons maintenant utiliser, euh, l'abside lager. Et nous le faisons en utilisant un blogueur. Cet avertissement. Alors avertissement. Il y a différents niveaux hors de l'intérêt pour les journaux. Et puis vous pouvez choisir de, um vous savez quel niveau vous voulez enregistrer dans le fichier afin que vous puissiez le faire à partir, vous savez, vous savez, de l'avertissement à l'air aux erreurs réelles ou à partir d'informations etcetera. Donc, vous pouvez avoir différents types d'entrées et de demandes de renseignements, puis mot de passe n'est pas un comme un air super sévère, donc nous allons l'appeler un avertissement. Donc, ici, on va garder le pied dans le dossier. Incorrect. Ah, utilisez son nom et son mot de passe pour vous, monsieur. Et puis on va imprimer le nom d'utilisateur. Donc on a ça dans le dossier, et on va, hum , demander ce formulaire. Ne vous utilisez pas son nom nous parce que ce pourcentage s, um string. Ok, c'est à peu près tout. Ah, donc on n'a pas d'air ici. Oh, c'est incorrect. Oh, je, euh ouais, je fais une double cour du début et d'une qualité. Et là, vous, hum et nous devons mettre en place la journalisation comme, mis en place dans la section principale du nom ici. Donc on va le mettre après la clé secrète. Et commentons cette journalisation US afin que nous ayons une section là, donc le gestionnaire est égal à gestionnaire de fichier rotatif. On va appeler l'erreur de fichier, et on va mettre la quantité maximale d'octets par fichier sera de 10 000. Et nous ne ferons ferons un seul dossier. Et après ça, c'est un peu comme supprimé. Donc nous garderons deux dossiers au plus un. C' est le feu ouvert sur le dos. Vous pouvez en savoir plus sur les paramètres que vous pouvez mettre ici. Et comme je l'ai dit, on va faire ce niveau qu'on va mettre qui est, genre, le plus basique. Et comme je l'ai dit, on va faire ce niveau qu'on va mettre qui est, genre, Donc on aurait tout perdu. Et enfin, pour rendre cela nous a permis d'ajouter plus de points au gestionnaire puis au gestionnaire, qui est ce que nous définissons cette zone viable. Alors c'est tout. Hum, il va enregistrer sur le dossier racine, euh , sur le flacon dans ce niveau, on va voir un fichier journal des erreurs. Passe et souviens-toi, Very. Si vous utilisez, vous obtenez. Devrais-je être ignoré ce dossier parce que vous ne devriez pas l'avoir sur votre rapport. Alors évadez-vous à la campagne pour voir s'il y a des erreurs, il n'y en a pas. Donc ce qu'on va faire ici, on va voir qu'on va créer une erreur, donc on va faire Jorge Ah, 12345. Quel est le mauvais mot de passe ? Journalisation. D' accord. Incorrect. Utilisez le mot de passe Ram jusqu'à ce que rien ne soit arrivé Mais si je vois ici maintenant, je vois un fichier journal d'erreur. Plutôt intéressant, hein ? Et si je ressemble à ce que je dis, encourage un ambassadeur pour vous, Sir Jorge. Donc, comme vous pouvez le voir, choses très utiles comme vous pouvez mettre comme la connexion dans différentes parties de votre application afin que votre genre de comme une usure quand les choses sont en panne. Um, et c'est en plus du téléphone à tarte, comme les erreurs de trace de pile, qui sont celles comme les 500 erreurs. Quel bras ou sept ans acheté ? deux-là Entre cesdeux-là, je pense que tu peux. Vous pouvez avoir une assez bonne idée de ce qui se passe avec votre application. 44. Table utilisateur: Parfait. Nous avons donc notre table d'utilisateurs créée dans la base de données. Mon application flasque. Donc maintenant on va utiliser, hum, ou insérer la première ligne pour ça, hum, pour cette table. Et donc je vais l'utiliser avec, hum, avec mon propre nom d'utilisateur, et vous pouvez le faire avec le vôtre pour que vous puissiez l'insérer dans yusor, qui est la table dans laquelle nous voulons insérer. Et puis vous mettez des valeurs et nous allons mettre chacune de ces valeurs pour les champs, comme l' utilisateur I d nom d'utilisateur et mot de passe. Parce que l'utilisateur ce sont mes incriminants propres. Vous venez de mettre une citation, une citation parce que nous ne voulons pas passer le nombre réel, nous pourrions passer le nombre, mais alors cela conduirait à comme, nous aurions besoin de vérifier. Quel est le prochain numéro ? Tout ça, tout ça. Donc j'ai juste mis une citation là, et on va avoir ah, on va mettre Jorge, qui est le nom d'utilisateur, non ? Et enfin, je ne vais pas avoir à utiliser Jorge Jorge comme passeport pour femmes. Donc je vais créer un très stupide et jamais utilisé ce mot de passe sur vos propres applications. 12345 eso C'est l'utilisateur i d le nom d'utilisateur et le mot de passe. Alors, mettez fin à la parenthèse et dites, Michael, appuyez sur Entrée et il dit requête. Ok, une rangée affectée. C' est Ah, c'est bien. Alors, comment peut-on voir si cet enregistrement a été stocké ? Nous faisons juste une sélection des déclarations. Elect est fondamentalement, comme une requête ou un filtre. Hum, et tu peux passer l'ami comme des conditions à lui. Mais pour l'instant, on va juste, euh, montrer tous les enregistrements, qui dans ce cas, n' est qu'un. Alors choisissez l'étoile de Ah, vous, monsieur ? Non. Et point-virgule et entrez. Voyez à quoi il ressemble à un fichier Excel. Donc, nous avons l'utilisateur. Je vois comment il met automatiquement l'avertissement là. Ah a utilisé son nom, le nom d'utilisateur et le mot de passe. Donc c'est parfait. Nous avons la ah, la route là-bas. Donc maintenant, on va brancher ça avec notre application de flasque. Alors sortons x de ma suite. Vous pouvez faire ah, contrôler le je crois ou vous pouvez mettre sortie et puis parenthèse. Apprentis. Um, point-virgule. Donc, euh, je pense que tu n'as pas besoin de mettre le prentice. Voilà, tu y vas. Hum, et laissez-moi voir si je peux le faire avec le contrôle. Chez Dia ? Eh bien, oui. Les mots ive contrôlés étaient à la fois python et ma suite a demandé la fin. Ok, parfait. Alors rappelez-vous maintenant comment nous avions, euh exigences Txt. Et je vais juste du bétail dont tu te souviens. Donc, nous avons jusqu'à présent flasque. Et par ma suite, donc deux lignes. Um donc pour que nous puissions installer le par ma suite, nous pouvons essentiellement installer le fichier entier en faisant la commande suivante. Pip, installe notre néerlandais nos exigences. Ce que ça va faire, c'est que, hum, peeping, volé ou empaqueter par un emballage a volé toutes les différentes bibliothèques que vous avez répertoriées leur dans ce cas flasque et par ma suite. Mais comme les flashs déjà installés, ça ne va rien faire. C' est supposé, comme sauter. Hum, donc il va effectivement juste installer par ma suite. Donc pourrait encore que et voir ce qui se passe. Parfait. Donc, il est dit, vous savez, les exigences déjà satisfaites pour le flacon. Et c'est avec succès, vous savez, téléchargé et installé par ma suite. Donc maintenant, par ma suite est fondamentalement la bibliothèque qui nous permettra de parler orteil le serveur ma suite de notre application flasque. Ok, donc, hum, mettons ce, euh, moi minimum ou minimisons hum, mettons ce, euh, euh, , hum, la fenêtre. Et, euh, c'est clair ici. Encore une fois, si vous voulez voir les exigences, l'extrême qui semble avoir une flasque par ma suite là-bas. Encore une fois, si vous voulez voir les exigences, Alors fermons ça. Hum, on va juste faire l'application bonjour maintenant. Alors contrôlez l'évasion. Donc on voit tout le terminal ESO maintenant on va avoir sur bonjour, pourquoi ? On va devoir importer par ma suite. Et nous le faisons en faisant par ma suite ici en haut. , Et maintenant, le père qu'on doit aimer Look est la valeur, Logan, parce que c'est là qu'on fait la vérification, non ? Et maintenant, le père qu'on doit aimer Look est la valeur, Logan, Logan, parce que c'est là qu'on fait la vérification, Donc, cela n'a aucun sens de vérifier si votre nom de famille est égal à mot de passe. Parce que ce n'est pas ce qu'on fait. On va aller à la base de données et voir s'ils ont utilisé son nom et le mot de passe correspondent . Ensuite, euh alors nous allons retourner cela à l'application avec un vrai et si cela ne correspond pas , alors nous allons retourner un faux. Alors, qu'est-ce qu'on fait ici ? On va éteindre cette lumière et on appellera ça si les données retournent vraies. Els Return tombe. Mais qu'est-ce que c'est ? Des données ? On va commencer à faire ça ici. Donc je vais juste mettre ici un commit un commentaire, c'est que ma suite, Block. Donc on va devoir définir un, euh, numéro de Constance. Celle-ci est ma suite, celle de son hôte. Et ça, tu vas devoir faire exactement comme je tapais ici. , Si vous le faites avec votre propre serveur,c'était votre propre, euh, genre, installation locale de ma suite. Ces chiffres peuvent changer. Et vous devez suivre n'importe quel tutoriel ou, vous savez, aide fautive que vous utilisez. Je ne pourrai pas soutenir ça, mais, hum, hum, ce n'est pas si compliqué. Hum, et, euh, tu devrais avoir ça. Obtenez quelques idées à partir de cette vidéo. Donc les tuyaux que la lumière locale soit l'utilisateur de la base de données sont, euh, dans mes cas, de la Syrie à vous. Alors rappelez-vous comment, quand on avait le terminal ici qu'il disait, euh, il y avait un nom d'utilisateur créé ce producteur ici qui est l'utilisation ou vous allez utiliser sur ceci est mon utilisateur secret de base de données ici. Ok, alors assurez-vous que quand vous créez une base de données pour prendre note de ça, alors nous allons utiliser Ah, ma suite qui a un mot de passe. Et nous avons su parce que par le club complet neuf ne crée pas de mot de passe, et vous pouvez créer votre propre passeport. Mais ce n'est pas vraiment nécessaire parce que c'est juste à des fins de développement. Donc personne d'autre n'utilisera ça. Ils ont un endroit où vous ne pouviez pas établir votre passeport, et vous pouvez regarder le tour et comment le faire. Enfin, nous devons passer la base de données le B, qui est, euh, comme vous vous souvenez de ma fiole. C' est ce qu'on appelle la base de données. Quand on a créé ça, je mélange ici, non ? Euh, et on a presque fini ici. Donc maintenant, nous savons que nous devons mettre en place une connexion à la base de données en utilisant ces, euh, ces constantes. Donc nous allons le faire par ma seule connexion, et donc nous allons dire que l'hôte est égal à mes bases de données de suite Hôte, euh, vous, monsieur, euh, euh, égal à mon utilisateur de base de données de suite. Le mot de passe est ma suite. Mot de passe de base Je sais que j'utilise WD passé. C' est comme ça que la chaîne est. Je veux dire, le département ou est appelé et ensuite DV est égal à ma suite, celle d'un Stevie. Ok, donc maintenant nous devons créer un curseur, qui est fondamentalement comme un pointeur qui nous permet de rechercher des choses et de faire des opérations avec la base de données. D' accord. Et on va le faire et l'exécuter. On va exécuter une commande sur, hum, hum, de ma suite en faisant ça, en exécutant, euh, euh, méthode. Et qu'est-ce qu'on va exécuter ici ? Nous devons essentiellement sélectionner, qui me souviens que je vous ai dit était un peu comme une star de Fichter, qui est de sélectionner des champs plus anciens pour ce rôle de vous, monsieur, où utiliser son nom est égal. Et il n'y avait pas de bus. Une chaîne ici et un mot de passe équivalent à une autre chaîne. Maintenant, on va mieux, et, euh, donc pour cent ici pour qu'on puisse faire les remplacements et on va dire, euh, utiliser son nom et vite, qui sont ceux qui sont sont passés ici en haut de la fonction que vous pouvez voir en utilisant un mot de passe. C' est les mêmes ici. Alors, voilà. Donc, cette commande dit de sélectionner une ligne qui, euh, euh, à partir de l'utilisateur de la table, où le nom d'utilisateur est égal à n'importe quel Jorge et le passeport est ce que j'ai passé l'année dernière, vous savez, 12345 est un bon un. Mais on va jouer avec le bon et celui de l'enquête. Et enfin, nous devons récupérer les résultats du serveur vers notre application. Et la façon dont nous faisons cela est en disant malédiction ou en récupérant un et en sécurité. C' est si on l'a toujours fait. Nous ne courrons pas vers ça des façons. Je veux dire l'application encore, donc c'est à peu près tout. Cela a l'air très drôle au début. Et pour être honnête, ce n'est pas le cas. Ce n'est pas la façon dont vous allez faire l'application la plus avancée sur laquelle nous allons commencer à travailler dans la section suivante. Mais cela vous donne comme une idée de ce qui se passe, ce qui se passe en arrière-plan. Et il y a toujours un peu comme certains paramètres, que ce soit un vase là, curseur que vous devez commencer, puis une commande pour récupérer les informations dont vous avez besoin. Alors essayons ceci et voyons comment cela fonctionne. Donc, nous allons notre serveur, euh donc python Bonjour P y Eh bien, les avocats. C' est bien. Tellement parfait. Allons donc à la page de connexion. Ou plutôt la page d'accueil Il re nous envoie ou redirige est de se connecter. Donc maintenant on va utiliser Jorge Jorge, qui est le mauvais. Parce que rappelez-vous, nous avons inséré ce disque avec Jorge. 12345 et appuyez sur Logan. Wow. Demandes de renseignements et passeport. C' est génial. Ça veut dire que, euh et c'est drôle, comme si ça imprime aussi la journalisation ici. Comme vous pouvez le voir, çaveut dire qu'il s'est connecté à la base de données et est allé chercher, euh, ou une recherche. veut dire qu'il s'est connecté à la base de données et est allé chercher, euh, Désolé. La recherche sur, hum, de vous, monsieur. Table où le nom d'utilisateur est Jorge et passe soucis Jorge. Et ces données sont vides. n'y avait pas eu de succès, donc, euh fondamentalement, cette bêta a été retournée false. Et puis ça est allé dans ce bloc. Où ? Demandes de renseignements dans le passé. Où est réglé ? Alors écrivons avec le bon. Jorge. 12345 Et donc accepter. Vraiment aimé. Impressionnant. C' est tellement génial. Hum, donc cela signifie que nous avons correctement configuré celui d'Ace Server qui communique orteil a à notre application et nous nous rapprochons enfin de ce à quoi ressemble une vraie application, qui est d'avoir un nom d'utilisateur Ah et table de mot de passe ou une table d'utilisateur que nous pouvons frapper et obtenir des réponses et être en mesure de voir si le si c'est le bon nom d'utilisateur et mot de passe. Donc une fois de plus, travail génial et la section suivante va fondamentalement prendre cela au niveau suivant. Ça va être incroyable. Mais pour l'instant, vous savez, asseyez-vous, détendez-vous et joie et, vous savez, fête un peu ce que vous avez fait jusqu'à présent. Ah, dans le cours, et on va te voir dans la section suivante pour commencer notre application de blog sur la vie riale. 45. Intro Mysql: Alors je veux vous féliciter parce que vous avez fait un long chemin. On a déjà vu beaucoup de choses de flasque. Donc, tu sais, tu devrais te sentir fière. Hum, que vous êtes arrivé à ce point, nous avons une application de journalisation assez décente que vous êtes arrivé à ce point, nous avons une application de journalisation assez décenteet, vous savez, déconnexion. et, vous savez, Ceux-ci sont très fondamentaux. Hum, le blog est pour construire n'importe quelle application, donc vous savez, vous devriez être Ah, définitivement, hum, fier de vous-mêmes. Hum, et nous sommes prêts à faire la dernière étape sur cette section. Et c'est d'introduire enfin, euh, essentiellement la base de données. Je pensais que je faisais partie de notre application de journalisation sont journalisation. Donc, Donc, une chose que nous allons exiger dès le début, c'est qu'on va devoir installer un paquet. Hum, et ce paquet est appelé par ma suite. Donc, um, pour que nous puissions faire ça, euh, on va devoir, tu sais, Peeping a volé une nouvelle ah, nouvelle bibliothèque. Et, euh, j'aime garder les anciennes essentiellement toutes les bibliothèques que vous avez besoin de votre application dans un follicule exigences. Txt. Donc, créons ce fichier et au nouveau fichier. Donc on va l'appeler « Requirements Txt ». Et, hum, il est bougé. Ils ont dit que ce sera là et ce que nous avons installé jusqu'à présent, c'est flash. Donc on devrait mettre une flasque là-dedans, et, euh et on aura cette nouvelle bibliothèque appelée, hum, par ma suite. Donc par mon C. Alors sauvegardons ça. Et, hum, maintenant nous allons faire quelques commandes sur le terminal, donc nous allons ah, maximisons ça. Et voyons ce qu'il faut faire ici. Ok, sortons, hum, du, hum du serveur. Et donc la façon dont Cloud 9 utilise ma suite, elle est déjà intégrée. Donc c'est plutôt bien si on le fait si on fait ça sur votre ordinateur portable personnel ou PC, hum, tu dois installer mon secret. À ce stade. Je ne vais pas couvrir ça, , et je ne peux pas le soutenir. Donc, je vous recommande de regarder quelques tutoriels sur le Web sur la façon d'installer ma suite. Mais en tout cas, ah, ici dans le nuage neuf. Une partie de la raison pour laquelle j'ai choisi cet environnement est qu'il a déjà mon bâtiment suite , donc c'est une bonne chose. Ne vous inquiétez pas d'installer mon secret. C' est déjà là, mais nous devons d'abord démarrer le serveur, et la façon dont vous le faites c'est que vous faites ma suite, CTL, qui est le contrôle Start, et vous verrez qu'il dit que c'est insultant ma suite. Il recommence, vérifie les tables et maintenant nous avons, ah, ah, utilisateur racine de Syrie, la base de données U et A qui a été créée pour nous. Donc, il commence à mon serveur de suite, et c'est fait parfait. Ça a l'air, tout a l'air bien. Alors maintenant qu'on a mon secret en cours, comment interagissez-vous avec ça ? Eh bien, il y a deux façons de passer par l'application et par la bibliothèque que nous installions par ma suite. Mais, vous savez, vous voulez faire une mise en place initiale, et la façon de le faire c'est que ma suite a son propre terminal. Pensez-y, je dis,un peu comme si je dis, nous entrons dans un terminal dans le terminal, et ce terminal s'appelle l'interface de ligne de commande ma suite. Et donc ce que nous allons faire maintenant c'est nous allons créer notre première base de données ah et notre première table. Donc, pensez à une base de données comme une collection. tables hors tables et les tables sont fondamentalement des lignes et des colonnes et plus ou moins comme un fichier Excel si vous n'excellez pas, Um où vous avez, comme, sur les colonnes, vous avez le comme le mot de passe de nom d'utilisateur, vous savez, date de désinscription, ce genre de choses. Et puis les rôles sont comme le genre réel de, comme les données. Donc on va créer un ah, table de mot de passe à la cannelle, hum, appelé utilisateur. Et nous allons essentiellement sauver nos utilisateurs dans ce tableau. Alors comment on entrera dans la ligne de commande de ma suite ? Tu me laisses effacer l'écran ? Donc, nous avons un clair que nous faisons mon contrôle de suite, comme nous l'avons fait avant. Et vous tapez c l I et nous sortons. Tu sais, ma suite. Bienvenue. C' est génial. Hum, donc maintenant on va créer notre première base de données. Donc, il s'avère que ma suite vient déjà avec quelques bases de données. La façon dont vous pouvez voir cela est que vous affichez la base de données. Et une chose que vous remarquerez que vous allez probablement oublier parce que nous n'utilisons pas virgules sur python. C' est à chaque extrémité de la commande que vous tapez dans ma suite ? Tu nous as mis dans ma colonne. Si vous ne mettez pas ce point-virgule, ça va vous plaire dans une presse et mes choses secrètes que vous êtes encore un peu comme écrire comme une commande multi-ligne. Assurez-vous donc de mettre le point-virgule à la fin. Donc, si je montre cela une base, je vois toutes les bases de données. Et comme vous pouvez le voir, il y a un C 91 ici. C' est celui que Cloud 9 a créé pour nous. On ne va pas l'utiliser, mais c'est comme rendre les choses plus faciles. schéma d'information d'un autre, schéma de performance et mon secret, qui sont des bases de données de vélo internes. Donc, vous n'avez pas à vous soucier de ces remarques que j'ai utilisé des majuscules pour montrer qu'une base parce que c'est une bonne pratique de différencier entre mes commandes faucilles et les variables en utilisant , euh, euh, Vous savez, majuscules pour les commandes de mon Siegel et, hum, et des majuscules basses pour les Bibles ou les noms de table ou ce genre de choses. Parfait. Donc créons à propos de la base de données que nous allons utiliser. Donc, pour cela, nous utilisons la commande Créer la base de données, et nous allons l'appeler mon flasque sur le score sur l'application de partition. Et rappelez-vous que dire mon rhume. Droit ? Parfait. Alors, comment puis-je voir qu'il a été créé ? Je peux faire Arrow pour revenir dans les commandes précédentes, aller dans lesbases de données show, et si j'ai appuyé sur Entrée, je verrai que mon opération flasque est maintenant là, donc ça a vraiment bien fonctionné, Je peux faire Arrow pour revenir dans les commandes précédentes, aller dans les bases de données show, et si j'ai appuyé sur Entrée, je verrai que mon opération flasque est maintenant là, donc ça a vraiment bien fonctionné, ok, alors rappelez-vous que je vous ai dit que les bases de données sont des collections de table, donc nous ne pouvons pas réellement stocker quoi que ce soit sur cette base de données. Nous devons créer une table dans la base de données. Mais avant de faire quoi que ce soit avec cette base de données, il est utile de juste, hum, entrer ça ressemblait à entrer dans cette base de données demandé comme il élève que nous allons utiliser pour y ajouter des choses. Donc pour ça, on venait et on utilisait ma fiole, hum, demi-côlon. Et maintenant, vous voyez que c'est un état d'échange. OK, maintenant cela signifie que mes appartements copie la dynamique dans laquelle je suis et où je suis en train de créer ou, vous savez, peu comme affecter avec les commentaires que je suis en train de suivre. Alors créons la table. On va juste utiliser un mot de passe de nom d'utilisateur, et on va avoir un utilisateur. Je d qui est Ah souvent vous verrez cela dans mes bases de données de suite. Vous avez un I d ça. C' est un nombre qui incrémente comme 1234 C'est fondamentalement comme le numéro de ligne. Et mon secret s'occupe de l'augmentation de ce numéro automatiquement pour nous. Hum, donc on va juste aimer le marché comme le demandait le I D mais voyons comment ça se fait. Toe créer une table. Vous, monsieur. Voyez comment ça va, utilisateur avec, euh, pas en majuscules en bas majuscules parce que c' est ah, c'est Ah, c'est un moyen de table, puis appuyez sur parenthèses et entrez. Maintenant, remarquez que je ne fais pas de point-virgule ici parce que je fais une commande multi-ligne et que je vois cette petite flèche là. Ça veut dire que mon secret est d'attendre plus d'échantillons de notre part. Donc le premier champ va être utilisateur. , les Souvent, lesgens et moi-même utilisent si c'est une idée. Utilisez simplement votre autorité, comme sans le trait de soulignement. Hum, mais je vais le mettre avec un trait de soulignement ici pour que vous, comme, vous savez, réalisiez immédiatement que c'est l'usage. Un droitier. Donc après le nom du champ, on a besoin d'orteil. Donc après le nom du champ, Dis-le. Dis à mon secret. Quel type hors champ. Donc nous allons appeler ça un entier parce que c'est un nombre entier 1234 et ça peut aller, hum, à un nombre très élevé. Donc je ne pense pas qu'on ait besoin de le dire secrètement. Donc c'est un pas savoir, ce qui signifie que nous ne pouvons jamais avoir ce domaine. Um, vide. Il doit avoir une valeur dedans. Et nous allons enfin dire l'incrément automatique, ce qui signifie que chaque fois que j'insère un enregistrement, s'il vous plaît augmenter ce nombre à celui après ça. Donc pas si ma colonne. Mais le coma entre. Et maintenant, nous allons mettre le nom d'utilisateur, qui est le nom d'utilisateur hors de l'utilisateur. Et c'est un champ de type var char de 64 caractères. Donc, le nom d'utilisateur ne peut pas dépasser 64 caractères, et il est également ignoré. Ah, nous allons aussi avoir un mot de passe, qui est aussi de notre char off 64. Je ne sais pas, et enfin, il est toujours utile d'avoir un index pour la table de sorte que c'est, vous savez, vous savez, la numérisation se fait plus rapidement, et c'est assez souvent que l'index primaire est utiliser un droit alors on va le dire à ma clé primaire C. Utilisez une presse à écrire. Entrez Sam. Non, non. point-virgule ou une virgule ici et maintenant on va fermer. La première partie est, est hors de l'utilisateur, et ensuite on le fait dire, Michael Perfect. Ok, donc enfin, comment pouvons-nous vérifier que la table a été créée correctement ? Nous avons une commande show tables, donc show tables montrera les tables sur Est-ce que je base qui étaient personnellement à laquelle, dans ce cas, est ma chair sur leur ego. Maintenant, nous voyons la table. Yusor y a été créé. Donc, l'étape suivante sera de créer un enregistrement dans cette table que nous allons et utiliser demandé le mot de passe du nom d'utilisateur pour l'application flasque. 46. Exigences: Salut, tout le monde. C' est une mise à jour rapide que je dois faire pour tout le monde, même si vous commencez à suivre, ou si vous êtes un peu en avance sur le cours de cette leçon d'introduction. C' est une mise à jour rapide que je dois faire pour tout le monde, même si vous même si vous commencez à suivre, ou si vous êtes un peu en avance sur le cours de cette leçon d'introduction. commencez à suivre, Mais il y a eu quelques problèmes ou problèmes que les utilisateurs ont eu parce que je n'avais pas utilisé la version sur les exigences. Txt. Donc s'il vous plaît assurez-vous d'utiliser ces versions chaque fois que vous me voyez faire peeping volé exigences et ajouter une nouvelle bibliothèque, vous verrez que je tape seulement la première pièce comme flask et par ma suite. Mais au lieu de ça, ça, chaque fois qu'on vous dit de le faire, remplacez ça par ça. Le tout avec l'aversion et vous aurez beaucoup, beaucoup moins de problèmes. Le fichier des exigences. Vous pouvez également copier et coller à partir du dépôt, et je vais mettre ce lien sur le sur la leçon. Si heureux codage. Et, euh, vous savez, je suis toujours disponible pour vous aider avec vos questions. 47. Commençons par notre blog: Ok, donc ici, nous allons commencer notre nouvelle section avec nous allons construire une flasque blawg en utilisant une application pilotée par la base de données sur il y aura, ou nous allons couvrir beaucoup de concepts qui sont très importants pour que vous sachiez. Ce sont des choses très fondamentales que vous alliez utiliser pendant longtemps dans votre carrière de développement Web . Donc, il est important que vous preniez vraiment des notes et codez le long de nous pendant que je fais ces exercices , parce que ce , sont des choses comme je l'ai dit qui sont le pain et le beurre, si vous voulez, pour vos carrières de développement web, Alors printemps excitant. On va, euh, construire obligation assez complexe ici. Et, tu sais, comme tout ce que je fais avec ces cours, ça va être fait. Ah, la façon professionnelle. Comme ça, euh que tu ferais si tu travaillais sur l'un des plus chauds, tu sais, démarrage ici à New York ou ailleurs. Alors, tu sais, asseyez-vous bien. Et commençons, hum, cette section avec notre application flasque blawg. Donc la première chose que je veux euh, couvrir ici est, euh, nous allons utiliser quelque chose appelé une base de données ou M ou M signifie mapper relationnel objet . Et on va utiliser l'alchimie de la suite. Um, et ce que ou M vous permet de faire, c'est fondamentalement, euh, ça vous permet de communiquer, parler, parler, fondamentalement orteil une base de données, hum, en utilisant un objet orienté ah, représentation des données. Donc, par exemple, si vous avez un disons, une table d'utilisateur directement sur ma suite comme celle que nous avions sur notre section précédente, vous interageriez avec qui utilisé sa table en créant des instances à partir d'un utilisateur à partir de, ah, classe, c'est-à-dire, qui est étranger de cette table utilisateur. Et puis vous auriez des choses comme vous, monsieur, ce nom d'utilisateur. Donc, ce seraient des propriétés de cet objet. Et vous avez également des méthodes auxquelles vous pouvez accéder. Par exemple, vous, monsieur, qui, vous savez, filtrer et ensuite vous pouvez faire ah, vous savez, le nom est égal à Jorge. Donc, vous n'obtiendrez que les enregistrements qui, hum, hors de cette table d'utilisateurs, qui ont un nom hors de votre tête. Hum, donc c'est comme ça. Cela rend l'interaction avec qui obéit vraiment simple. Mais il vous permet également de ne pas traiter avec le type de niveau inférieur de l'usure de la base de données. C' est ah ah ah. Automatiquement fourni. Donc c'est quelque chose qui semble un peu compliqué ? Ne vous inquiétez pas. Tu l'auras une fois qu'on commencera à faire les exercices. Mais, euh, mais certainement vous verrez l'avantage de travailler avec un ou M plutôt que d' acquérir directement comme nous l'avons fait dans la dernière section. Ah, un curseur. Et il balança des déclarations et des choses comme ça. Donc, je voulais en parler et un peu comme l'introduire à la suite de l'alchimie, qui est le je dirais que l'un des objectifs les plus populaires que, euh, qui sont là pour, pour python. Donc nous allons jeter un coup d'oeil à ça. Hum ah, sur cette leçon. Ok, alors pourquoi ne pas commencer nos projets ? Donc on va aller ici au nuage neuf, et quand tu créeras un nouvel espace de travail et qu'on appellera ça, euh, la flasque Blawg. Alors mettons flask blologging ici, et pas besoin de faire une description. Assurez-vous d'utiliser personnalisé ici, um, pour le modèle, puis créer un espace de travail, vous savez, crée le conteneur, et nous sommes prêts à partir. Parfait. Hum, je vais mettre des réglages ici. Ah, je vois. Je veux mettre la police un peu plus grande pour que vous puissiez voir de meilleurs paramètres utilisateur et 24 . Ça a l'air bien. D' accord. Parfait. Oui. Donc, ça a l'air bien. Hum, donc maintenant je vais à la première chose que nous devons faire est de créer, euh, le répertoire réel où le blawg va être. Alors rappelez-vous comment je vous ai dit de ne pas utiliser, hum, tirets pour le nom off, le off le du projet. Donc, créons un dossier. Et pour ça, on va faire, euh, y aller. On va l'appeler flasque sur la partition. Blogged. Donc, nous changeons les répertoires. , euh Et, euh, , et encore une fois, rappelez-vous, la première chose que nous faisons toujours quand nous avons commencé un de ces projets ou quand nous commençons travailler sur eux, c'est de créer l'environnement virtuel. Donc je vais faire l'envie, qui est l'environnement virtuel. Nous avons besoin d'un python trois exécuter herbal. Alors tu fais ça. Et on va appeler ça, euh v et B. Oh, désolé. Environnement virtuel ici via troll em. Ah, p python tree ven. Donc, c'est nous pensons que votre répertoire de blocs flash est parfait. Donc c'est installer le flacon d'exécution à base de plantes, et nous avons fini. Et maintenant, nous devons activer. Donc, source vamp étant activé Et rappelez-vous, avant de commencer à citer, vous devez voir ce truc de ve MB ah au début. Sinon, vous allez installer des paquets et faire les choses mal au mauvais endroit. Donc je vais aller de l'avant et commencer, hum, avec le, hum avec le blawg et fondamentalement Ah, la première chose que je veux faire est de créer ce fichier txt d'exigences où nous allons suivre le, um, les paquets ou les bibliothèques dont ce projet a besoin. Alors faisons ça. Um, je voulais laisser cela me lire et le parce que je pense que c'est de l' installation par défaut . Et rappelez-vous le paquet ou l'application est celle-ci, pas cette fiche flash sur le dessus. Cette lampe de poche sur le dessus est exactement comme le nom de l'espace de travail. Donc je vais pleurer, cliquer là, et je vais faire un nouveau fichier, et je vais appeler ces exigences, pas txt. Et puis on fait défiler ça ici un peu. Ah, pour qu'on voie plus de noms fauchés. Ok, donc je double-clique là et j'ai des exigences. Donc, bien sûr, le premier paquet. On a besoin de sa fiole. Donc parce qu'on fait cette flasque maison et qu'on va avoir un nouveau besoin par ma suite, qui est le connecteur, le connecteur de suite que nous utilisions sur la dernière leçon. Et c'est le, euh, ou, euh, dont je te parlais. Et on va utiliser une Flask Dash Sequel Alchemy. Il y a une suite, Alchemy Alone, comme la suite Alchemy Library. Mais le flacon qui dash suite alchimie est étroitement intégré avec plat. Donc on va l'utiliser. Et enfin, on va utiliser quelque chose appelé Flat Script et je t'expliquerai un peu plus tard ce que ça fait pour nous, mais c'est surtout qu'on n'utilisera plus ça par téléphone. Bonjour, P wire. Python. Heureux. Pourquoi ? Parce que ce n'est pas une façon ah, vous savez, très évolutive de le faire. Au lieu de cela, nous allons utiliser, hum, quelque chose appelé Python géré B y, ce qui nous permet de le savoir, démarrer l'application, faire ça. Les opérations de base sont une autre chose, donc c'est plus flexible, mais nous le verrons quand nous commencerons à travailler avec. D' accord ? La prochaine étape que nous allons faire est de créer un p y dedans à la racine même de l' application. Donc un nouveau fichier sur ce score sur le score sur ce genre de point de cour b y et c'est dans un p y que nous allons mettre certains des trucs que nous mettons sur l' application principale de la dernière section. Et alors voyons ce que nous allons faire de la fiole d'importation de flasque, vrai ? Et puis nous allons faire la même chose est une instance d'application flasque avec le nom passé, et nous allons, hum, hum, donc une chose que nous allons commencer à faire est de mettre, hum, la configuration de l'application à partir d'un autre fichier à partir d'un fichier de paramètres. Et cela a à voir avec, comme, parfois, vous allez avoir différents paramètres um pour quand vous êtes comme si votre application est production par rapport à quand elle est en cours d'exécution localement ici ou dans votre ordinateur portable. C' est donc une bonne chose de séparer les paramètres dans un fichier que vous pouvez suivre et modifier, euh, euh, inversion pour les différents environnements. Hum, donc c'est presque tout. Une chose de moins. Donc on va commencer, genre, genre, mettre un peu de structure là-dessus. Donc on va créer un nouveau dossier ici, et ce dossier sera appelé à la maison. Et ça va être un peu comme où vit notre page d'accueil pour le, hum pour le bloc. Et vous allez commencer à voir que nous allons commencer, genre, genre, écrire modulaire les différentes parties de l'application, et cela a beaucoup de sens. C' est la meilleure façon de la meilleure façon destructurer votre application dans différents compartiments afin que, vous savez, la maintenance et le développement de l'obligation soient plus faciles. structurer votre application dans différents compartiments afin que, vous savez, vous savez, Si vous aviez tout dans un dossier, comme tous les fichiers P Y, ce serait comme un cauchemar de maintenir cette application. Si vous aviez tout dans un dossier, comme tous les fichiers P Y, Nous allons donc commencer à séparer les différents composants ou les différents. Ah, c'est un vertical dans votre application dans différents dossiers, et ces dossiers vont avoir des modèles. On va avoir des vues. Hum, et de cette façon, vous serez en mesure de, hum, de mieux maintenir votre application. Donc, en fait, créons une vue ici, donc je vais faire un nouveau fichier, et ça s'appellera vues B y. Et, euh, euh, ce qu'on va mettre là-dedans, euh, c'est Ce qui suit nous allons avoir, um donc c'est quelque chose que vous allez avoir dans toutes les vues que nous avons dans cette application ? Oui. Et il n'aime pas le blogueur flasque. Et j'ai remarqué que ce flacon sur le bloc de partition doit être le même nom que celui que vous avez créé là-bas. C' est pourquoi nous n'avons pas besoin de Stashes que nous devons utiliser sur leurs scores. Une application dans ce cas est cette application. Donc, ce que cette phrase de doublure est de ce que n'importe quel fichier pré y du bloc flash important dans l' application, qui est l'application flasque, Et à partir de ce point, nous pouvons, um nous pouvons pointer vers cette application comme le les itinéraires de la fenêtre de l'application flats. Donc, dans ce cas, quand ils le font pour l'index de la maison Ah, pour le pour pour l'index ou barre oblique sur. Mais la plupart allaient ajouter l'indexation ici, juste au cas où. Servir ces fonctions d'index et nous allons revenir bonjour, monde. Pour qu'on sache que, euh, on peut vérifier si ça marche ou pas. Alors c'est tout. J' ai enregistré le fichier. Et nous n'avons pas sauvé cette folie parce que je vois le petit parsemer leur. Alors maintenant, c'est sauvé. Ok, donc maintenant nous allons être, hum nous devons importer cette vue parce que c'est ce qui va être, hum, genre, courir à partir de l'application. Donc je vais devoir faire à partir des vues d'importation à domicile. Ok, Donc ce que ça fait, c'est qu'il va aller à la maison, et il va importer le fichier de vues pour tout le Ceci est comme le contrôleur, toutes les fonctions pour les routes pour ce module vont être importantes ici. Maintenant, quand nous avons un dossier utilisateur ici ou d'autres types hors contenu ou modules, alors nous devons les ajouter dans cette unité B Y. 48. La structure de base: Ok, donc maintenant nous allons commencer à regarder le fichier Settings, et ah, c'est quand nous avons vraiment simple, heu, rien n'a jamais vu avant. Mais comme je l'ai dit, on va le mettre sur ce fichier séparé et les fichiers de paramètres auront une clé secrète. Ce qui t'a déjà appris comment les orteils en génèrent un nouveau. Mais pour l'instant, juste pour faire vite, je vais juste faire que tu ne devineras jamais. Et on va avoir un débogage égal. Vrai. Donc, euh, nous avons un rechargement automatique, euh, et ce genre de choses. Alors, c' est quoi la suite ? Hum, nous devons, hum nous devons maintenant créer ce fichier appelé Mannix B y. et ça gérer le sage Quoi ? Tu vas vraiment courir pour, euh, pour démarrer et arrêter l'application. Alors créons ce dossier. m'a géré. Pourquoi ? Et la première chose que nous voulions entendre est que nous voulions minimiser le terminal. Hum, nous voulons essentiellement avoir un pointeur dans ce dossier, et c'est quelque chose que vous pouvez rechercher en ligne. Ce n'est pas vraiment. Je veux dire, c'est une ligne un peu compliquée, mais ce qu'il fait est fondamentalement alaus python de savoir quel est le point de départ de toute cette chose et être capable de trouver ensuite d'autres dossiers, hum, dans le, um dans la présente application dis. Donc, fondamentalement, ce que cela dit est comme, donnez-moi le ah, l'emplacement actuel des fichiers, puis importez ou upend toe le chemin python, le niveau au-dessus. Hum, donc ce n'est pas vraiment comme si ça avait l'air très compliqué, mais ce n'est pas vraiment, hum, si complexe. C' est comme si ça avait l'air très bizarre. Donc, six chemins upend, toujours chemin chemin APS chemin, puis toujours chemin. Avoir un joint ici. Même moi j'ai du mal à le faire correctement. Alors voilà. Donc leur nom hors fichier et puis quatre parents est à la fin pour qu'ils correspondent voir ou trois ? Non, c'est trois. Ok, parfait. Hum, alors on va faire à partir de flasque um e x t script. Nous allons importer le gestionnaire et le serveur, et ces gestionnaires et serveurs sont essentiellement ceux qui vont nous permettre d'exécuter python, gérer blah, blah, blah, et charger ou servir l'application. Donc nous allons importer l'application, et c'est celle de l'unité B. Y. et nous allons l'exemple qu'elle a mangé un manager de cette application. Ok, donc maintenant, hum, avec le manager, ce qu'on peut faire, c'est qu'on peut importer ou ajouter des commandes à ce gestionnaire, et il y a diverses donc maintenant, hum, avec le manager, ce qu'on peut faire, c'est qu'on peut importer ou ajouter des commandes à ce gestionnaire, et il y a diverses méthodes que nous allons utiliser. Mais nous allons utiliser celui-ci au départ, qui est la qui est la mauvaise commande du serveur. Donc, la façon dont nous faisons cela est que nous définissons le serveur d'exécution, et ce que cela fait est de démarrer le serveur avec les paramètres suivants, um, Donc nous allons utiliser les groupes de parkour, utiliser le Parker égal à vrai, utiliser freeloader de sorte que quand j'ai changé le code, il recharger automatiquement dit que l'hôte va être sur ce est comme un spécifiquement comme nous avons vu cela dans la section précédente. C' est pour le nuage neuf. Donc nous allons définir ceci je p et puis mettre 000 et puis le port sera que je suis l' entier du système d'exploitation. Obtenez le port E M V puis 5000. Ok, parfait. Je reçois une erreur ici sur l'application portable fine. Oh, de flash regardant l'application ennuyée, il n'était pas à ajouter. Ok, donc maintenant, pour que nous puissions exécuter cette application, vous faites ça va vous sembler familier. Si le nom est égal principal, puis le gestionnaire Ron, ce qui est un peu différent. Donc ce manager court, gros exécuter ce manager, et ensuite ce manager aura une commande. Donc voyez, il y a invalide dans la syntaxe si moyenne est égale, double égal, non ? Cool. Donc nous avons notre géré moi. Pourquoi ? Prêt ? Et nous sommes presque prêts à courir le premier à raconter un monde. Ok, alors essayons ça. Je fais Contrôle s'est échappé pour faire monter le terminal. Et, euh oh, donc la première chose avant de faire quoi que ce soit, nous n'avons pas vraiment installé les bibliothèques Txt, hum,nécessaires hum, . Nous devons donc le faire. Et la façon de faire ce problème ne peeping stall. C' est nos exigences. Txt. Et laissez-moi maximiser cela afin que vous puissiez voir la sortie. Hum, et fondamentalement, il passe par le fichier des exigences et commence à télécharger toutes les bibliothèques qui sont là, euh, très rapidement. Donc maintenant, c'est installer, hum, flasque. Il installé par ma fiole de suite, alchimie égale, script plat et quelques autres bibliothèques d'aide qui sont liées à cela. Donc on devrait être mis, euh, peut-être dire mon départ. Et maintenant, au lieu de faire Python, vous savez. Bonjour, P wire. Tout ce qu'on avait. Maintenant, on a un B y géré , donc on me gère. Pourquoi ? Serveur rond parfait. Donc maintenant, on dirait qu'il est en cours d'exécution. Il dit courir sur son 80 80. Maintenant, rappelez-vous, vous ne cliquez pas sur ça parce que ce n'est pas le rial, hum, vos mots l en cours d'exécution que vous devez aller partager et puis cliquez sur l'application, um, sur le lien d'application, qui est le 2ème 1 Donc, si je clique là ouvrir et là vous allez, nous avons bonjour monde. C' est donc la réplication juste là. Hum et ça veut dire que ça marche parfaitement bien avec ce nouveau genre de, comme , tu sais, place que nous avons fait. Maintenant, ce que j'aime dans les données et ce que vous devriez être, vous savez, apprécier maintenant, c'est qu'il s'agit d'une approche très modulaire. On va rentrer chez nous. On va vous avoir, messieurs. On va avoir, tu sais, des messages. Ça va être très évolutif. Et c'est ainsi que les programmeurs professionnels le font. Ah, tu peux le dire à un professionnel d'une sorte développeur débutant. Si le s'ils ne marginalisent pas augmenter leurs affaires, il juste qu'ils jettent tout dans un dossier. Donc on va garder ce genre de structure. Rappelez-vous, quand nous créons un nouveau dossier avec un nouveau module, alors nous allons devoir, vous savez,à vous savez, maison ou à partir de n'importe quelle vue d'importation. Euh, mais c'est à propos de ça. Et après cela, vous savez, vous pouvez séparer tout ce que vous savez, vous êtes ce que nous appelons des modèles, qui est que nous allons voir un peu plus tard, qui est l'ancienne base de données. Pour cela, pour la table ou pour ce module, etcetera. Donc, euh, vous savez, prenez que je le pense. Toe, regarde ça. Et, euh, il y a un lien maintenant, ici sur la, um sur la ressource est où vous pouvez télécharger tout ce code, , afin que vous puissiez vérifier si vous avez tapé ou si vous avez fait toutes les erreurs, vous pouvez savoir 49. Le modèle d'auteur: Ok, donc nous allons maintenant commencer à travailler sur notre modèle et la façon dont nous faisons cela est que nous, euh nous définissons fondamentalement une classe qui définirait l'objet auteur. Et dans ce cas, ce seront les gens qui, hum qui seront capables de créer des posts et de gérer le bloc en général. Donc, la façon dont nous faisons cela est que nous devons importer cette classe db. Alors rappelez-vous, nous avions ici le b equals suite application alchimie. Donc on va faire ça, hum, en faisant ce qui suit. Donc nous faisons de la fiole, plug, import, BB. Et comme ça, nous avons la suite. Alchimie. Euh, essentiellement permis, euh, pouvoir faire ce démantèlement pour cet auteur. Alors, comment faire notre modèle ? Euh, donc fondamentalement, c'est un cours. Donc on va imaginer que h auteur sera une, euh, une instance de ce verre, et vous serez en mesure de sélectionner un auteur spécifique et ensuite de voir là leurs noms ou leur email, etc. . Alors commençons à faire ça pour que vous puissiez voir à quoi ça ressemble. Alors, prends un verre. L' auteur se rappelle être modèle. Donc la première chose qu'on va mettre. Les propriétés de l' ESA I D et les idées que vous vous souvenez de la dernière section sont fondamentalement une odeur incriminante. Les propriétés de l' ESA I D et les idées que vous vous souvenez de la dernière section sont fondamentalement une odeur Euh ah. Nombre entier qui augmente avec chaque nouvel enregistrement. C' est la même chose ici. Donc, nous faisons db la colonne. Et, ah, fondamentalement, une colonne est une de ces propriétés de celle de cette table et ici nous définissons quel type hors colonne, Um, dans ce cas, c'est un entier donc nous serait entier. Et nous allons aussi dire que c'est la clé primaire pour ça pour l'écurie. Ensuite, nous allons créer un nom complet, um, colonne et celui-ci sera une chaîne, et nous pouvons définir combien de caractères. Donc disons, euh, on va choisir 80 pour le nom, puis pour l'email. On va faire une autre colonne. Ça va aussi être ah, c'est boire. Mais dans ce cas, ça va être 35. Et vous pouvez aussi passer si le, um, si ce Colin est unique, et qu'on ne veut qu'un auteur avec le même email par table, donc ça va être appliqué. On va avoir un nom d'utilisateur et dans ce cas, il sera aussi 80. Et c'est aussi unique que nous ne voulons pas Nous ne pouvons pas avoir deux utilisateurs différents avec le même nom d'utilisateur mot de passe suivant, et le mot de passe va être une chaîne de 80. Et enfin, on va avoir un drapeau, le cercle de lin parce qu'ils sont, comme, peu, des bascules ou un peu comme des réglages. Et ça s'appellera East Author. Donc, même si la colonne ou la table plutôt son auteur, nous voulons être en mesure de définir les auteurs qui sont capables de poster. Et, euh et bien, ce sont des auteurs. Ils vont être comme seulement, euh ils ne peuvent que commenter. Donc c'est un peu comme les yeux que cette personne permet de poster sur ce bloc ou non. Et j'ai décidé de faire ça, hum, un drapeau et le lin est généralement taureau. L' éclat de Ian signifie que c'est vrai ou faux. Donc c'est le cas. L' auteur va être réglé sur vrai si cette personne est capable de, hum, buter sur le blog plutôt que de commenter ou, vous savez, lire. Alors c'est ça. C' est notre table juste là. Donc, quand la suite Akemi exécute, hum, Ah, dans cette application, il mappe ces colonnes sur la table à ces propriétés hors de l'auteur Arctic. Et on verra. Tu sais, tu vas voir comment ça marche dans, euh, euh, dans l'application sous peu. Hum, donc ensuite vous devez définir un dedans, qui est fondamentalement ce qui se passe lorsque l'objet est défini pour la première fois. Et nous voulons être en mesure de permettre fondamentalement le, euh , vous savez, vous devez passer certaines colonnes qui sont nécessaires pour que nous puissions créer ce opted. Donc nous allons avoir Ah, nous allons avoir besoin de nom complet, euh, euh, passe de nom d'utilisateur électronique, et je vais définir par le pli est l'auteur est faux. Donc, à moins que je remplace que lorsque je crée l'objet pour la première fois ou n'importe quel objet que ce soit, il nous passe tombe. Alors j'ai appelé le nom complet. Donc dans ce cas, ce soi-même ancien nom est ce nom complet ici, et je passe le nom complet. C' était, hum, rapide. Lorsque le moment où l'objet est créé. La même chose ici. L' auto-e-mail équivaut à l'e-mail lui-même. Le nom d'utilisateur est égal au nom d'utilisateur. mot auto-rapide est égal au mot de passe. Et tu vas voir ça, hum, ce hum, genre de modèle, hum, hum, régulièrement comme si tu t'occupais de l'alchimie secrète parce que c'est un peu comme si c'était un bon moyen. Par exemple, si nous avions une date quelque part ici, nous pourrions automatiquement définir le jour comme état d'aujourd'hui. Et le temps d'aujourd'hui eso que cela dans ce genre de fonction comme vous permet de pré-remplir et de vous assurer que les objets créés la bonne façon de se souvenir de cette mort en elle ne va être appelé quand vous quand vous appelez cela quand vous Au lieu de cela, elle a mangé cette classe dans un nouvel objet pour la première fois. Hum, et il y a une autre méthode appelée, um reproduire O R E b r qui vous permet essentiellement de, hum, comment voulez-vous afficher ceci quand vous interagissez avec, disons, le terminal ? Donc la façon dont nous allons aimer, euh, peu comme identifier ces disques, c'est qu'on va dire juste auteur, euh, euh, personne est, ce qui est, euh, et quand ils ont juste passé le nom d'utilisateur. Donc quand nous listons ou quand nous allons chercher des objets, ça va dire, Oh, c' est le disque de l'auteur, tu sais, tu sais, dis pauvre hé ou quoi que ce soit l'utilisation d'une miss. Donc c'est à peu près les mannequins. , Tu sais, la première fois que tu vois ce Cisco, c'est un peu mal. Un peu déroutant parce que vous n'êtes pas comme si vous n'aviez pas vu comment nous interagissons avec, euh, avec ces objets, mais sera de plus en plus familier à mesure que nous continuons à travailler avec la classe. 50. Configurer l'ORM: Ok, donc, euh, on va devoir initialiser la base de données pour pouvoir commencer, euh, euh, créer essentiellement, euh, des modèles pour différents modèles. Et une chose que je voulais faire A Donc j'ai pensé plus à ce sujet était de modifier ce répertoire personnel et de le renommer Blawg. Et la raison est que je suis qu'on va devoir arrêter le module pour la page d'accueil. Nous allons avoir un module pour tout ce qui est vraiment orteil le blawg et une fonction maison serait à l'intérieur de ce module. Donc, je vais déplacer ce coup à venir, rentrer à maison dans un bloc parce que vous pouvez voir maintenant que nous avons des blogs là-bas, et nous avons les vues, etc. Et nous devons changer cela à partir des vues d'importation à domicile. Et, euh et je pense que cela dit, c'est Eve qui fonctionne mal et va recharger ici. Ouais, donc c'est marrant. Parfait. Donc maintenant, nous devons, genre, mettre en place la base de données, et la première chose que nous devons faire est de créer une base de données pour nous. Donc, euh, de la dernière section, je ne sais pas si vous vous souvenez, mais, euh, vous savez, le, um, nuage neuf a déjà fondamentalement un construit dans mon serveur de suite qui affaiblissent Juste levier. Hum, et on peut commencer, hum, en utilisant les souris Equal City L um, raccourci. Donc, la façon dont nous avons commencé qu'un vase ici est en utilisant ma suite CDL start I le type de là, donc ce n'est pas bien égal, mais mon single, droit. N' oubliez pas de remarquer cet utilisateur de la route, parce qu'on va l'utiliser, et ça va être différent pour vous. Mais si nous faisons un plein écran là-bas, vous verrez qu'il a installé ma suite. Ah, ça s'est arrêté et a commencé. Hum, et puis c'est ah, ça a été créé à ça. Tous pour nous appelaient c 9. Bien qu'on ne va pas, genre, techniquement, l'utiliser. Alors, euh, mais mon secret est déjà là. Donc, ce que nous voulons faire est de créer une base de données à utiliser. Et on va appeler ça, hum, que hum, j'ai basé la base de données Blawg the mec. Donc, nous faisons juste ma suite, CTL Ah cli, qui est l'interface de ligne de commande. Parfait. Donc, si je montre des bases de données là-dedans, je vois que 1/2 c 9, qui est celui qui a été créé pour nous. Ah, schéma d'information ma performance de paillettes donnée, qui sont mes bases de données de suite. Donc on va créer une base de données, et ensuite on va faire un blawg. Parfait. Donc maintenant, euh, maintenant nous avons une seconde. Si c'est si c'est créé, et pourtant c'est dedans, c'est là, alors on devrait aller bien. Donc maintenant, je contrôle le ou je tape la sortie semi deux-points la première semaine. Le 1er 1 qu'on va faire est bien, on doit mettre ça sur sauver parler. Pourquoi ? Pour qu'on puisse accéder au dossier ? Um, la base de données dont je suis désolé de l'application. Donc pour ça, on va avoir besoin d'ajouter des trucs ici. La première est qu'on doit importer le système d'exploitation, et ensuite on va devoir suivre. On va avoir, euh, la base de données utilise son nom égal. Et rappelez-vous que, euh, qui utilisent son nom que la base de données mise en place nous a donné. C' est le quand vous êtes dans un mettre leur, alors nous avons besoin d'avoir le mot de passe être. Tu vas laisser ça vide, et ils auront la base de données. nom est égal au journal, qui est celui que nous venons de créer. Et puis tu vas passer. L' hôte de l'abeille est égal à o point Get E M V. C'est pour, um, Nuage 9. Si vous exécutez ma suite localement ou dans une machine à linge ou un autre comme si vous utilisez docker, alors ce sera différent. Hum, celui-ci est très important pour être la vue ou moi et vous allez faire exactement ça. Ma suite. Plus par ma suite Say, ma barre oblique deux-points pour cent s et ceci est le nom d'utilisateur et le mot de passe au nom d'hôte slash le nom de la table ? Non, c'est pour cent désolé. Pourcentage s et pourcent s et puis nous remplaçons juste toutes ces choses avec Devi Nom d'utilisateur , um, um, passe D B, hôte TV et nom de base de données blawg. D' accord. Et enfin, on va faire une base de données d'alchimie. Tu es moi égal, peut-être que tu as raison. Donc, vraiment, celui requis viable est l'alchimie de suite qui évidemment tout droit. Mais je l'ai dit comme des choses parce que c'est et il est là pour éditer. Si vous avez un nom d'utilisateur ou un mot de passe différent, nous créons essentiellement la chaîne d'une manière séquentielle agréable nous créons essentiellement la chaîne d'une manière séquentielle agréableafin qu'ils puissent voir à quoi cela ressemble. Mais vous pouvez aussi, comme, juste supprimer toutes ces lignes les plus anciennes ici et juste mettre la suite qu'un single comme moi qui est votre droit est égal à ma suite plus Mike suite et puis tous remplacer toutes ces chaînes par le avec les différentes valeurs. Mais je pense que c'est plus agréable de cette façon semble mieux, plus lisible et la lisibilité est toujours importante. Ok, donc maintenant nous devons ajouter Ah suite me verrouiller à r N un fichier p y. Et pour cela, nous allons avoir ce qui suit de Flask Dot e x Tedx Thought suite, Alchemy Import suite Je vais me mettre d'accord et nous allons ajouter un nouvel amuse un nouveau drapeau. Voici une nouvelle propriété que nous allons pouvoir appeler de n'importe où dans l'application appelée DB et la base juste une instance hors suite Alchemy avec l'APP um, passé à elle. Donc à partir de ce point sur DB, les trous sont notre base de données. Donc maintenant ce que nous voulons faire est, hum, créer notre premier, euh, droit, droit, le nouveau module d'application, qui est le module des auteurs. Et tu sais, ce sang va avoir des auteurs qui vont être comme se connecter. On va y avoir. Ils vont devoir s'inscrire d'abord, puis ils doivent se connecter avant de pouvoir poster un bloc de livres. Alors allons de l'avant et créons ce module. Nous allons donc créer un nouveau dossier, et il s'appellera l'auteur. Et alors rappelez-vous quand nous avons parlé du contrôleur Model View dans la dernière section où vous savez beaucoup sur ces applications ? Suivez-les. Modèle vue, contrôleur, um, um, modèle et il Fondamentalement, l'idée est que vous séparez dans différents composants ou fichiers indifférents presque sur l'application, tout ce qui est lié à différents des parties de celui-ci. Donc, le modèle est pour les opérations de base de données vues sont les contrôleurs, ce qui est un peu, hum, déroutant. Mais les vues dans le, um, dans flasque et aussi dans d'autres modèles python sont en fait les contrôleurs ou la mer des vues NBC sont en fait dans ce modèle NBC sont les modèles, donc c'est un peu déroutant. Certaines personnes l'appellent le modèle V vide dans la fiole et plus jeune parce que ce sont des modèles et des vues de modèle . Mais les vues sont les contrôleurs et les modèles sont les, um, sont les vues. Donc, dans tous les cas, la chose importante à retenir est que nous allons toujours séparer les modèles, qui est la couche de présentation ou la vue. Les modèles, qui sont les opérations de base de données sur le sur un fichier appelé Models et les contrôleurs, qui sont ceux qui acheminent celui qui a la route, Um, quelles sont les vues ? B y sur la fiole. Alors continuons et créons une vue ici pour que nous ayons cela et nous allons avoir un nouveau fichier appelé Models B Y. Et maintenant nous savons que les vues qu'il va avoir ce sera nos modèles de contrôleur seront la base de données opérations. Et nous allons avoir un dossier de modèles ici avec la même structure afin que nous séparions aussi comme n'importe aussi comme n'importe quelle vue ou toute couche de présentation pour l'application. Et avant d'oublier, ajoutons cela au NPD. Pourquoi ? Une rumeur ? Chaque fois que nous avons un nouveau module, nous devons le faire à partir des vues d'importation de l'auteur. Sauvons ça. Et maintenant, passons au « Il va aux modèles ». Um je veux dire pour les vues de l'auteur, euh, nous allons juste mettre un espace réservé en farce leur pour qu'on le sache. On sait que ça marche. Donc de flasque, blawg, application d'importation et ensuite on va avoir une route de sieste et on l'appellera se connecter. Et ah, c'est là que les auteurs se connectaient. Et donc là, trouvez Logan et puis revenez. Bonjour, utilisateur. Ok, euh, une autre chose importante à retenir. Toujours quand vous créez un nouveau module, qui est un nouveau, comme un nouveau dossier, Um, nous devons ajouter un n it p y afin que nous puissions importer d'autres endroits. Et en fait, je viens de réaliser qu'on avait oublié de le faire sur Blaga. La houle. Cela fonctionne parce que nous n'avons pas importé bloqué de n'importe où ailleurs. Mais c'est toujours une bonne pratique, car alors nous pouvons le faire, nous pouvons voir à partir de vues blawg points. Euh ah. Importe quelque chose. Donc c'est ça, Hum Donc maintenant, on va définir notre modèle. Et, euh donc commençons à travailler sur ce 51. Interagir avec l'ORM: Ok, alors voyons comment nous interagissons avec ce modèle. Et donc la façon dont nous allons le faire est, euh, rappelez-vous comment nous avions Python shell et nous pourrions faire des choses avec l' application à partir de là, euh, dans ce cas, parce que nous ont gérer B Y ici, gérer nous permet de instantanément il un shell qui a le, um cette application chargée en mémoire. Donc c'est comme ça qu'ils allaient faire. Um, nous allons jouer avec l'application en appelant ce python gérer les gens que je shell et vous verrez ici. J' ai remarqué ça quand je faisais ça. Au départ, il a ce genre bizarre de d' messaged' alerte. Ce n'est rien comme, hum, très urgent ou rien à très urgent ou rien à craindre. Mais je lisais à ce sujet, et il s'avère que l'alchimie secrète doit avoir ce paramètre dit vrai, pour que nous ne voyions pas ce message d'erreur. Donc je vais juste aller de l'avant et à ce, euh, pour les réglages être pourquoi ? Alors que je ne vois pas ce message ici et cela n'affecte pas vraiment comment la base de données fonctionne. Alors, euh, c' est à une sortie ici. Et laissez-moi, hum, maximiser ça et effacer l'écran. Euh, attends. D' accord. Et revenons à me gérer. Pourquoi encore ? Et ah, maintenant on n'a pas cet air, mais en tout cas, euh, qu'est-ce que tu veux faire la première fois qu'on va interagir avec ça avec ce modèle ou avec cet objet ? Hum, les tables doivent être créées parce que, comme vous vous en souvenez, nous devons bloquer que j'ai été créé, mais nous n'avons pas de tables dedans. Donc, la façon dont vous faites c'est, euh , vous savez , vous devez d'abord , comme, insérer, um, ou importer BB de votre application. Donc nous allons faire à partir de Flash blawg import BB, et ensuite vous devez importer les modèles que vous allez utiliser. Donc, dans ce cas, nous allons faire à partir des modèles d'auteur. Importer l'auteur. Um, vous pouvez aussi commencer si vous avez, genre, plusieurs classes comme là-dedans. Hum et ça va les importer tous. Et puis, enfin, on fait ça. Ah, ce devi comique crée tout et ce que ça fait c'est ça crée toutes les tables pour, euh, l'application de ces modèles que nous avons importés. Hum, alors comment peut-on vérifier ça ? Um, c'est assez facile de vérifier que nous pouvons. Ouvrons une autre fenêtre du terminal et appelons la ma suite. Cli Ah CTL cli. droite. Hum donc si je montre ah, ils le mettent en majuscules. Donc, nous suivons nos bases de donnéesd' épaule standard d' . Donc, celle des as. Donc si on utilise le bloc ici, Ok, maintenant on montre les tables. Vous verrez que cet auteur a été créé. Hum, et si on sélectionne l'étoile de l'auteur, tu verras qu'on n'a pas d'enregistrement. Donc, c'est bien que cela signifie que la table auteur a été réellement créée par le berceau DB Souviens-toi, . Souviens-toi, si on avait d'autres modèles plus vieux , tu devrais les importer avant de le faire pour être berceau. , Donc si vous l'avez fait, disons que nous avions un blogueur que nous avions, euh, c'est un post pour lequel vous importeriez ces modèles. Donc, cette suite alchimie sait quoi, être ce que les modèles réels de vos applications sont. Ok, alors comment interagissons-nous avec les écuries ? Euh, donc fondamentalement, vous allez créer, um sur l'objet auteur à partir du modèle avec lequel nous avons travaillé avant. Donc je ne sais pas si tu te souviens de ça. Donc, ce serait toutes ces choses et n'oubliez pas d'initialiser ou de définir un nouvel objet . Tu vas devoir passer ce ah, gagnants à temps partiel ici. Alors faisons ça. On va dire que l'auteur est auteur, et tu compresses entrer là et, euh, euh, rumeur comment on a dit, tu sais, j'étais plus grand dramatiquement. Voyez comment je ne l'ai pas ici parce qu'il sera créé automatiquement pour aussi pas besoin de passer i d. Mais nous allons dio Fondamentalement les noms complets sont nom complet serait ou hey, Escobar. Et puis nous allons avoir l'email serait Jorge à partir de zéro point io et ensuite utiliser le nom serait Jorge. Et puis mot de passe serait 12345 et son auteur parce qu'il a été dit orteil faux par défaut , um, Je ne pouvais tout simplement pas le passer comme juste terminé ici ou nous passer. Vrai. Alors c'est tout. Et des parenthèses proches. Ok, donc maintenant nous avons un auteur, et si je le fais ici, vous verrez. Rappelez-vous comment nous avons parlé de la reproduction de représentants voir comment il rivière sentir cela. Et il me dit que l'auteur est maintenant une instance off author avec le nom d'utilisateur qui passe là, donc c'est assez utile. Mais, euh, est-ce que cette base de données interne est encore ? Alors laissez zoo un autre, sélectionnez leur et voir ce qui se passe. Non, ce n'est pas le cas. Il y a donc deux étapes pour être en mesure d'obtenir cela dans ce que je base. La première chose est, nous devons créer une session donc nous faisons devi session étrange offre, et c'est que cela est appelé une sorte de comme un pré commit. Fondamentalement, une session est un peu comme vous pouvez faire plusieurs choses sur chaque appel à la base de données. Donc nous pourrions vous faire savoir, nous pourrions ajouter cinq auteurs ici, et nous aimerions juste la fin de ces cinq définitions, faire un commit, qui est un peu comme Ok, maintenant dit que c'est une base et cela nous fait gagner du temps, car au lieu d'aller et venir , nous ne pouvons le faire qu'une seule fois. Dans ce cas, on va faire juste un, donc c'est bon. On a fini ici. Donc maintenant, nous faisons db session commit, et c'est quand les bases de données ont réellement appelé et je reçois un, euh, fondamentalement un enregistrement créé. Et comment puis-je vérifier cela ? Eh bien, nous pouvons aller ici et puis sélectionner Star de l'auteur. Voilà, tu y vas. Nous avons notre premier disque créé à partir de l'Oran. Donc et maintenant si je fais auteur, je suis ici, je vois que je reçois un i d. Cette idée est celle que ma suite a créée pour nous. Et en même temps, je peux faire auteur amarré. Ah, tu sais, nom complet. Et je vais chercher mon nom. Alors voyez comment maintenant que les enregistrements de cet enregistrement dans la base de données sont devenus un peu comme un objet, et je peux faire des choses avec. D' accord. Et comment pouvons-nous interroger, comme, comment pouvons-nous faire Sélectionnez l'étoile de l'auteur ici. Eh bien, créons un autre utilisateur pour que ce soit un peu plus, hum, amusant. Donc je vais faire que tu peux refaire l'auteur parce qu'on ne va pas réutiliser ça. Nous ne le sommes pas. On ne va rien faire avec ça, donc je vais créer un an de plus. Disons John Smith, non ? L' e-mail utiliser John à l'exemple point com ils ont utilisé son nom est John. Et les soucis passés sont allés 2345 et il est aussi un auteur. Ok, donc maintenant si je pring auteur, je reçois l'auteur John Perfect. Donc, une fois de plus, Devi session D b euh, auteur et D commentaire de session v. Maintenant, si je vois sur ma suite, j'ai mes deux disques là-dedans. Parfait. Alors maintenant, pour que je vois, laissez-moi me chercher ou me trouver tous les auteurs dans la base de données, je fais ce qui suit, je fais les auteurs égaux. Ah, auteur. Et puis nous allons avoir une propriété appelée Query and query nous permet de filtrer pour obtenir des objets. Ah, par différents paramètres comme. Ou on peut les faire tous. Donc si j'interroge les auteurs sur Oh, on dirait qu'il n'a rien fait. Mais maintenant, si je fais des auteurs ici, vous verrez que j'ai une liste hors des objets. Donc, les auteurs, les yeux ou la haine et John. Donc, si je fais auteurs auteurs hors zéro, c'est le premier élément de la liste. Je vais chercher Jorge. Et si je fais des auteurs d'un, j'aurai John et la même chose ici. Tu sais, si je fais des auteurs un nom complet, je reçois le nom John Smith. Um je pourrais aussi faire un filtre de requête par. Donc auteurs égaux auteur, requête lui champ par et puis je peux juste passer le, euh, paramètre. Donc c'est un nom d'utilisateur qui est égal à Jorge. Et, euh, je pourrais aussi avoir le au lieu d'avoir tous les disques ici, je dis juste d'abord. Maintenant, les auteurs ont un disque, et c'est l'auteur, Jorge. Donc, nous verrons beaucoup d'autres types de choses comme comment nous interagissons avec la base de données sur des leçons ultérieures, plus tard. Mais c'est un peu comme un bon début pour nous de visualiser comment nous interagissons avec ceci ou dans Okay, Donc avant de passer à autre chose, nous ne voulons pas continuer à avoir tous ces, comme des données dans, um dans le tables. Donc on va avoir, euh on va utiliser une méthode que l'alchimie utilise. Donc, la façon dont nous le faisons encore, nous devons importer l' objet db et dans les modèles ici. Mais, euh donc la façon dont vous faites est de faire le commit de récession profonde juste au cas où il y aurait des opérations en attente et ensuite vous faites db lâcher tout et cela efface toutes les tables ici. Donc, si nous montrons les tables, vous verrez qu'il n'y a pas de tables là-dedans, mais nous avons toujours notre base de données. Donc le sang est là, alors ayez cela à l'esprit. Souviens-toi de la profonde récession d'abord parce qu'il y a un bug qui, si on appelle Debbie, lâche tout sans ce commit dévastateur,se bloque indéfiniment jusqu'à ce que tu aimes le contrôle. Souviens-toi de la profonde récession d'abord parce qu'il y a un bug qui, si on appelle Debbie, lâche tout sans ce commit dévastateur, voyez, Vousvoyez,mais nous sommes prêts à commencer à nouveau, et nous allons passer à la prochaine section ah où nous allons commencer à travailler un peu avec des formulaires et voyons comment nous faisons ça. 52. Le modèle de base et Bootstrap: Ok, donc, ce moment, on a Ah, assez basique comme, bonjour, le monde étant par là. Et comme vous vous en souvenez, c'était dans les vues de bloc. Nous avons ces retours dans un monde qui, bien sûr, n'est bien sûr, pas très joli à regarder. Donc, une chose que je vais utiliser ici, et je ne vais pas entrer dans beaucoup de détails sur le devant, à l'intérieur ou le look and feel, mais je veux créer une base, um, modèle html basé pour que je puisse commencer à mettre un peu, hum, un peu de l'apparence et de la sensation ensemble pour ces choses. Blawg sur vous pouvez suivre et vous, vous savez, vous savez, regardant comment je fais les choses, vous pourriez avoir en regardant comment je fais les choses, vous pourriez avoirdesidées de base sur la façon de travailler avec bootstrap et, um et J Query, idées de base sur la façon de travailler avec bootstrap et, um et J Query, ce qui est deux des choses que je vais utiliser. Cependant, comme je l'ai dit, d'autres leçons couvrent probablement l'avant et des trucs dans un autre cours, et je vous tiendrai au courant. Quand ? Quand cela se produit, peut être sûr d'aimer, hum, vous savez, me suivre sur Twitter à travers l'UE ou aller de la Syrie point Io a instruit les nouvelles plus tard que vous puissiez garder, vous savez, en contact, hum, avec moi en termes de, comme, vous savez, nouveaux cours à venir. Mais pour l'instant, nous allons Ah, créons ce HTML de base. Et pour cela, nous allons créer un nouveau dossier, Cold templates. Et si vous vous souvenez de notre premier de nos modèles de section précédente est essentiellement où nous sommes flasque attend vous de stocker toutes les anciennes tentatives pour l'application. Donc je vais le faire quand vous produisez ici, et je vais appeler ça le HTML de base. Ok, alors faisons le html de base. Hum, on va configurer ça comme un, hum, c'est un document HTML 5 genre et on va trouver la langue ici. Hum, alors on va avoir une tête. Et ceci, au fait, est comme un genre minimal de retrait comme, euh, html cinq modèles ou vous travaillez. Bienvenue à une sorte de l'utiliser pour vos propres projets. Cela définit le caractère selon utf huit. Donc affaiblir l'affichage correctement tout ce que vous savez, personnages internationaux si nous en avons et nous allons avoir un, um I bord, qui est le paramètre Internet Explorer, et nous sommes également pris en compte pour mobile applications ou rendu mobile. Donc, si quelqu'un reçoit une page de mon mobile, hum, ils peuvent voir le contenu correctement avec égal appareil avec et coma dans l'échelle shell est un. D' accord. Et enfin, nous allons avoir un titre, et ce titre aura un bloc que nous allons définir dans le temple que appelle ça et ensuite et bloquer. Super. Donc maintenant, on va avoir, hum on va insérer bootstrap. Et pour cela, je recommande de se faire bootstrapped directement à partir d'un de leur ville afin que nous n'ayons pas à le servir nous-mêmes. Laisse-moi l'avoir dans une seconde. Mais laisse-moi juste sentir ça dehors. Parfait. Et ça finit notre tête. Maintenant, on va avoir un corps et laissez-moi éclaircir ça ici. Donc, euh, nous allons avoir ah, classe de conteneur. Et ce sera aussi un bloc que nous rendons à partir du modèle d'appel. On appellera ce contenu, d'accord ? Et enfin, nous allons avoir J requête, ce qui est requis par bootstrap, et nous grandirons ça plus tard. Et nous avons aussi le bootstrap Js. Ce sont des commentaires ici, Scraped plaies. Cool et script. Parfait. Ok, ça a l'air bien. um, allons saisir la ville bootstrap et les valeurs pour mettre cela dans ce modèle. Ok, alors allons-y et amenons cette ville ici. On peut faire une , excursion en bateau, tu vois ? Évaluer. Remplaçons ça ici et le J s. et maintenant nous avons juste besoin de J requête. Voyons, euh, cherchons J requête cdn. Ok, donc nous le mettons ici code une requête 2.1 point pour parfait. Alors c'est ça. Donc, disons ce modèle et nous devrions être mis ici. la Donclaprochaine chose que nous allons faire est une, um une inscription pour les utilisateurs. Et pour cela, nous allons commencer à utiliser une bibliothèque appelée flask WTF, qui est, um, um, un ensemble d'utilitaires pour être en mesure de gérer les formulaires dans, ah, d'une manière très facile et évolutive. Alors nous allons ah, continuons avec ça 53. Introduction à WTForms: Ok, donc, euh, nous devons, euh, obtenir des formulaires WTF, et ça va être une nouvelle bibliothèque. Et donc cela doit être ajouté aux exigences, et seulement deux personnes l'installent. Donc, ici, nous ajoutons la fiole wtf. Et comme je l'ai dit, WTF vous permet de gérer les formulaires très facilement dans la fiole, euh, quelque part entre le décrochage. Alors, allons ici. Et est-ce que les gens installent les exigences et qui installera des trucs de notification Flex WTF comme WTF pour être là pour nous. Maintenant, nous avons cela activé. Alors, comment construire un formulaire ? Donc je forme essentiellement des vies sur le même module que nous allons être un peu comme utiliser. Alors créons ça. D' habitude, on le met sur un formulaire, Dr Ey Soul. C' est à nouveau fichier et point de forme b Y. Donc le premier avec vous est que nous importons Eanes à partir de la fiole WTF formulaire d'importation, et nous allons importer quelques validateurs et fondamentalement, par les années permettent Cela nous permet de, um des données validées avant qu'il ne soit sans base. Et on va faire Stringfield et Mot de passe aussi. On va aussi, euh, valider l'email. On va aussi, euh, Donc, c'est ah séparé de la beauté des champs de points de forme html cinq champ de courrier électronique d'importation . Parfait. Alors, comment ça marche ? Eh bien, nous devons créer une classe qui, hum, crée fondamentalement des champs à partir de ce champ que nous allons rendre. Donc, nous l'appelons généralement enregistré pour, vous savez, quel que soit le formulaire d'action, formulaire d' inscription dans ce cas parce que nous allons enregistrer les utilisateurs avec ceci. Et c'est une sous-classe hors forme, qui est voleur dernier o B à f wtf ou si nous allons modèle plus sicker. Donc nous avons, ah, nom complet. Donc on va faire un nom complet égal à Stringfield. Et puis nous passons ici ce que nous voulons afficher sur le genre de, comme la description du hors de ce champ. Donc, dans ce cas est le nom complet. Et nous allons dire que c'est un champ de demande obligatoire. Donc, nous faisons des validateurs requis ici. Alors on a un email. Par conséquent, l'email est égal à un champ e-mail. Hum, et ensuite on nous a envoyé la description, et c'est aussi ah, corps qui est nécessaire. On a un nom d'utilisateur, qui est aussi un Stringfield, et ensuite on a juste mis pour utiliser son nom, et ensuite on aura plusieurs valeurs ici. On a un nom d'utilisateur, qui est aussi un Stringfield, et ensuite on a juste mis pour utiliser son nom, Alors ouvrons un support. Donc les validateurs requis et la longueur des points des validateurs. Nous sommes allés orteils comme mettre quelques restrictions. Un minimum de quatre maximum 25. Donc, si leur champ c'est écouter quatre caractères, ce sera nous aurons un message d'erreur. Et si c'est plus de 1 25 la même chose et ensuite mot de passe, nous voulons que ce soit un champ de mot de passe sur. On va appeler ce nouveau mot de passe et pourquoi un nouveau passeport ? Eh bien, vous savez comment nous informons que nous avons une sorte de, comme répéter le mot de passe. Donc vous avez Vous devez mettre le mot de passe deux fois. Nous allons faire quelque chose de similaire ici, et vous verrez que dans un peu les validateurs nécessaires. On va avoir ce validateur. Ce sont les ascenseurs que nous allons avoir un égal et égal qui signifie que ça doit être le même. ai demandé le, um comme deuxième champ que je confirme. Et le message si cela échoue, est passé. Les mots doivent correspondre, puis virgule, nous allons faire des évaluateurs beaucoup de longueur et la même chose. Au moins quatre caractères pour le mot de passe et au maximum 80. Et ça finit le mot de passe, et puis on aura un champ confirmé, qui est aussi un champ de mot de passe, et on va appeler ce mot de passe répété. Donc, comme vous pouvez le voir ici, ceci est confirmé est le domaine dont il a besoin, comme, être égal à. Et s'il échoue le message, nous le transmettons. C' est un mot de passe. La plupart gèrent. Hum, c'est tout. Vous voyez, nous avons à l'antenne ici. Euh, champ mot de passe. Oui. J' aime vraiment cet éditeur de Cloud Line. Je dois dire, euh, ok, donc c'est tout. Donc nous avons notre formulaire prêt à partir, et, euh, maintenant, voyons comment nous le mettons sur la vue. Ah, donc d'abord, nous allons avoir, euh nous allons à la vue de l'auteur ici. Alors définissons une nouvelle route vers le haut. Et celui-là s'appelle registre, et on va devoir faire des méthodes. L' un est un get et tout le monde exposé. Rappelons-nous de la dernière leçon, cela veut dire que nous allons rendre le formulaire ici et obtenir les informations de celui-ci. Donc, tout ce que nous faisons maintenant est passé le formulaire d'inscription. Mais attendez, où est le formulaire de recherche ? Nous devons l'importer. Hum Donc pour ici nous devons faire de flasque. Nous allons avoir un modèle ou importer le modèle de rendu et rediriger après que l'utilisateur soumet et à partir du formulaire de registre d'importation de formulaire d'auteur. Donc maintenant nous avons couru ici, euh, et nous allons retourner modèle de rendu. Et nous n'avons pas fait l'inscription cette année, poste. E-mail. Et nous lui avons transmis le formulaire. Ok, alors voyons à quoi ressemble cette forme. Alors rappelez-vous comment j'ai dit que nous allons suivre le même genre de structure comme, hum, module comme, hum, module comme,sur le modèle. Donc nous allons le faire en, hum, en ayant un dossier de modèle qui, hum, et à l'intérieur, nous aurons l'auteur, le modèle d'auteur. Alors commençons à faire ça. Donc, dans les modèles. Et quand j'avais un nouveau dossier et qu'il s'appelle, euh, donc le dossier est l'auteur, et on va avoir un blawg, hum ah. Dossier dans les modèles également. Et ici je vais faire quand vous déposez, je vais appeler ce registre html cool. Ok, donc ça va étendre le code HTML de base que nous le plus tôt à droite, et ils veulent faire un registre d'auteur de titre de bloc. Euh, alors le contenu avec quoi ? Ils ont un rôle de classe. C' est comment, um, bootstrap définit le genre de, comme les lignes de contenu ici. On va avoir une colonne avec off off off off. Trois. Ce sont encore des choses avec, hum avec serait sangle. C' est ainsi que fonctionne le système grec. Et, vous savez, vous pouvez lire à ce sujet. Alors on va avoir une inscription à l'offre de titre. Donc, ici, où la méthode de formulaire est égale à poster une action égale et rappelez-vous, nous n'avons jamais, jamais mis réel votre autre. Nous vous voilà, Earl, pour lire Pâques. Et le rôle est la forme. Ceci est également requis par bootstrap. Um, parfait. Alors, comment affichons-nous un champ ah ici ? Donc la façon dont on fait ça est de passer un, hum, ce qu'on appelle un groupe de dernière forme Dave ? C' est ainsi que bootstrap va, um, grouper tout le champ, tous les champs propriétés. Donc d'abord, nous devons mettre une étiquette de champ, et c'est un peu comme, euh, si vous voyez le formulaire, c'est cette partie ici, quelle est la description réelle du champ, euh alors nous devons aussi passer le champ réel avec un, um, un filtre de, um ,à partir , modèles de flasque, qui est appelé sûr. Et fondamentalement, ce que signifie sûr, c'est qu'il est OK de rendre les choses dedans. Ah, dans cette partie ici, euh, parce que nous savons que ça vient de nous, et ce ne sera pas quelque chose qui dans cette partie ici, euh, parce que nous savons que ça vient de nous, et ce ne sera pas quelque chose quidoit être évadé ou quoi que ce soit. Hum, et, euh, ça fera ça pour l'instant. C' est un peu comme la partie la plus simple. Mais bien sûr, vous connaissez le domaine. Ce n'est pas ce que nous aurions besoin de faire ici. En fait, c'est là. Le point de forme parce que la forme est ce que nous transmettons à l'entrevue. Où est la vue ici ? Donc nous passons le formulaire et le formulaire est le formulaire de registre. Donc, le champ dans ce cas serait le 1er 1 qui est, si nous vérifions sur le formulaire, c'est le nom complet. Alors mettons la forme pas le nom complet, cette étiquette, puis l'ancien doc nom complet cette étiquette droite et puis formons point fulling. Et puis nous devons faire la même chose pour vous savez, les suivants. Mais faisons juste pour que vous ayez le coup de ça. Et donc, dans ce cas, serait e-mail droit, puis e-mail, et cela rendrait deux des champs de formulaire nom complet et e-mail. Mais il y a quelque chose que je vous montrerai plus tard comment aimer, pas faire ça parce que c'est comme un peu de plats de rivière. Et nous n'avons même pas mis la partie où nous devons afficher les erreurs. Avant de vérifier ça, il y a une chose de moins que tu dois passer, et tu l'utilises toujours. Avant de vérifier ça, il y a une chose de moins que tu dois passer, Il y a quelque chose qui s'appelle CSR F que vous pouvez chercher ? Tu sais ce que c'est. Mais CSR ont fondamentalement rend difficile pour les hackers affichage des orteils, um, ou orteils attaquent votre forme avec des données, et il rend fondamentalement une, um, une fois comme hachage ou force aléatoire. C' est aussi dit que c'est un cookie pour que le serveur sache que la personne, euh , ou le système , ou le système qui envoie cette information est en fait vous et pas comme un script qu'un hacker a qui envoie cette information est en fait vous et pas comme un script qu'un hacker a arrêté. Donc, pour cela, nous faisons cette forme cette tack cachée. Nous l'utilisons toujours au début, hors de sa forme, comme ça, et vous serez en mesure vous assurer que le formulaire est sécurisé 54. Erreurs de forme: Ok, alors voyons ce qu'on obtient ici. C' est Ah, c'est juste pour contrôler la mer ici et redémarrer leur serveur. Et parce que nous avons la, euh, la route quand je fermerai ça les rowdies enregistrés la dernière fois, Voyons ce que la barre oblique a soulevé ses spectacles. Parfait. Nous avons donc notre première forme. C' est tellement cool. R. Donc, vous pouvez voir qu'il rend l'étiquette, puis le champ où vous pouvez entrer les informations et il fait nom complet et e-mail et voyons pendant une seconde la source afin que vous puissiez voir à quoi cela ressemble. Et je vais me faire un peu mes états, donc on a plus d'informations. Donc, comme vous pouvez le voir, il demande bootstrap, le CSS c'est un modèle de base plus ancien. Nous verrons comment il remplace le titre par le registre des auteurs, ce que nous avions dit à l'époque. Sur le conteneur réel. Nous avons le contenu réel ici, qui est qu'il est que voir autorité, partage errant, et nous avons méthode poster un nom complet email tout cela. Donc ça a l'air bien. Je remarque qu'il n'y a pas, euh, il n'a pas parlé ici, ce qui est étrange. Je remarque qu'il n'y a pas, euh, il n'a pas parlé ici, Je vais jeter un oeil à ça, mais dans tous les cas, voir comment on a une étiquette pour un nom complet. Il met l'étiquette là, puis l'entrée i d. Nom complet, nom, nom, texte de type satisfaisant. Et ici, c'est le type email. C' est un peu comme s'il fonctionnait parfaitement bien. Hum, une chose qui nous permet de voir ici. Ok, donc on va envoyer ça au registre, donc ça va aller il n'y a rien qui va se passer ici jusqu'à présent. Essayons de voir ce qui se passe quand on envoie ça. Et, euh donc quand nous devons faire, c'est, euh pour que nous puissions vérifier ce que la personne a envoyé, nous devons vérifier le, um que le premier a soumis. Et la façon de le faire, c'est qu'il reste. Laisse-moi cacher le, um tu vérifies. Autrement dit, si le point de formulaire validez sur soumettre. Et ce que ça fait, c'est qu'il vérifie que, euh, le formulaire n'a pas d'erreur. Donc, comme vous vous en souvenez, il y a des choses qui disaient ici, qui est comme, vous savez, c'est nécessaire. C' est nécessaire. L' utilisation d'Amos Toby, Minimum de quatre Maximov 25. C' est O. C'est um oh, j'avais que je n'avais pas sauvé la course en HTML. C' est pourquoi ils sont la forme cachée balise ne montrait pas. Alors rechargeons ça, en fait, rechargeons à partir de la source. Vérité. C' est donc la RSE du jeton de cette année dont je vous ai parlé. Tu vois, comment ça va ? Rend cette balise très aléatoire. Et si vous ne mettez pas ça quand votre pied quand vous soumettez des flashs va un peu comme jeter leur um, donc il y a un jeton CSF. Bien. Um, donc en revenant à la vue, Um, si la forme sorte de, comme passe toute cette validation, alors il exécutera le bloc if. Sinon, il le renvoie au modèle de rendu vers le vers le modèle de rendu. Et il allait y avoir des erreurs que nous allons pouvoir nous rendre. Hum, donc c'est sûr pour l'instant. Nous allons retourner une redirection vers, euh, Euro pour Et appelons ça un succès. Et nous devons importer Uriel 4, et nous allons avoir ah, en route appelée succès. Et on va définir ça et revenir même si on ne fait rien. Registre de l'auteur. Parfait. Euh, donc, bien sûr, le problème, c'est qu'on ne va pas pouvoir, euh, passer ça complètement parce que ça nécessite tous leurs champs. Mais, hum, passons juste dans la façon dont nous affichons l'erreur. Donc, nous faisons cela en faisant ce qui suit. Hum, donc on va mettre les erreurs ici en bas. Mais voyons, Fondamentalement, ce qui se passe, c'est qu'il y a des erreurs de champ, hum,classe, pas une , hum , propriété de classe, qui est rempli de cet air. Donc, si c'est un nom complet de formulaire que les erreurs et c'est généralement comme une liste, donc cela pourrait être comme plusieurs erreurs, vous pouvez en afficher un seul, mais il est préférable de simplement les afficher tous. Alors, euh, c'est aussi. Et si c'est pour fermer ça et qu'on va faire , on fait une liste hors de l'antenne. Donc, toi bien, classe. Et quand j'ai appelé ce texte danger, qui est comme un fonds de rat que, hum, bootstrap fournit et nous allons faire pour erreur dans la forme, nom complet que les erreurs. Donc c'est un look quatre que nous allons faire et pour, et nous allons avoir ici un élément l I avec l'erreur affichée. Donc c'est tout ce bloc. Est-ce que les erreurs affichent tout ce qu'il y a que ça pour ma tête. Et je dois copier et coller tout cela et le mettre ici sur l'e-mail aussi. Mais en remplaçant l'email par ah pour un email de pluie. Ok, alors voyons si ça marche. Il y a d'autres erreurs. Je veux dire, ça va avoir ça va éclater pour ne pas avoir le nom d'utilisateur, le passe et le mot de passe répété sur ces champs qui ne sont même pas là. Mais voyons ce qui se passe si nous rechargeons ça. Mais nous n'étions pas en train d'exécuter l'application. Alors, voilà. Parfait. Donc, comme vous vous en souvenez, nous avons défini que le, um le nom complet est requis. Donc, quand il que nous pouvons avoir est comme juste passer ce vide et, um ou les deux vide donc nous aurions des erreurs. Mais mettons juste un nom là et voyons à quoi cela ressemble pour l'ère de l' e-mail. Um, ou plutôt, je vais le faire dans l'autre sens parce qu'il va lancer une erreur du côté client. Je sais que je vais te montrer ce que ça veut dire, mais disons qu'on a oublié le nom complet, mais on a l'email. Si je m'inscrit voir, ce sont les erreurs qui fonctionnent déjà. Donc, ce champ est obligatoire est le message standard que ce corps a juste besoin de sens. Mais vous pouvez Vous pouvez aussi aimer, comme ici. Mais vous savez, un message personnalisé si vous le vouliez. Hum, et ce que je voulais te montrer c'est parce que c'est html 5. Il y a une validation pour l'e-mail lui-même. Donc, si je fais comme de zéro point io, ce qui n'est pas un e-mail valide, droit et ne inscrivez-vous, disons que j'obtiens une erreur. Mais cette zone n'est pas de fiole. C' est juste parce que flask um, le modèle ou le formulaire Il dit que c'est un type d'email de champ, et si vous voyez là, um, vous voyez comment il dit type email qui validera contre, um ah contre html cinq couche de validation, qui est même avant même que nous envoyons à la au serveur. Si nous ne faisions pas html cinq alors que nous obtiendrions comme un, vous savez, e-mail invité genre de message ici, mais donc tout fonctionne bien. On dirait qu'on va bien et c'est tellement génial que ça n'a pas l'air si mal. C' est ah si on doit mettre toute la femme d'âge comme tu vois ici. C' est un peu comme une douleur, parce qu'il y a beaucoup de mal, comme des choses qu'on doit aimer faire côté serveur du côté Flak. C' est un peu comme une douleur, parce qu'il y a beaucoup de mal, Et tout est automatiquement fourni pour faire aussi des formes en flacon avec flagstone. WTF est vraiment, vraiment simple. Cependant, une chose qui va, hum, que les vieux programmeurs ou les programmeurs professionnels disent est que nous devons nous en tenir au sec um ah, paradigme ou au modèle de um sec et aux moyens secs. Ne vous répétez pas, le R Y. Et si vous commencez à voir n'importe où quand vous êtes quand vous développez cela, vous répétez des choses encore et encore, comme des choses très similaires, qui devraient Soyez un drapeau rouge pour vous les gars. Cela signifie qu'il y a un moyen de le faire dans un souci plus facile. Comme le rendre, hum, plus lisible. Et il y a en fait un moyen de cette façon. Ça s'appelle Mac Rose et on verra Micro dans la leçon suivante. Alors, restez autour 55. Macros: Ok, donc nous allons remplacer tous les jours par, genre, une macro et la façon dont les macros fonctionnent c'est qu'elles nous permettent de, comme, une macro et la façon dont les macros fonctionnent c'est qu'elles nous permettent de, comme, fondamentalement, euh, faire des pièces sur les modèles soient ses propres peu, genre, inclure. Et, euh, Mais la bonne chose à propos des macros est que vous pouvez passer des choses à lui, donc ils peuvent être remplacés dynamiquement. Alors, comment ça fonctionnerait ? Donc ce que je vais faire, c'est remplacer tout ça par une macro, et ensuite je vais juste insérer une doublure pour chaque champ, ce qui sera, vous savez, beaucoup plus simple. remplacer tout ça par une macro, et ensuite je vais juste insérer une doublure pour chaque champ, ce qui sera, vous savez, Donc je vais copier et coller ça, euh, et je vais créer la macro au niveau supérieur des modèles parce que je pourrais l'utiliser et je vais créer la macro au niveau supérieur des modèles parce que je pourrais l'utiliser dans différentes formes. et je vais créer la macro au niveau supérieur des modèles parce que je pourrais l'utiliser dans différentes formes. Hum, à travers les modules. Donc, généralement, les macros sont démarrées avec un autre score pour le nom. C' est une convention en général pour les noms de fonctions ou les noms de fichiers que la note qu'ils ne devraient pas être appelés par eux-mêmes. On les appelle toujours d'ailleurs. Donc, nous allons suivre que si formulaire helpers html. Et comment faites-vous, euh, la macro finale. Donc, vous devez mettre un pourcentage de micro. On va appeler ce champ de rendu, et vous aurez plusieurs micro dans un fichier. C' est pour ça que ce sont d'anciens assistants. On peut mettre des choses ici. Alors, qu'est-ce que vous passez à un champ Render macro ? Eh bien, les noms des sens. Donc vous n'avez pas à aimer, euh, vous pouvez le faire rendre dynamiquement n'importe quel champ ok ? Et tu finis le micro avec nous. Vous avez peut-être deviné et micro parfait. Maintenant, je vais faire face à ce que j'ai fait. Euh, plus tôt. Hum, bien qu'on fasse ça Ah, une meilleure indentation. Donc, euh, nous voulons avoir le groupe de formulaires de classe def pour chacun d'eux. Nous voulons avoir le champ, notre label. Donc, au lieu de mon nom complet, on va avoir du terrain, j'ai l'impression que ça va avoir la viabilité de cette forme et la même chose que ton champ. Mais ici, je vais passer quelque chose appelé argument de mot clé pour que je puisse passer un peu comme des qualificatifs à ceux de ces champs et l'un d'eux que je ne vous ai pas montré plus tôt. Um, c'est comme si je pouvais. On devrait définir les champs avec une certaine classe appelée um, contrôle de formulaire. Et c'est quelque chose qui aide, hum, bootstrap pour rendre ce champ. Donc tu vas voir que quand on a appelé la macro, , on n'a pas Ah, si des erreurs de champ. Bon, alors un danger de texte en plastique. C' est très bien pour les erreurs de champ. Et puis je vais avoir ah, et pour toi. Eh bien, et s'ils ont le maquereau aussi Ok, alors c'est que c'est tout. Ont été mis là. Alors maintenant, ici. Je vais avoir le, hum, hum, dessous de l'enregistrement de l'auteur. Je vais inclure la macro ici dans ce modèle. Alors, comment faites-vous ça ? Nous avons une aide de formulaire rend le champ de rendu d'importation m l. Donc, cela ressemble beaucoup à la façon dont vous importez, vous savez, bibliothèques dans le fichier python principal. Donc c'est à peu près tout. Alors ça va être très facile maintenant d'inclure tous les champs parce que ce qu'on sait faire est juste de mettre le champ de rendu suivant, et ensuite on passe le formulaire, utilise son nom, accord. Et puis c'est l'un des quarks. Conservez les arguments des mots-clés. La classe est égale au contrôle de formulaire. Et c'est tout. C' est notre domaine, non ? Il n'y en a pas. Incroyable. Donc maintenant, au lieu d'avoir tout ça comme crawdad là-dedans comme sentir étiquette ce nom d'utilisateur formulaire, bouchons de champ, tout ce que nous avons juste à passer cette seule ligne et il prend soin de tout pour nous. Donc maintenant, nous pouvons fondamentalement faire formulaire email ici et ancien Ah, mot de passe. Eh bien, il me manque quelque chose. Attends son nom complet d'abord, non ? Oui. Eh bien, nom email, nom complet email, courrier électronique, nom d'utilisateur, mot de passe. Et puis répétez. droite. Nom complet email. Utilisez le passeport de nom, et, ah, confirmez. Formez donc le confort. Alors voyons que ça a fonctionné. C' est assez excitant, vous savez, Erreurs. C' est assez excitant, vous savez, Je vois là. Alors maintenant on va recharger ça, et voilà. Alors voyez, maintenant comment c'est, genre, c'est du style, un peu différent. Il n'a pas l'étiquette à côté. C' est comme un contrôle de formulaire, hum, classe. Et donc ça a l'air assez bien. Allons en quelque sorte, comme s'inscrire ici. Et puis nous avons mis ceci un peu plus petit pour que vous puissiez voir mieux. Donc si je vais m'inscrire, voir maintenant je vois, comme tous les champs qui sont, hum qui sont nécessaires. Et alors faisons ce formulaire Jorge Escobar ou hé, de Syrie. Dodi. Oh, utilisez le nom est Jorge Password test. Et voyons si je fais un mot de passe qui ne correspond pas au test aussi. S' inscrire. Voir Passeport. La plupart des correspondances. Donc, il est de vérifier que les mots de passe ne correspondent pas sur. Regarde ça. Il est déjà en train de sentir les autres choses dehors. Normalement, les passeports ne sont pas pré-champ parce que c'est une chose de sécurité. Donc si je passe les tests et les tests et que je m'inscrit parfaitement, je dois, euh, aller à Donc j'ai réussi. Donc cela signifie que ici, hum que pour avoir invalidé soumettre passé et il nous a envoyé à la page de succès. Donc plein de trucs amusants ici. Les macros sont incroyables. Ils sont très cool fonctionnalité. Donc, et c'est si lisible. Genre, regarde ça. C' est si gentil. Vous pouvez, vous savez, voir ce qui se passe là-dedans. Donc, vous savez, les formulaires sont vraiment des choses qui sauvent des vies, donc c'est à peu près tout. On a beaucoup de choses sur cette dernière, vous savez, peu de leçons. Donc la prochaine chose que nous allons couvrir est, euh, en gros, de créer les modèles et de stocker certains de ces trucs là-dedans 56. Modèle et forme de blog: Ok, donc maintenant que nous avons ah, modèle utilisateur ou modèle auteur, euh, il est temps pour nous de commencer à travailler plus sur le modèle blawg parce que nous voulons pouvoir, hum, hum, créer un blogué chaque fois que, um, nous, comme démarrer l'application ou le site Web pour la première fois. Hum, si vous êtes, hum, si vous avez déjà travaillé avec la presse de guerre dans le passé, vous saurez que la première fois que vous allez voir leur administrateur s'il n'y a pas de blawg que juste comme une mise en place, um, fonction froide afin que vous puissiez commencer à créer votre blogged et nous voulons faire quelque chose similaire ici. Donc, hum, allons de l'avant et créons le modèle de bloc et on va faire un couple. Ah, des choses intéressantes. Euh, mais commençons à travailler dessus. Alors allons de l'avant et créons un nouveau fichier de modèle de bloc et des modèles P y. Ok, alors que voulons-nous faire avec ces modèles ? Eh bien, la première chose que nous devons importer est par le, euh, le droit DB. Et nous allons trouver le blawg de classe, qui est ah, sous-classe du modèle B. Donc ça va avoir un i d comme celui qu'on a fait avec l'auteur qui va être en incrément automatique, pas vrai ? La clé primaire est égale à true. Ça va avoir un nom, et c'est une chaîne de 80 et ça va avoir un administrateur. Donc, l'administrateur est fondamentalement la personne qui crée le bloc et a, comme, plein, um, les autorisations pour un peu comme édité. Donc nous allons faire quelque chose de vraiment intéressant ici, c' est-à-dire que nous allons faire de l'administrateur un lien vers le ah. Donc l'auteur, et la façon dont nous le faisons est par quelque chose appelé clés étrangères. Et vous pouvez en savoir plus sur les clés étrangères. Hum, en ligne dans le sens off, vous savez, dans l'espace de ma suite et une clé étrangère dit que ce dossier administratif va être un I d. l'auteur de l'auteur. Et ça a été un point pour une personne. Ah, et c'est comme ça que ma suite saura que, euh, cet et c'est comme ça que ma suite saura que, euh, cet auteur est fondamentalement aussi spécifique. C' est le e est l'administrateur de ce bloc ? Euh quoi ? On va jouer avec ça pour que vous puissiez vérifier. Alors on va avoir, hum, il y a, il va falloir passer le nom et l'administrateur, non ? Donc le nom de soi est égal au nom et le self-admin est égal à admin. Et enfin, l' un des avoir une méthode de reproduction ah. Reproduire. Donc, et ça va revenir. Blawg pour cent le sont, et nous allons retourner le nom. Parfait. Donc c'est notre modèle blawg. On aura un genre d'ici, non ? Alors maintenant, on va faire le formulaire pour ça. Donc ancien B y et on va, hum de flasque. Importation WTF pour. Et donc on allait avoir, euh on va faire quelque chose de vraiment intéressant ici que, euh, vous verrez à partir des formulaires WTF importer Stringfield. Donc c'est ce qui se passe ici, euh, sur le formulaire, euh, sur l'ensemble de la forme. Ça s'appelle ça mis en place pour lui. Je veux, euh, peu comme je devrais exiger, comme, vous savez, le nom de la personne. Je veux dire, le nom complet, l'e-mail, ce mot de passe de nom d'utilisateur et confirmer, ce qui est comme, c'est comme la même chose que l'auteur a, raison donc et la seule chose que change est le nom. Alors nous allons dire que c'est mis en place. Donc, le nom du hors du formulaire, c'est un champ de chaîne et l'étiquette de champ allait être nom de bloc. Et puis c'est ouvert une clé ici, et c'est nécessaire. Hum, et limitons la longueur au maximum des 80 caractères de Toby nommés. Et c'est tout. droite. Alors j'aurais, hum non, je dois importer des validateurs ici. Bali. Il y a le droit. Et le suivant serait comme, vous savez, j'aurais besoin du nom complet pour l'auteur, non ? Pour l'administrateur. Et puis Stringfield, etcetera. Et puis j'aurais un e-mail et ils ont utilisé son nom. Tu vois ce que je dis ? Donc c'est comme la même chose que nous avions sur ce formulaire ici. Donc, au lieu répéter à nouveau après le sec, Um, ne te répète pas. Alors ce que je vais faire, c'est que je vais importer de l'auteur ah formulaire, et je vais importer le hors de la ah, quel est le nom du rasoir pour ? Et parce que c'est une classe, vous savez, comme n'importe quelle classe que vous pouvez étendre ou que vous pouvez aimer, euh, fondamentalement si classique. Donc, au lieu de la forme ici, je vais faire un formulaire d'inscription. Et cela fonctionne parce que rasoir, pour lui-même manquant. Ah, une sous-classe hors forme juste ici. droite. Donc cette classe va hériter de toutes les propriétés du formulaire de registre, donc ça va fonctionner exactement de la même façon. Mais nous ajoutons juste ce, hum, peu comme, um, champ de formulaire supplémentaire, qui est le bloc principal. Et ça marche parfaitement, Flight. Donc, vous savez, encore une fois, comme, vous savez, un peucomme, vous savez,des petites choses que vous pouvez faire, donc vous n'avez pas à répéter beaucoup sur la même base principale. Et si vous voulez ajouter, genre, genre, un nouveau et que vous vous sentez ici, disons que vous voulez de l'annonce. Je ne sais pas. Euh, tu sais, le sexe ou, euh, une autre propriété. Tu n'as pas besoin de refaire ça. C' est ça. Ah, ce bloc mis en place pour lui, vous pouvez Il sera automatiquement inclus. 57. Modèles de connexion et de configuration de blog: Ok, alors maintenant, nous allons travailler sur la couche de présentation Blawg, um, Et pour cela, nous allons devoir créer un nouveau répertoire de modèles pour nous rappeler comment nous suivons le modèle NBC ici. Donc, um, um, nous regrouperons tout le genre de modèles pour chacun un module. Donc je vais créer un dossier Blawg Templates, et à l'intérieur, je vais ajouter un nouveau fichier. Et, euh, faisons l'administrateur d'abord. Et pour l'administrateur, je ne vais pas faire beaucoup, ce qui va être, ah, assez comme, euh, espace réservé pour l'instant, parce qu'on ne va pas Et pour l'administrateur, je ne vais pas faire beaucoup, ce qui va être, ah, assez comme, euh, euh, espace réservé pour l'instant, vraiment construire l'administrateur. On va construire l'installation, mais on peut sortir ça du chemin pour avoir la mais on peut sortir ça du chemin pour avoir la structure de base. Donc, d'abord, nous étendons le HTML de base, puis le titre IHS va être blawg admin, et ensuite nous allons avoir une classe diff égale ligne, et maintenant nous allons avoir une classe div, et nous allons faire une colonne Medium offset trois et Appelez-le médium six, ce qui veut dire que c'est un médium. Ah, SISE, peu comme un bureau. Sites au large de six et puis mais avec trois décalés sur la droite à l'intérieur. Alors maintenant, nous avons le bloc Admin titre Blawg, admin. Et maintenant tu sais quoi ? Je vais ajouter les messages flash parce que nous allons probablement avoir beaucoup de messages qui, euh, nous disent ce que , euh, euh, les actions ont été faites avec succès. Donc, et vous vous souvenez de cela de la première de la section précédente. Donc, si nous avons des messages flash à afficher, alors , euh, nous allons le faire si je d messages et ensuite vous allez classe flashs andi pour chaque message dans les messages, nous allons à un Eh bien, je avec le message. Eh bien, c'est dans cette boucle quatre et tout ce que vous Ellis déjà là, et ensuite on va faire une fin. Si et et et avec Perfect. Et enfin, nous devons mettre fin au bloc. Super. Donc ça a l'air bien. C' est notre administrateur. Html. Et maintenant, nous allons travailler sur l'ensemble du HTML. Et c'est juste copier ceci, um, um, sur les modèles sur les modèles de bloc, nouveau fichier mis en place. Copions donc cette première partie. Donc, c'est la création blawg. Et là, nous allons avoir donc nous allons avoir le formulaire réel nous allons avoir donc nous allons avoir le formulaire réel. Droit. Donc, à partir des aides de formulaire L'importation d'e-mail de texte, champ de rendu. Um, c'est toe a for méthode égale post action égale que vous êtes l pour mettre en place et le rôle est égal pour Donc la première chose est, rappelez-vous, rappelez-vous, ils voient le jeton srf afin de former cette balise cachée, et puis nous allons ont le champ étranger réel. Donc je vais avoir, genre, différentes rubriques. Donc je vais d'abord avoir les informations blawg, et ensuite je vais avoir le formulaire de rendu ce nom, et ceci est déformé l'installation pour lui. Classe, euh, contrôle de formulaire. Et puis je vais voir à méchant, utilisateur, et je vais faire quand une copie et coller ça. En fait, je peux copier et coller l'histoire de course html parce que ce sont les champs pour un nom complet email en utilisant mot de passe et confirmer. Et ah, eh bien, on appellera ça créer un look parfait. Donc je pense que c'est tout. Maintenant, Maintenant, continuons et travaillons sur les vues réelles pour voir à quoi ça ressemble. Ok, alors maintenant, nous allons travailler sur les vues, et nous n'avons presque rien là-bas. Alors commençons par importer certains des trucs dont nous allons avoir besoin à partir du rendu d'importation flash, euh,le flash de redirection de modèle pour les messages flash et l'Europe pour. Alors commençons par importer certains des trucs dont nous allons avoir besoin à partir du rendu d'importation flash, euh, euh, Et nous allons aussi importer le bloc, former le formulaire de configuration et à partir du flasque blawg, nous allons importer le DP pour les opérations DB. On va avoir besoin de créer un nouvel auteur et enfin de bloquer les modèles. Super. Alors maintenant, traitons l'administrateur. Donc l'administrateur va vivre sur Slash admin. Et alors ce qu'on va faire, c'est vérifier combien de pâtés de maisons ? Hum, est-ce qu'on a ? Donc, nous faisons une requête blawg ne compte pas, et nous n'avons pas encore vu compter, mais nous pouvons fondamentalement faire un comptage sombre avec n'importe quelle requête ou n'importe quel filtre. Et il rapportera le nombre d'enregistrements que, euh, que nous obtenons tellement de quantités de sang comme me donner un compte de tous les blogs. Si ce blog est égal à zéro, cela signifie qu'aucun bloc n'a été créé. Nous allons retourner la redirection pour la fille pour l'installer, et sinon nous allons retourner le modèle de rendu du journal. Ajouter html moyen. Ok, jusqu'à présent, si bien. Maintenant on va faire la mise en place, et c'est là que le formulaire va partir, alors Slash Set up. Ils sont mis en place et nous allons avoir le formulaire sera le formulaire mis en place, et nous allons retourner le modèle de rendu hors. Blawg a mis en place html avec la masse pour. Le contexte. Ok , , pour qu'on puisse y aller et essayer ça. Vous voyez, on a quelque chose, et ensuite on peut continuer et faire le réel comme celui de ses opérations ensuite. Voyons donc si nous avons des erreurs. On dirait que tout va bien. Donc on doit aller à l'administrateur, non ? Et si Adminis travaille ? Oh, si peu de fait ici on n'a pas créé les tables pour l'administrateur, et on peut vérifier ça rapidement. Donc si j'utilise blawg, entendez que j'ai utilisé le Yeah. Désolé. Donc, utilisez blogged. Parfait. Alors maintenant, montrez-moi les tables et je n'ai pas de tables. Donc ça veut dire que nous devons courir, hum, pour créer tout ce contrôle. Voir ici et nous allons faire python me gérer. Pourquoi Shell ? Donc nous allons de Flask Blawg Import Devi et ensuite nous savons toe db session commentaire juste au cas où. Et maintenant, nous sommes petit db créer tout et vérifions que, hum montrer les tables. Parfait. Donc, j'ai auteur et Blawg une chose que j'ai remarqué là-bas. Tu te souviens comment je t'ai dit que tu avais besoin d'importer les modèles ? Donc c'est quelque chose que j'avais toujours supposé. Quelle est l'affaire ? Mais ça ressemble à une suite. Alchemy est un peu comme, intéressant de regarder tous les modèles, et il les crée parfaitement bien. Donc pas besoin de faire ces importations qui semble fonctionner assez bien. Donc, avec cela, je pense que nous pouvons aller de l'avant et ensuite exécuter le serveur et au moins vérifier. Donc ce que je veux, euh, voir ici, c'est que si je frappe slash admin qu'il vérifie combien de blocs il y a, combien d'enregistrements sanguins si c'est zéro qu'il nous renvoie à l'ensemble des blocs de html et ça devrait, comme, rendre le formulaire correctement pour créer le bloc. Alors voyons si cela fonctionne, donc slash admin parfait. Ah, nous avons une erreur sur le modèle lui-même sur le bloc et. Alors voyons ici et bloquons aussi, je manque le contenu. Voir ici ceci est mis en place html. Oui, il me manque le contenu. Alors bloquez le contenu et dites que Laissez-moi vérifier. Je veux dire son thème l Oh, c'est pour un message, pas pour un message. Et donc ça a l'air bien. Voyons voir pour avoir des erreurs ? Pas d'erreurs. Ok, donc c'est qu'il aurait encore méchant. Et voilà. Mise en place. Fonctionne parfaitement bien. Vous voyez, je reçois le nom de bloc ici et puis l'utilisateur admin. Et rappelez-vous, nous ne sommes pas comme mettre tout ça comme manuellement. Comme je l'ai dit, c'est automatiquement une sous-classe ou juste une réforme. Et c'est juste insérer ce nom sur l'autre formulaire. Donc, hum, ça marche parfaitement bien quand on met ça un peu plus petit pour que tu puisses voir tout ça. Donc ça a l'air bien. Alors allons maintenant faire les opérations de base de données. 58. Base de création de blog: Ok, donc avant de , soumettre ce formulaire, nous voulons être en mesure de faire l'opération de base de données. Donc c'est ce qui va arriver ici. Donc on va faire un formulaire de validation sombre sur soumission. Si ça a marché, alors la première chose que nous voulons faire est de créer un auteur à partir de ces, hum, dossiers de formulaires. Si ça a marché, alors la première chose que nous voulons faire est de créer un auteur à partir de ces, hum, Donc je vais le faire et auteur égal auteur et puis pour lui, nom complet. Donc, pour que nous puissions accéder aux données réelles qui sont stockées sur ce champ, nous formons ce nom de champ, puis points de données. Donc, c'est en fait le formulaire plus tard. Et si vous vous souvenez, nous devons passer cet email de nom complet en utilisant un passeport humain. Et si c'est un auteur, donc forme point nom complet, formulaire email, formulaire, nom d'utilisateur. Ils forment des données de mot de passe, et ensuite on va passer. données de mot de passe, vrai, C' estvrai, parce que c'est ça va être l'administrateur pour ça, euh, alors on doit se rappeler, quand on joue avec ton, hum, on doit faire avec Devi. Annonce de session de cet objet. Et ils allaient faire ah db session um Eh bien, donc avant de nous engager, nous voulons être en mesure de, hum pour vérifier si cet enregistrement est créé correctement. Parce que souviens-toi comment on va lier l'administrateur à une interview d'étrangers. Un auteur clé, j'ai donc besoin de passer l'i d de ce disque ici. Et au lieu de commettre ça, on pourrait le commettre, mais il y aurait un peu, euh pas très efficace. On peut faire quelque chose qu'on appelle une chasse d'eau. Et c'est un truc soigné quand la session db habituelle flush. Quoi ? Euh, suite Arkham va faire. Il va essayer, orteil imiter ou simuler que l'enregistrement est écrit, et c'est quand réellement donner le I D. Mais ça ne va pas vraiment dans la base de données pour enregistrer cette transaction. Donc on ne peut pas, comme, vérifier si cette transaction va bien se passer. Et si ce n'est pas le cas, alors nous pouvons le remettre à la forme. Donc, après cette chasse d'eau, nous pouvons faire si l'auteur I d Alors rappelez-vous comment nous avons eu I d quand nous le faisons. Quand nous l'avons fait, la session Devi commit. C' est la même chose, mais ce n'est pas vraiment l'écrire. C' est juste comme passer par la paix de validation valide et vérifier qu'il y a une vraie dame. Donc maintenant, nous allons faire s'il y a un autre i d Alors construisons un objet blawg, et ce serait juste les données de nom de formulaire, et puis l'auteur, je ne sais pas assez de forme ici, mais fondamentalement cette autorité que nous avons à partir du vidage de session DB. Hum, donc maintenant on fait la même chose ici on est Ah, ID de session et on va ajouter le journal et on va faire une autre session de chasse et voir si tout ça a l'air bien jusqu'à ce point là. S' il y a des erreurs à ce stade , , on peut faire une séance. Retourner et revenir signifie que vous savez quoi ? Cette transaction ne va pas se dérouler. Eh bien, nous allons juste, genre, annuler tout ça et je vais juste dire erreur de création d'utilisateur à ce stade. Euh, pourquoi ? Parce que si l'autorité n'était pas, euh, n' a pas été créée, alors nous tomberons dans ce bloc. Donc maintenant je vais vérifier si l'auteur I d et le journal I d. alors on peut aller de l'avant et stocker tout ça. Tu te souviens comment je t'ai dit que commit te permettait permettait faire plusieurs choses en même temps ? C' est ce qu'on appelle une transaction. Une transaction signifie que vous avez besoin d'un type atomique de structure similaire où vous avez besoin d'un auteur et aussi d'un blawg. Et puis ces deux choses sont liées ensemble, et si quelque chose échoue, vous pouvez annuler tout. Donc, vous pouvez vous pouvez quand vous êtes souvent obligé de faire des transactions parce que vous êtes comme, vous voulez vous assurer que ce morceau de l'enregistrement oh, ou que rigoureux est bien écrit et ensuite faire une autre chose. Donc on va avoir un autre ici. Donc si nous n'avons pas eu pour une raison quelconque l'autorité et un blogueur, je suis mort, ça veut dire que nous avons eu un dîner pour créer le bloc. Donc, nous allons revenir ici une houle, et nous allons dire que l'erreur est égale à erreur, création de blogues, et ça pourrait être quelque chose comme, il y a là je pense que ce n'est pas correctement configuré ou il y a un problème connecté avec la base de données. Dans tous les cas, nous ne le faisons pas, nous ne le disons pas à l'utilisateur ou laissons l'utilisateur penser que tout va bien. Donc on va faire flash ? Ah, du sang créatif. Eh bien, en fait, je veux faire ça. Si ça s'est bien passé, rigolez. Regarde, créé. Et puis quand je fais une redirection de retour Ah, euro pour Ataman. D' accord. Et on va devoir, euh, passer ce message d'erreur ici. Cependant, nous devons aimer, ah, l'initialiser comme vide. Donc, on va passer à l'air vide, parce que la première fois que tu vas faire ça, on n'aura pas, euh, on n'aura pas cette erreur. Ce contexte aérien créé, donc ok, ça a l'air bien. Ce contexte aérien créé, donc ok, donc ok, Donc l'erreur équivaut à vide, que nous la première fois, il ne va pas acheter de plomb sur. Quelqu' un va tomber ici. Ça va rendre la mise en place la prochaine fois qu'on se reverra. Lorsque vous soumettez va vérifier l'auteur. Je veux dire, créer l'objet. Je veux dire, Essayé de l'ajouter, rincez-le pour obtenir l'auteur I d. Si nous obtenons l'auteur, je d. Ensuite, nous essayons de faire le blawg et essayer. Nous obtenons le, um, le bloc i d. Et s'il y a des erreurs, um, nous avons envoyé un corps arrière pour son OK, alors nous nous engageons avec le magasin ce look créé et puis revenons à la l'euro pour Attman. Donc c'est beaucoup de choses, vous savez, vous pouvez un peu vérifier ça. Assurez-vous que si vous ne comprenez pas quelque chose, vous pouvez rembobiner et écouter le tout à nouveau. Mais une fois que vous le faites, vous savez, une ou deux fois, vous obtenez le coup de la main. Voyons donc si nous avons des erreurs. Ça a l'air bien. Alors allons de l'avant et essayons de créer ceci. Donc on va slash admin pour mettre en place. Donc disons que mon blawg python est le nom. Et, hum, vérifions si nous ne mettons pas si le nom complet ici si nous obtenons une erreur à Jorge de Cyril Oddo Jorge Password test. Répétez. Donc devrait obtenir une erreur. , Tenez,attendez. Voilà, Jorge de Terra, vous testez créer blogué. Non, je ne le suis pas. Je n'avais pas le Oui, je manque les méthodes ici, donc les méthodes égale Ah, get and post. Super. Alors disons que c'est égal. Il n'y a pas d'erreurs. Retourne. J' ai encore l'information là-bas. C' est une liste de test et test créer blawg. Ok, parfait. Donc maintenant, il dit que ce champ est nécessaire. Jorge Escobar test et texte. Voyons comment ça marche. On a à l'antenne, mais j'ai l'impression que c'est juste quelque chose qui manque. Mais je pense que la base de données s' est déroulée correctement. Alors vérifions la base de données. Donc, si nous ne sélectionnons l'étoile de l'auteur là vous allez. Il dit, Ah, vous savez, nous avons notre nom de Pâques passé pour tout est là sélectionner l'étoile du journal et mon bloc python parfait. Alors voyez comment j'ai admin et c'est comme un I.D I.D C'est la clé étrangère. Donc ceci quand vous avez une clé étrangère, cela signifie que ces enregistrements doivent exister et, euh et cet enregistrement est fondamentalement un pointeur. Et une fois que c'est connecté, , tu peux faire, euh, euh, ce qu'on appelle comme des jointures. Donc, vous pouvez essentiellement lister sélectionner l'étoile à partir du bloc, vous savez, et afficher les informations d'administrateur ici. Le mot de passe complet du nom. Je veux dire tout. On vérifiera ça un peu plus tard. Si mauvais que nous avions à l'antenne sur le sur le modèle de configuration ou d'administration. Je pense que c'est la même erreur que j'ai eu sur la mise en place. HTML. Donc, il est à regarder Contin ici et voir si nous avons ce moyen ici. Oui. Le sang a créé un peu. Ah, pas le droit ou les choses, mais ah, oui, c' est les mesures éclair. Si je recharge, ce dernier message va disparaître, et il vérifie qu'on a, ah, ah, bloqué l'enregistrement. Donc tout a l'air bien jusqu'à présent, super boulot. 59. Connexion avec auteur: Ok, donc nous avons notre administration du sang en place. Maintenant, je veux être en mesure de me connecter à remorquer le bloc. Et la façon dont nous allons le faire est en implémentant une fonction de journalisation avec un formulaire et en prenant la base de données pour le torrentiel. Alors vérifions la base de données. Euh, pendant une seconde, euh, pour voir sont, euh, que nos bases, euh, et vérifier que les tables sont là. Donc on a le blawg qu'une base là-bas, on va utiliser Balog et ensuite montrer les tables. Donc, nous avons notre auteur et blawg. Donc, si je ne sélectionne l'étoile de l'auteur là c'est. J' ai un nom d'utilisateur et un mot de passe que je peux tester avec. Donc, euh, nous allons, euh, dans les cas sont notre environnement virtuel. Donc, je suis ici dans le changement d'espace de travail pour flask blawg et faire un désolé ne source en cours d'activation. Parfait. Alors rappelez-vous que nous avons besoin de ces V M., les parents sont au début pour V M., que nous sachions que nous sommes dans le bon endroit, alors commençons à travailler sur la mise en place d'une fonction de journalisation ah, et bien sûr, nous allons le faire en fonction des points de vue ici. Ah, hors de l'utilisateur. Et, euh, nous allons avoir ah, essentiellement travailler sur cette fonction de traîne là-dedans. Donc la première chose que nous allons faire est de créer un formulaire P Y um journalisation, formulaire de journalisation. Désolé pour la forme, les gens. Pourquoi ? Voyons comment on peut faire ça. Hum, on va, euh, euh,super un nouveau cours appelé formulaire de journalisation. Ils sont dans la formation de sous-classe là-bas, et donc nous allons avoir essentiellement le nom d'utilisateur et le mot de passe. Donc le nom d'utilisateur est Stringfield de nous allons demander orteil sous le nom d'utilisateur, et puis je vais, hum que c'est le champ requis, et je vais mettre la longueur pour être la même. Interrogé comme celui sur la base de données. Donc minimum de quatre maximum sur 25. Um, et ce jeu pour le nom d'utilisation et le mot de passe. Nous allons tous avoir un mot de passe dans ce cas pour que les gens ne voient pas, hum quoi ? Ce que vous entrez. Et nous allons aussi rendre cela obligatoire, et la longueur est égale à celle sur le dessus. Donc minimum pour un maximum de 80. Parfait. Donc c'est ça. Sauvons ça. Hum, et maintenant on va avoir les points de vue pour que nous puissions. Eh bien, tout d' abord, faisons le modèle. Donc on va en créer un nouveau ici sur l'auteur. Um, mais ça va s'appeler journalisation html dot html html. Et pour celui-là, nous allons étendre le code HTML de base. Et, euh, mettons un titre que vous avez servi, et ensuite on aura du contenu là-dedans. Alors maintenant, on va jouer un rôle ah. Hum, et on va avoir un cours avec ah, offset de taille moyenne 3 et un six de taille moyenne avec colonne. Et là, nous allons demander à l'utilisateur de titre de se connecter. Hum, si nous avons une erreur, affichons en ondes ici et affichons cette erreur sur cette raide. Hum, et ensuite je vais avoir la forme réelle. Alors rappelez-vous, nous avions les aides de formulaire ici. Donc, à partir des aides de formulaire, le html Non, c'est sur le score, hum, importer, rendre le champ. Et, euh donc, faisons le formulaire qui s'ouvre ici. La méthode est égale à post, et l'action est la, um, Europe pour log in roll est égale à quatre. Donc je mets maintenant ma tête dans Tak mes Sears arrivent jeton, haine et tag. Et maintenant j'ai mes deux champs. Alors rendez le champ pour moi. Utilisez son nom Last est égal au contrôle de formulaire. Et je vais les orteils ont presque la même chose ici. Je vais copier et faire face à ce mot de passe étape stadied. Enfin, nous avons un type de bouton égal à submit et la classe pour, um bootstrap par défaut. Ah, avant et mettez la connexion ici. Parfait. Donc j'ai été en forme qu'ils ne l'ont pas fait. Et même alors, bloc de fin. Cool. Donc c'est notre, um, um, html de journalisation. Et maintenant, nous devons avoir cela implémenté sur les vues de l'auteur. Alors allons-y et faisons-le. Ok, donc ici, on va avoir besoin d'ajouter un formulaire d'auteur, euh, cherchant si longtemps en forme là-dedans. Hum, alors nous allons aussi avoir besoin de ah, au modèle de l'auteur parce que nous allons vérifier à partir de la base de données, l'utilisation de ceux-ci dans le passeport, et je pense que c'est tout. Donc on va utiliser les séances. Donc, une session pour stocker le nom d'utilisateur. C' est ça qui a été correctement enfermé. Donc ici, on va faire, hum, en route, se connecter et ils n'auront pas de méthodes. Donc les méthodes vont être, euh, obtenir et publier, euh, et ensuite se connecter. On va sortir ça et commencer, hum, hum, mettre en place des trucs. Donc, formulaire est égal à formulaire de journalisation. Et, euh oh, et je vais dire qu'il n'y a nulle part pour l'instant. Et, euh, je dois faire valider la réforme, le doc sur la méthode de soumission. Et pour l'instant, je vais juste passer comme si on allait faire des trucs plus tard. Je veux juste vérifier que ça marche, euh, sinon retourner le modèle de rendu, et nous allons utiliser l'auteur Third Logging Extreme El, et nous allons passer le formulaire et l'air. Ok, donc on va vérifier si ça marche, et ensuite on va avoir un truc. Alors laissez-moi vérifier si c'est que je ne pense pas qu'il fonctionne parce que je viens de commencer une nouvelle session ici sur cet enregistrement. Donc je vais faire python, euh, gérer le serveur b y run et je devrais avoir mes affaires ici. Donc c'est à l'administrateur. Parfait. Alors c'est en cours d'exécution. Donc maintenant je vais faire la journalisation et la base est indéfinie. Quoi ? Sa base. Euh, étend le code HTML de base. Voir ici sur les modèles. Base des étendues, html. Oh, je dois mettre des citations. Désolé, citations. Et, euh donc voyons maintenant. Impressionnant. Nous avons donc notre nom et mot de passe habituels. Si on fait le test de Jorge, rien ne se passe. Mais c'est ça marche. Très bien. Voyons la source juste pour s'assurer qu'elle va au bon endroit. Voici notre RSE, si une attaque dure, et puis, ah, ah, la forme va couper les orteils 11, ce qui est correct. Donc ça a l'air bien. Hum, donc maintenant, commençons que je base les opérations dans la vue. Ok, alors commençons à faire les opérations de base de données ici. Et, euh, donc la première chose qu'on va faire, c'est euh, donc la première chose qu'on va faire, c'est chercher un auteur qui a le mot de passe minimum d'utilisation que nous avonssur le formulaire. chercher un auteur qui a le mot de passe minimum d'utilisation que nous avons euh, donc la première chose qu'on va faire, c'est chercher un auteur qui a le mot de passe minimum d'utilisation que nous avonssur le formulaire. Donc, la façon de faire est que nous faisons l'auteur suivant est égal auteur requête sombre que filtre filtre par lequel est fondamentalement une requête. A pour faire une sélection, um où ils sont certaines conditions. Donc je vais faire les conditions déjà utilisées. Son nom est égal à la forme utilisée. Ses données de nom, et le mot de passe est les données de mot de passe de formulaire. Et, hum, je vais limiter ça pour qu'on n'en ait qu'un. Alors je vais vérifier si l'auteur compte. Ce qui signifie que si ce n'est pas zéro droit alors cela signifie qu'il y a un enregistrement sur la base de données avec l'utilisation d'eux égaux en l'utilisant que je transmets sur le formulaire et le mot de passe que je transmets sur le formulaire. Donc, hum, alors j'ajoute des sessions presque une session, n' est-ce pas ? On va utiliser des séances, et on va faire des séances. Ah. Quelle séance ? Attendez une minute. Je suis désolé. Session désactivée. Le nom d'utilisateur, hum, va être le formulaire de données de nom d'utilisateur. Nous allons avoir le nom d'utilisateur disponible dans cette session. Et, euh, on va faire la redirection de retour. Ah, tu es un quatre. Et c'est un, euh étaient le succès de la journalisation, qui est une autre , um, fonction que nous allons avoir pour quand les gens se connectent, euh, correctement et je pense que ça va être temporaire. Je pense que nous allons avoir une autre fonctionnalité ici, mais vous verrez ça dans un peu. Donc je vais juste les envoyer à la réussite de la journalisation. Et, euh et je vais mettre ici retour, euh, chance de l' auteur, alors. Parfait. Donc, euh, comme Revie en train de revoir quoi ? On reste juste. Donc, si le formulaire est validé, nous n'avons pas l'auteur. Euh ah. Enregistrement. Recherchez où le nom d'utilisateur et le passeport correspondent à ces formulaires. Si le compte de l'auteur est correct, alors affichera le, um Eh bien, monsieur, il stockera l'utilisation de la décision humaine et puis retournera Rediriger vers le, um, toe la journalisation fonction de succès, ce qui est juste expliquer, euh, auteur connecté. Et cela devrait être la journalisation du succès aimant le succès. Parfait. Voyons si ça marche. Donc maintenant ce n'est pas en fait, comme frapper la base de données. Hum, il devait y avoir un proche, mais la fonction était la même. Mais maintenant, c'est bon. Si faible gain. Alors faisons-le d'abord. Je n'ai pas vérifié le formulaire. J' ai eu les erreurs appropriées. Ça devrait l'être. Donc c'est un oublier de mettre le nom d'utilisateur. J' ai ce sentiment requis. Donc c'est bien. Si je fais Jorge, disons 123 ce qui est mauvais Ah, mot de passe. Euh, je prends le terrain. Doit être entre 80 étrangers. Donc c'est juste un peu, disons juste Jorge, Jorge, Jorge, voir ce qui se passe. Donc oui, ça ne passe pas. Et, hum, donc maintenant si je fais le bon, qui est le test de Jorge, alors j'arrive à enregistrer le succès et je fais remarquer mon auteur là, donc c'est critique 60. Connexion pour la décorateur requis: Parfait. Nous avons donc notre exploitation forestière. Et maintenant, je veux vous montrer quelque chose qui est Ah, c'est une connaissance ou un modèle assez important. quelque chose qui est Ah, c'est une connaissance ou un modèle assez important quelque chose qui est Ah, c'est une connaissance ou un modèle assez important. C' est en fait ah, jusqu'à présent modèle s'appelle le, um, un décorateur. Et nous l'avons déjà vu avec ce truc, hum, hum, à la route, qui est, euh, je vous ai dit que cette viande au signe signifiait que c'était, hum, modifier la fonction que le suit. Donc, dans ce cas, journalisation a été décorée, sorte que la barre oblique se connecte avec cette méthode tombe dans cette fonction. Donc c'est un peu comme un modificateur si tu veux le voir comme ça. Et l'une des choses cool que nous pouvons faire avec par téléphone est que nous pouvons faire nos propres décorateurs, ce qui est assez génial. Hum, et je pense à vous savez, choses que vous voulez une route potentielle pour avoir une sorte de cadre de recherche, et celle que nous allons voir ici. C' est très commun, ce qui est que je veux m'assurer que les gens sont enfermés avant d'accéder à cette route, et c'est exactement ce que nous allons faire. Nous allons avoir ou créer notre propre décorateur appelé Loging Required et Logan requis signifie que je juste que je viens de mettre un signe à long et requis devant un hors n'importe quelle vue. Et, euh, et il vérifie fondamentalement si l'utilisateur est connecté. Et sinon, alors quelque chose d'autre se passe. Et c'est en quelque sorte géré par le décorateur. Alors voyons comment on peut faire ce décorateur. Et dans ce cas, je pense à faire quelque chose ici dans le, hum dans l'administrateur, qui est un peu comme si un, vous savez, mettre un sont bagage requis ici dans le tour d'administration. Alors, à quoi ça ressemblerait ? Euh, eh bien, fondamentalement serait quelque chose comme ce qui suit que j'aurais en dessous de l'administrateur. Nous voulons avoir cette route d'abord parce que nous voulons être en mesure d'abord la vérification de la fonction pour cette route et ensuite avoir quelque chose comme la journalisation requise. Tu vois, donc c'est une sorte de décorateur que je suis en train d'ajouter que vérifie si la personne n'aime pas déjà, il ne peut pas entrer dans l'annonce mentale et ah, pour être ah, pour être honnête, Je pense que cette vérification du blog est que je vais déménager ici, et je vais le mettre sur l'index pour que, hum si vous appuyez sur le genre, la accueil ou la page d'index de votre blawg et qu'aucun sang n'a été créé, alors il Un peu comme vous y arrive, orteil fait la mise en place au lieu de l'admettre, et fondamentalement, parce que vous pourriez frapper l'administrateur et vous n'avez pas de blawg. Donc si Logan est acquis, où vous inscrivez-vous pour l'aimer ? Ça n'a pas beaucoup de sens. Donc, euh donc, ouais, on va faire ça, demandé Logan. Et voyons comment nous implémentons ce décorateur requis Logan. Alors allons de l'avant et créons notre premier décorateur. Et nous allons ça va être un décorateur d'auteur parce que ça va être nécessaire pour les auteurs. Droit ? Alors passons à un dossier ici, et ça s'appellera décorateurs. On pourrait en avoir plus d'un. Donc nous voulons les mettre tous dans ce dossier. Hum, donc ce modèle, c'est un peu comme s'il y avait beaucoup de choses que nous allons voir ici qui pourraient ne pas avoir beaucoup de sens par jour. Alors ne vous inquiétez pas. Si tu ne comprends pas tout, essaye d'en comprendre l'essentiel. Hum, donc d'abord nous devons importer un à partir d'une bibliothèque appelée outils fonctionnels. Nous allons importer cette fonction appelée wraps, et c'est en fait un décorateur. Um, assez drôle, euh, et nous allons aussi importer de flasque, hum ah, session parce que nous voulons vérifier si l'utilisateur est connecté à la bonne demande. Hum, et tu vas voir pourquoi dans une minute je redirige parce qu'on veut envoyer les gens à la page de connexion s'ils ne sont pas enfermés et les quatre pour trouver la page de connexion. Donc, nous allons définir la journalisation requise. Et c'est le nom du décorateur. Et nous avons deux sous-classes de f, qui est la, um, la fonction. Donc nous allons avoir ce sont des enveloppements critiques si et puis nous allons juste définir cette fonction décorée, qui est Thea véritables viandes et os de celui-ci. Um, et si vous pouvez lui passer des arguments et vous pouvez également passer la clé étaient des arguments. Um, ça que tu vas voir parfois dans le téléphone à tarte. Et je ne crois pas que nous ayons vu que ce genre de modèle similaire ici, mais fondamentalement ce sont des charges dans les œufs, mot clé ah, ou paramètre tout l'art des arguments positionnels. Et dans ces ke ke wrx cuisinier arguments clés de guerre, tous les arguments de mots-clés qui sont passés, hum, et c'est ce modèle est utilisé assez souvent, donc vous devriez être, um devrait se familiariser avec ça. Donc, quand une vérification si la session obtenir, ah, nom d'utilisateur, droit, qui est où nous la session que nous avons définie. Quand les gens se connectent, ce n'est pas le cas. Ça veut dire que la personne n'est pas aimée dans, euh, on va revenir à la redirection de l'Euro 4. Et voici quelque chose que je vais ajouter orteil cette fonction, parce que ce qui se passe est cette journalisation nécessaire. La carrière pourrait être appelée de divers endroits. Et je suis sûr que vous l'avez vu sur des sites Web. Lorsque vous atterrissez dans la page et il vous envoie orteil la page de connexion, Habituellement, il se souvient de quelle page il a été envoyé. Et une fois que vous avez réussi à vous connecter à votre retour envoyé. Donc pour que, euh, sur cette page pour qu'on appelle la page suivante et la façon dont on va faire ça c'est qu' on va voir la demande. Vous êtes moi qui est la demande. Euh ah. L' euro de la page où vous frappez que Logan nécessite un appât. Je vais le pousser comme une fonction. Je veux dire, c'est un paramètre de la fonction de journalisation, donc nous devons changer la fonction de journalisation pour cela. Donc, s'ils ne sont pas aimés, ils seront cento la page de connexion avec ce partenaire de la page suivante. Et, euh et c'est à peu près tout. S' ils sont enfermés, alors vous pouvez aller de l'avant et continuer. Donc on va juste passer. Les arguments et la clé étaient des arguments qui appelaient la fonction en premier lieu Justice. On l'a eu. , Et enfin,on retourne en Corée pour fonctionner ici. Donc maintenant, nous pouvons modifier les vues ici pour le blawg. Et ce que nous allons faire, c'est que nous allons avoir des décorateurs d'auteur importer la journalisation nécessaire , et c'est tout. Hum, donc maintenant si vous essayez de frapper l'administrateur sans être connecté, vous allez aller et être renvoyé à la page de connexion. Mais avant de tester que nous voulons modifier, rappelez-vous comment nous avons dû modifier la page de connexion de ce, Il peut traiter avec l'argument suivant. C' est assez facile. Alors faisons ça. , euh On va dire si, euhet avant ça, et avant ça, j'ai besoin d'importer la demande ici parce que je dois voir la demande. Donc nous allons dire que si la méthode de demande est obtenir signifie que ce n'est pas un post, et demander que nos oeufs ne reçoivent pas la prochaine est ah mis en place ? Ensuite, je vais établir une session. Je vais stocker ça dans un cookie qui s'appelle ensuite, et je vais avoir l' et je vais avoir l'argument que je passe du décorateur à la session suivante ou suivante . argument que je passe du décorateur à la session suivante ou suivante Et enfin, ce que je veux faire ici, c'est , si le compte, si l'autre vient, ce qui veut dire qu'il y a une personne valide Logan, alors je vais vérifier si la prochaine en session, Si j'ai ah, une session appelée ensuite, alors au lieu de les envoyer à la réussite de la journalisation, je vais faire , euh , euh, les envoyer à la prochaine session ah, qui est un euro que je suis passé. Donc, d'abord, je l'ai, et j'ai supprimé session pop et enfin je retourne, rediriger vers ce que vous êtes à la location et puis ici est autre Si je n'ai pas un suivant , alors je vais juste les envoyer à la journalisation succès. Euh, et ils veulent un changement final. Je vais faire la même chose ici. Hum, journalisation est nécessaire parce qu'on ne devrait pas atterrir sur cette page. Réussite de la journalisation, sauf si vous êtes connecté. Correct. , Et pour ça, j'ai besoin d'importer, euh, de l'auteur. Décorateurs, décorateurs, enregistrement d'importation nécessitent. Parfait. Voyons donc si nous avons des erreurs. Hum, on monte à l'antenne ici. Oh, je l'ai. Ce n'est pas le cas. Nous ne retournons pas une fonction. Avec les partisans, Avec les partisans, nous venons de retourner la fonction décorée. Hum, par ma référence, heu, alors gardons ça et voyons si ça marche maintenant. Oh, tu y vas. Donc, la seule chose que nous n'avons pas encore de fonction de déconnexion ou de déconnexion, donc nous allons devoir le faire manuellement et la façon dont je le fais, euh, et vous allez probablement commencer à utiliser cela plus souvent est d'utiliser le um, les outils de développement. Donc, si vous allez à votre google chrome et vous pouvez voir, hum, vous savez, voir les outils de développement juste ici. Je sais que c'est en dehors de la fenêtre, mais vous pouvez appeler, hum, hors commande. Laisse-moi mettre ça. Ah, ici, en dessous. Et donc fondamentalement aller à la ressource est. Et si vous voyez dans les cookies, vous verrez que nous avons la session, hum, là-dedans. Donc, nous devons supprimer ce cookie pour qu'il semble que nous regardions et nous allons mettre en œuvre l'avis de surveillance par la suite, donc j'ai supprimé cela. Donc maintenant, si je recharge cette page, vous verrez que maintenant c'est ça me conduit à la page de connexion avec la prochaine, euh genre, genre, viable, rempli avec l'administrateur. Mais j'aime vraiment, ah, ah, comme si nous étions des personnages. Et c'est comme, vous êtes tous inclus, fondamentalement, pour que le tippy forex rende cela dans l'euro, il remplace la semi-deux-points par la barre oblique, euh, avec quelques caractères hexi décimaux. Mais dans tous les cas, vous voyez que comment ça marche, je ne peux pas accéder à l'outil d'administration, hum , par lui-même, sans être connecté. Donc maintenant, si je me connecte ici Jorge test, tu verras que je suis renvoyé à l'annonce mentale, et je suis aimée dans, euh, ce qui est plutôt cool. Et si on voit le, euh, le tabouret du développeur, on voit les cookies. Vous verrez que nous avons notre séance là-dedans, donc ça marche parfaitement bien. Euh, la même chose si on regarde dehors, essayons de se déconnecter par le cookie Linda. Et essayons d'aller à notre succès forestier, qui est aussi il a été décoré là-bas. La même chose ici. Tu vois, la prochaine la prochaine. Tu es toujours rempli et on ne peut pas y arriver. Mais si nous faisons Jorge test, alors nous sommes envoyés à la chance et le succès et le cookie mis correctement. Donc c'est la chose très utile. Um, il faut utiliser des décorateurs pour Logan. Et, euh, tu sais, on va continuer à regarder d'autres trucs cool ensuite 61. Introduction aux migrations: Parfait. Donc, euh, avant que j'oublie et passe au prochain sujet Ah, quelque chose que je voulais orteil adhérer que nous n'avons pas ajouté dans la moins dernière leçon waas le message d'erreur. Donc, si je vais ici, je veux être en mesure de dire si l'auteur compte waas pas zéro. Je veux dire, qu'est-ce qui n'est pas plus que PDG ? Alors, il en était un à l'époque. Ce que je veux faire, c'est que je veux afficher un message d'erreur dans le modèle. Donc je vais juste mettre ça comme air est incorrect. Uh, utilisez son nom et son mot de passe. Donc, et c'est ce qui est typique. Vous ne voulez pas, genre, donner trop d'informations aux pirates. , C' est, vous savez, que vous savez, le nom d'utilisateur a été trouvé ou introuvable. Vous devriez juste, comme, comme, jeter des demandes de renseignements, nom et mot de passe afin qu'ils ne sachent pas exactement où est l'erreur. Et si c'est un utilisateur légitime, ils savent qu'ils ont fait une erreur. si c'est un utilisateur légitime, Donc, si je vais ici à la page de connexion, laissez-moi essayer d'entrer un faux en utilisant un passeport. Je vais utiliser Jorge Jorge à nouveau. Je sais. Je comprends ça. Ah, ce message d'erreur là-dedans. Donc c'est plutôt bon. Alors c'est tout. Maintenant, nous allons passer à, hum, un sujet très important appelé Migrations et Migrations est fondamentalement la hum, un sujet très important appelé Migrations et Migrations est fondamentalement lafaçon dont nous gérons, euh, les changements dans la base de données. façon dont nous gérons, euh, Donc normalement on ne sait jamais quand on se développe, comme où les champs dont on aura besoin pour la base de données et on va devoir, comme, gros, tu vas essayer ? Tu ne l'es pas. Bien sûr, tu vas devoir faire des changements. Base de données. Le problème est qu'une fois que vous êtes déployé et que vous exécutez le code dans différentes machines, comment aimez-vous garder une trace de ces changements ? Eh bien, vous pourriez faire comme un fichier texte et annoter ou, vous savez, j'ai ajouté une nouvelle colonne pour l'utilisateur, et j'ai ajouté un, um un autre champ blawg tags froids et des choses comme ça. Donc, la façon dont vous traitez ça, hum, dans ah, dans une plus grande échelle de problème à l'extérieur dans, comme mettre en œuvre quelque chose qui suit ces changements pour vous et en chair, nous avons un très bon paquet appelé flats migrer. Et c'est là qu'on va utiliser ici. Alors commençons par ça. Nous devons donc ajouter à nos exigences. Txt Ce nouveau paquet que j'ai appelé une fiole migrer. Et bien sûr, cela nécessite que vous les gens installent ceci. Donc on va faire ça. Alors contrôlons, Voyez, et assurez-vous que, euh, vous êtes dans le bon dossier et que vous avez l'environnement virtuel tourner avant de faire un décrochage. Souvenez-vous de ça. Donc, laissez-moi maximiser ça et, um quand il effacera l'écran et qu'on décroche nos besoins. Donc, il vérifie tous les fichiers d'exigence et puis il enfin un flacon installé migrer parfait. Ok, on va gérer migrer via la commande migrate. Nous devons donc ajouter cela au e dans le b y en dehors de l'obligation. Alors, allons-y. Et ce qu'on va faire, c'est qu'on va ajouter de ah flask le txt dot migrate import migrant . Et maintenant je vais ajouter une section de mon super um, ici, et je vais avoir un migrant optique égal à la fonction de migration, hum, Et je lui ai passé l'AP et la DB. Donc maintenant mon grand peut Non, hum, quelle est l'application et ce que la base de données iss, euh et il y a un autre changement que nous devons faire et me gérer. Pourquoi ? Parce que nous voulons être capables de le faire. Comme je l'ai dit, coulez-le à partir de là. Donc ce que je vais faire ici, c'est que je dois aussi importer, hum, de flasque. Txt. Ma grande importation, ma grande commande. Et donc, sous manager, je vais ajouter cette nouvelle commande appelée, euh, on a appelé le D B, puis migrer le commentaire et laisser tout le reste pareil. Donc nous allons sur leur ici, gérer. Oh, gérant. Désolé, gérant. Là, vous. Donc maintenant, nous allons dire de commencer à faire des migrations. Ok, donc le cas d'utilisation que nous allons avoir ici ou le besoin de migration au départ, ce sera le suivant. Nous voulons voir les mots de passe du magasin de scie plus en toute sécurité. Hum, donc à la place, hors Souviens-toi comment on a ici le test de mot de passe là-dedans comme si tu pouvais le voir . Et ce qui se passe, c'est quand les pirates ont accès à votre serveur de base de données, euh bien sûr, vous savez que vous pouvez les protéger très bien. Et comme vous avez vu les gros titres, c'est ah, c'est un peu comme cette thèse. Les pirates sont très, hum , insistants, et ils passent à travers beaucoup de choses comme des serveurs sécurisés, des pare-feu et tout ça, et ils peuvent entrer dans la base de données. Donc, ce que nous voulons faire est que nous voulons crypter ce mot de passe en utilisant une sorte modèle de cryptage afin que vous, même si ces pirates ont accès à votre base de données, il ne peut pas juste vous voir le passeport dans leur genre, simple texte, ce texte brut d'or comme vous pouvez réellement le lire sur la base de données. Au lieu de cela, nous voulons utiliser une sorte de cryptage comme de sorte que si le pirate n'a pas accès à votre sel de chiffrement, ce qui est un peu comme la chaîne aléatoire que nous avons utilisée pour le chiffrer, il peut être difficile pour eux de le vérifier ou de le décoder. Alors faisons du zoo pour ça. Nous allons avoir besoin de, euh, fondamentalement clair que les tables, parce que à partir de maintenant, le système de migration va s'occuper de, comme créer et ah, initialiser les tables . Donc pour ça, nous allons utiliser le, euh, la coquille python et utiliser ce contournement de la suite, Siegel Alchemy. Voyons comment on fait ça. Alors allons de l'avant et appelons la coquille par téléphone gérée B y shell. Et nous allons à partir de flask glug import DB, qui est le gestionnaire de base de données, et nous allons émettre la boule de goutte DB tombante. Et soyez prudent avec ça. Cela, genre, efface vraiment toutes les tables pour toujours. n'y a pas d'indu ici, mais on veut le faire, alors on va y aller et le faire. Donc maintenant, si je vais dans les tables d'exposition ici, je n'ai pas de tables sur les idées qui à partir de maintenant sur le migrant va être capable de gérer ça. Alors sortons. Et, euh Alors, comment faire le processus de migration ? Eh bien, la toute première fois que vous l'exécutez après avoir laissé tomber vos tables et j'espère que vous le ferez la prochaine fois depuis le début, hum, problème. Faites le python suivant gérer être pourquoi, ah db dedans. Donc, il y a une commande d'eux migrer. Um ah, peu comme un ensemble d'outils qui vous permet de, hum dans un dossier Migrations à votre application. Et à partir de ce moment, toutes les modifications seront suivies à partir de ce dossier. Voyons ce qui se passe ici. Parfait Donc maintenant, si vous vérifiez ici, vous verrez qu'il y a quelques migrations. Ah, dossier. C' est un nouveau dossier. Et ce dossier va être que vous pouvez vous pouvez vérifier à travers, obtenir donc il est en fait recommandé que vous vérifiez à travers get Parce que alors vous pouvez essentiellement voir les changements au fil du temps hors de votre base de données. Et ici, il est en disant qu'un chèque olympique I et moi avant de procéder. Donc je vais vérifier ça, et c'est essentiellement, euh, une liste comme des paramètres. , D' habitude,ce sont des bons. Hum, et donc ici, on va essayer faire le genre initial comme un instantané. Donc, la façon dont vous le faites est sur ceci est toujours là où vous le faites chaque fois que cela change à un rythme . Votre premier est-ce que python me gère ? Pourquoi, bébé migre. Et puis vous gérez python Maestri. Pourquoi db euh, jusqu'à Super. Donc mon grand et opérer, ces deux sont les commentaires. Donc, nous allons toujours le 1er 1 par tonnerre gérer moi. Pourquoi db mon grand Et ça va créer une seconde ici, un fichier avec une sorte de hachage et qui se casse comme le jeu. Alors voyons ici. Et comme vous pouvez le voir ici, vous verrez que c'est un peu comme une révision de ce qui se passe quand, Ah, quand ça. C' est ce premier genre ah de fichiers où ont été créés Donc vous verrez qu'il y a deux sections ici. Permettez-moi de mettre cette plus grande mise à niveau, ce qui signifie quelle est la voie vers l'avant et la rétrogradation, qui est Quel est le chemin derrière ? Parce que vous pouvez aussi faire la gestion des bisons. Pourquoi la rétrogradation de DB et que se passe-t-il ? C' est ça. Cela changera la base de données à l'état précédent. Donc c'est une chose assez puissante. Donc, mais pour tous les grands, vous verrez que c'est essentiellement dire pour la prochaine session. Il suffit de créer l'auteur de la table avec le nom complet i. D. D.dans le puzzle et de voir qu'il garde toutes les choses que nous avions sur notre modèle, avec la contrainte primaire et la contrainte unique. Tout ça et ça va aussi créer la table de blocs. Donc c'est plutôt joli, plutôt cool. Hum, et maintenant, euh, qu' est-ce qui se passe ici ? On a ces écuries ici ? Voyons voir. Non, nous n'avons qu'un persan olympique. C' est très intéressant. Et ce que fait cette version olympique. Est-ce une sorte de pistes sur ça sur l'élévation elle-même ? Ah, quelle est la version actuelle et ce que les jeux avant, euh, euh, je pense que c'est juste une version coréenne. J' ai peut-être tort, mais je pense que c'est juste une version coréenne pour qu'elle stocke quelque part. J' ai peut-être tort, Pas sur le système de fichiers. Qu' est-ce que la version actuelle est afin qu'il puisse suivre et rechercher sur le système de fichiers à travers ces versions. Dans quel est le précédent ? C' est quoi la prochaine ? Um, c'est plutôt cool. Mais comme vous pouvez le voir, il n'a pas créé la table. - Merde. Alors, comment les créer avec un python ? Me gérer ? Pourquoi ? Mise à niveau DB ? Et rappelez-vous, c'est toujours ces deux choses. Mon grand, c'est que tu fais le changement de modèles. Euh, tu es prêt à y aller. Vous migrez pour qu'il génère ceci. Cette version, ce fichier. Une fois ce fichier, vous le vérifiez. Ça a l'air bien. Hum, alors tu le fais par téléphone minutes. Nous voulons être un grand et c'est là que les changements réels de la base de données se produisent. Alors faisons ça. Parfait. Donc, il dit qu'il a exécuté la mise à niveau. Rien ne s'est passé, mais maintenant, si on voit à quoi ressemble une personne limerick. Oui, c'est trois B C C c c'est le même dossier ici. Donc, c'est la version actuelle sur Si je montre les tables, vous verrez que maintenant nous avons auteur et blogueur, tout comme nous l'aurions créé via db créer tous les trucs si cool. Et, euh, nous allons, ah, peu comme travailler avec ça pour créer ce genre de mots de passe plus sécurisés pour nos utilisateurs. 62. Plus de mot de passe: OK pour notre cryptage. On va utiliser un paquet, hum, appelé par la crypte B. Et donc on va ajouter ça au, um donc leur txt d'exigence sauve ce fichier. Et là, on va en python. Pas par téléphone. Désolé, Pip. Installez nos exigences. Txt. Alors maintenant, c'est installer des gens. Décryptage de tuyau. Tellement parfait. Alors maintenant, voyons comment nous devons changer les modèles et, euh, et ensuite aussi le processus d'enregistrement sur le ou le sang mis en place pour, um, pour rendre ça plus sûr. Donc la première chose que nous allons deux façons d'aller à Blawg vues et voir comment nous faisons ça. On va importer par crypte. Tiens, sois crypte. Désolé d'être crypte. Et, euh, donc en préparation, ce qu'on veut faire c'est qu'on va devoir faire ce qui suit d'abord, on doit générer des agressions, et, euh, ce sel est un peu comme un aléatoire, um, sorte de hachage qui est utilisé pour générer le nouveau mot de passe. Et nous allons stocker le mot de passe de hachage nous la grosse crypte Hash. Peter B, qui est une fonction que nous créons, a hors des données de mot de passe que nous avons reçues du formulaire et nous avons inclus avec ce sel que nous venons de générer. Hum, donc maintenant, au lieu des données de passeport étranger, nous allons stocker ce mot de passe haché. Parfait. Hum, la seule chose est, genre , euh, nous voulons changer le, um nous voulons changer la longueur du mot de passe pour les utilisateurs parce qu'il génère toujours un 60 caractères mot de passe. Alors allons-y et faisons-le. On va voir les mannequins d'auteur, et je vais faire la télé de la colonne P D B ah, la ficelle. Et au lieu de ça, on va en faire 60. Je sais que ce n'est pas un énorme changement. Je veux juste que vous aimiez le rythme des orteils. Euh, un peu comme comment changer les choses sur la base de données et ensuite faire les immigrations. Bien que je dirai, hum, si vous avez 20 caractères supplémentaires là-dedans à long terme, vous utiliseriez beaucoup plus de stockage, donc c'est certainement quelque chose à surveiller. Mais avant de faire la migration, il y a quelque chose que j'aime vérifier en ligne, et il semble que c'est un bug dedans ? Euh, la bibliothèque Migrate. Bien que les gens disent qu'il pourrait être que l'auteur voulait s'assurer que les gens voulaient faire cette incarnation, Dans tous les cas, euh, vous devez aller à votre, um e M v p Y fichier et faire le changement suivant dans lequel il dit contexte. Voyons voir le contexte configurer ici. Um, ça dit connexion. Il va se connecter. Cible faite de données. Il y en a un que nous devons ajouter, qui est comparé tripe type comparé égal à la vérité. Et la raison en est que si vous n'ajoutez pas ceci, um, um, ce paramètre sur le E M v b y change aux colonnes elles-mêmes, comme un changement de type ou un changement de longueur comme nous l'avons fait sur les modèles auteurs ici ne sont pas vont être ramassés. Donc c'est quelque chose que je préférerais pas tout. Je veux dire, je ne voudrais pas avoir ça tout le temps. Donc, euh, assurez-vous que vous faites ce changement sur votre ah, vous allez vers les migrations E M V P. Y. Et autour de la ligne 75, vous verrez un chiffre de point com contextuel à ce type comparé égal à vrai Mais dans tous les cas, cela devrait prendre soin de la vérification pour le changement de lentille. Alors maintenant, euh, allons de l'avant et faisons la migration. Alors, euh, c'est là. Donc par certains, gérer moi Pourquoi ? Db um migrer et de voir ce qui se passe. Parfait. Donc maintenant nous avons un nouveau fichier et vous et je crois que c'est le, um celui avec un d a v e n et voyons à quoi ça ressemble. Donc maintenant, il est en train de dire que le, um que le mot de passe va maintenant être 60 au lieu de l'aide. Et, euh, c'est quelque chose que je remarque aussi que ça ressemble à un insecte. C' est vérifier, c' est-à-dire, l'auteur est qu'il a besoin de changer de lingots à minuscules et et je ne sais pas pourquoi, parce que nous n'avons pas changé. Le champ est auteur. Ça a toujours été un lingot. Donc c'est quelque chose qui, euh , je veux dire , c'est non , non, ce n'est une grosse affaire. Hum, mais, euh et il semble que si vous regardez, ils déclassent, ça dit que ça change de minuscule et je veux dire de lingots deux minuscules. Et donc c'est en gros dire que l'existence, le diabète est minuscule et qu'il va faire des lingots d'orteils. Je ne suis pas sûr de pouvoir le laisser. Ah dit, ah corps pour toi. Je veux dire, vous êtes le bienvenu pour éditer ce fichier, mais en tout cas, nous avons notre migration. Um, version. Tout a l'air bien. Faisons la migration. Donc par certains me gérer. Pourquoi, db euh, mise à niveau. Et cela devrait changer la base de données. Parfait. Comme on n'a rien ici, onne verra aucun changement, maisça ressemble à tout. Comme on n'a rien ici, on ne verra aucun changement, mais , Ça marche. Très bien. Donc, c'est bien. Alors essayons ça. Uhm, je vais faire que Python me gère. Pourquoi ? Exécutez le serveur Et nous devrions avoir notre serveur opérationnel. Donc maintenant, si je vais à la disons ce cookie pour que nous soyons verrouillés et allons à la page d'accueil, nous devrions être redirigés pour mettre en place. Et pourtant, ça a très bien fonctionné. Alors créons notre nom blawg. Je vais l'appeler par un peu de sang. Donc mon nom complet, email, nom d'utilisateur et mot de passe vont être, euh, Jorge pour que ça reste simple. Ah, et ensuite je vais créer du sang. Et maintenant, je suis envoyé à la page de connexion parce que je ne suis pas connecté, ce qui est logique. Mais je veux voir si un tout comme, hum, hum, mettre en place des choses comme avec le mot de passe de hachage a fonctionné. Allons donc à notre suite. Et au cas où, euh, vous rattrapez. Tu n'as pas ça ouvert que je sors ici. Tu fais ma suite. Hum, CTL, euh et puis pour voir un mensonge. Alors utilisez blawg. Désolé, utilisez Balog, puis montrez les tables pour voir quelles tables nous avons. Il y a l'auteur donc maintenant nous devrions faire sélectionner l'étoile de l'auteur et parfait. Tu vois, maintenant j'ai le passeport n'est pas, tu sais, Jorge, qui est ce que j'ai entré. Mais c'est en fait comme ça très long, bizarre un hachage, ce qui le rend beaucoup plus sécurisé. Laisse-moi mettre ça plus grand. Donc c'est que c'est beaucoup mieux. Et si je me laisse vérifier le bloc pour voir s'il a été créé correctement et pourtant mon bloc python, c'est ce que j'ai entré. Donc ça marche parfaitement bien. Il y a encore une chose que nous devons faire avant. Ah, et dans ce Ah, cette leçon et c'est que nous n'avons pas les vérifications pour que la page de connexion utilise être crypte. Alors, changeons ça. Pour que ça le fasse. Donc ici, hum je vais aller au sommet et importer le déchiffrement, et ensuite sur le je vais faire le changement suivant. Je ne vais pas filtrer par mot de passe parce que le mot de passe entré par l'utilisateur ne sera pas le même que celui qui est stocké dans la base de données, parce que c'est crypter. Donc ce que je fais ici, c'est que je vais créer sur une requête qui me donne des auteurs qui ont le nom d'utilisateur, euh, la même chose. Et puis je vais vérifier s'il y a un compte. Je veux dire, il y a un utilisateur qui a ce nom d'utilisateur. Ensuite, je veux faire le chèque pour le passeport. Donc, ici va faire si les auteurs comptent est vrai, il y a plus qu'il n'y en a plus que zéro. Ensuite, je vais dire que l'auteur est le 1er 1 de ces auteurs hors zéro parce que cela renvoie notre liste des auteurs, même si c'est un seul. Et puis je vais faire ce qui suit que je dois faire, hum ce regard, sera indenté. Donc, il sélectionne tout ce qui impressionné. Onglet sur. Ensuite, je vais à ce qui suit à quoi je suis allé. Très bien, euh, je vais le faire si être crypte. Je pensais que Josh pw hors des données de passeport, Um, et puis aussi mot de passe, qui est le mot de passe que je reçois, qui est ce hachage bizarre qui doit être le même que le mot de passe de l'auteur. Et il y a genre, tu n'as pas à comprendre tout ça, tu n'as pas à comprendre tout ça, mais c'est comme si tu vérifiais que c'était le même passeport. Vous passez le mot de passe que vous avez obtenu du formulaire sur un crypté en utilisant le sel off, le off le mot de passe, um, que vous avez sur la base de données. Et si cela renvoie le même hachage, demandé à ce passeport auteur, cela signifie que c'est le même mot de passe, donc c'est un peu compliqué, mais c'est comme ça qu'il fonctionne, et vous vous habituerez à ce motif. Donc, Donc, si c'est le cas, alors la session est le nom, dit-il au nom d'utilisateur. S' il y a un suivant, alors obtenez le suivant de la session. Le petit cookie puis retourné Reducto. Ensuite, tous les sages sont revenus au succès de l'exploitation forestière, qui est l'autre qui semble que vous atterrit. Si la journalisation est correcte, Um, Um, si cela n'a pas fonctionné, toute la chose la plus ancienne, comme le mot de passe West incorrect ou il n'y avait pas d'autre compte. Je vais juste dire qu'il y a une enquête d'erreur concernant un mot de passe. Hum, c'est tout. Donc, euh, donc , en fait , ça euh, donc, en fait, ça va continuer ici, et il n'exécutera pas son autre. va continuer ici, Donc, je suis probablement besoin de faire et un autre identique à l'intérieur. C' est le solaire est juste. Euh, tu vois White. Pourquoi c'est ça ? Parce que si le mot de passe est incorrect Mais il y avait un utilisateur trouvé avec ce nom d'utilisateur, alors il fait cela d'autre, mais sinon il tombe juste ici sans que Arab soit défini. Essayons ça et voyons si ça marche. Voyons donc si j'ai des erreurs. Hum, ça a l'air bien. Laisse-moi essayer de me connecter, donc je vais me tromper de journalisation Jorge. 12345 Il est dit en Corée, utilisant et mot de passe. Tu vois, c'est parfait. Ça veut dire qu'il y a eu une vérification sur la base de données et ça n'a pas fonctionné. Donc je vais faire Jorge Jorge, qui est le bon. Et oui, on a l'orteil. L' administrateur, hum, il dit que Blue a créé. Ceci est un message flash du bloc. Vraiment ? On l'a fait avant parce qu'il n'avait jamais vraiment atterri ici. Mais ça a l'air bien. Et tout fonctionne parfaitement bien. Le moins nous changeons que je voulais est sur le modèle. Je veux avoir, hum, une fonction plus longue. Laisse-moi aller à l'administrateur, et je vais ajouter ce qui suit leur hum, donc c'est, hum juste un paragraphe étaient maintenant quelque chose de rapide. Bienvenue. Hum, et ensuite je vais imprimer la session. Um, tu peux le faire avec son nom, ou tu peux faire, hum, comme ça. C' est pareil, mais j'aime bien le chien. Um, j'aime un peu comme la notation ici, et puis je vais faire un h ref égal à votre l pour, euh, euh, déconnecter et je vais implémenter une fonction plus longue parce que je ne veux pas continuer, euh, en indiquant les cookies manuellement. Alors ? Voyons donc cette connexion. Donc, si je me rafraîchis ici, je n'ai pas encore une fonction plus longue, alors nous allons dio, um, um, vues d' auteur. Et puis c'est pour, hum, se déconnecter ainsi. Ah, barre oblique de route Déconnectez-vous et je vais découvrir Look out, nous la, hum, session pop off nom d'utilisateur et je reviendrai juste. Rediriger deux euros pour l'indice. Ok, voyons que ça a marché. Euh, alors allons voir l'administrateur. Parfait. Nous accueillerons son hit. Regarde dehors, regarde dehors ! Impressionnant. Si je vais à, disons administrateur, on me demande de me connecter. Oui, Jorge, Jorge et moi sommes à nouveau à la recherche. Donc beaucoup de choses que nous couvrons, nous avons un mot de passe plus sécurisé. L' exploitation forestière a fonctionné, et Low God fonctionne aussi maintenant, donc nous sommes prêts à passer à la leçon suivante. 63. Vérification is_author: OK quand je voulais entendre son maintenant est fondamentalement je suis en train de vérifier. Si le si l'auteur est, hum ah, ce qui pourrait l'appeler l'auteur existe. Et puis je les renvoyais à la page d'administration. Mais cependant, je veux vérifier l' auteur de l'Est. Mais cependant, je veux vérifier l' auteur de Alors rappelez-vous, nous avons ce drapeau de l'Est sur le, um sur le modèle USAir sur le modèle auteur mange essentiellement. L' auteur est un. L' idée ici était que certaines personnes qui sont soulevées son ne peuvent que commenter, et seulement celui qui sont auteurs. Je soit ceux qui peuvent créer des messages devraient avoir. C' est un genre d'auteur allumé. Donc, hum, si son auteur est syrah ou faux, alors cela signifie qu'ils ne peuvent pas aller à l'ATM, et ils peuvent le faire Ils peuvent commenter. Vous devez vous inscrire pour pouvoir commenter, mais vous ne pouvez pas créer de publications bloquées. Donc, je veux commencer, genre, travailler un peu vers ça. , L' autre chose que je veux faire,c'est ça, euh, sur le blogueur. Quand j'aurai les utilisateurs, je veux, euh, rendre euh, ça un peu mieux au lieu d'avoir cette liste d'utilisateurs ? Euh, ce qui est Ah, je voulais dire sur la fonction de journalisation arrive ces auteurs et puis si les auteurs comptent zéro auteurs , ça semble un peu bizarre. Permettez-moi donc de tenir compte de cela et de le rendre un peu meilleur. Donc ici, je vais juste obtenir le premier auteur en faisant l'auteur suivant est égal auteur, requête filtre par, hum, hum, utiliser le nom est les données de nom et puis juste, hum, change en premier. Et d'abord, c'est une commande qu'il est disponible sur la requête. Euh, objet. Donc, il retourne juste le premier auteur, et puis je vais juste dire, si l'auteur puis faire la saison suivante, il semble que beaucoup mieux. Comme si c'était ah, on ne compte pas. Et puis faire les auteurs hors zéro, il semble beaucoup mieux. Euh, et ensuite faire affaire. Le truc c'est la session. Et quand je veux, je veux commencer. Je veux commencer à stocker dans une session. Le drapeau de l'auteur de l'Est. D' accord. Et c'est l'auteur de ces auteurs. Donc, si ce drapeau, si cette valeur du modèle est fausse, alors je vais stocker les chutes pour la session est l'auteur. Et si c'est vrai, alors je vais stocker True. Donc maintenant ce que je veux faire, c'est que je vais, hum, vérifier pour ce seul administrateur blawg. Et la façon dont je vais le faire est la suivante. Hum, je dois ajouter, hum, séance ici et à bord. C' est fondamentalement un peu comme un, um, un utilitaire pour pouvoir retourner comme des retours http non normaux. Et nous pouvons retourner quelque chose comme quatre ou trois, qui est là pour être code pour non autorisé. Donc, nous verrons comment nous implémentons cela. Hum, donc ici, je vais le faire sur l'index. Euh, non, en fait, sur l'administrateur. Directement sur l'administrateur que je vais vérifier, Um, si le chien de session obtient qu'il est l'auteur, alors renvoyez le code HTML admin Sinon, retournez sur l'abandon de quatre ou trois. Alors vérifions ça. Donc je vais regarder dehors et ensuite je vais me connecter à nouveau. Je vais essayer d'aller voir l'administrateur, et ensuite je veux faire Jorge Jorge Logan. Donc, pourtant, ça marche. Ah, ça veut dire qu'il a vérifié mon auteur de l'Est, hum , en indiquant ici. Et, euh, et pour que ce soit vrai. Donc, je suis capable d'accéder à Donc l'annonce mentale, mais comment tester , si un autre est enregistré, mais il n'y a pas de drapeau d'auteur. On pourrait utiliser la fonction de registre qu'on a déjà écrite. Euh, mais, euh, ça se fixe essentiellement. Je crois qu'il est l'auteur de vrai, euh, automatiquement. Hum, donc c'est là, juste dans les mannequins. Donc, son autorité a dit tomber par la faute. Aussi, je suppose que c'est ça fait ça marcherait. Hum, si on utilise le registre. Oh, mais on ne fait rien ouais, on ne fait rien avec le mannequin ici, donc oui. Donc ce qu'on veut faire, c'est que je veux mettre en place temporairement ma, um ma glace de mon administrateur. Pas moi. Mon auteur est drapeau à faux. Et vérifiez que ça ne marche pas et obtenez les quatre ou trois. Donc je vais le faire à travers la coquille. Alors je vais passer pour me gérer. Pourquoi Shell ? Et puis je vais dire de l'offre d'importation de modèles d'auteur, et puis nous avons l'auteur égal auteur qui, hum voir, euh, requête pas filtrer par, et je veux utiliser, euh, utiliser son nom est égal à Jorge en premier. C' est quand j'ai l'auteur. Il est là. Donc si je vérifie que l'auteur est l'auteur ici, je verrai que c'est vrai, non ? Donc ce que je dois faire, c'est que ça soit faux. Donc l'auteur est tombe, et puis je dois le commettre. Donc j'ai juste besoin de faire, euh, l'auteur être bizarre. Eh bien, j'ai besoin d'importer à partir de la dernière importation de glogg BB. Donc je ne pense pas avoir besoin de le faire. Vous n'avez pas besoin de faire de publicité à la télé. J' ai juste besoin de db session commit pour que les changements soient stockés. Alors venez. Et si je vérifie l'auteur maintenant, oui, je vois que c'est zéro maintenant. Il a vu trois Syrie. Essayons de regarder dehors et j'essaierai de me lever. J' ai besoin de lancer l'application. Attends. Donc, serveur de salle géré par python Parfait. Laissez-moi essayer de sortir, les hommes regardent dehors et je vais faire Jorge Jorge, qui est le bon mot de passe, et ils sont interdits. Parfait. Donc c'est vérifier que l'auteur de l'Est Ah, drapeau est faux. Donc ce n'est pas ça qui ne va pas voler. Vous n'êtes pas autorisé à aller voir l'administrateur du Blood Post. Mais vous êtes, vous seriez en mesure de faire des commentaires sur les messages. Alors laissez-moi changer cela très rapidement pour que nous ayons à nouveau cette fonctionnalité. Donc, de flasque Log Import, Phoebe et puis de modèles d'auteur offre d'importation. Et laissez-moi voir si j'ai ça ici. Donc l'auteur équivaut à notre requête. Pas en premier. Ça me donne le premier auteur. Donc c'est une autre façon de le faire. Et puis je vais faire auteur, l'auteur Est est égal à vrai. Et puis la comète de la session Devi. Laisse-moi vérifier si j'ai ce drapeau allumé Perfect. Et je vais voir l'administrateur. J' ai besoin de tromper l'application, et je vais aller chercher Jorge, Jorge. Et je suis contente de me soutenir à nouveau. Donc ça marche. Parfait. Si je 64. Le modèle de publication et catégorie: Parfait. Alors commençons. Ah, travailler sur une fonctionnalité de post bloc. Parce que c'est un bloc, et qu'on n'a rien fait vraiment ? Orteil. Ah, bornes de sang , ce qui est la desbornes de sang, ce qui est lachose centrale que vous voulez accomplir ici. Mais vous savez, vous, monsieur, choses d' identité prennent toujours beaucoup de temps. Et, euh, mais nous y voilà. Nous sommes prêts à commencer à créer cette fonctionnalité de post block. Donc la première chose que nous allons faire est de créer un post et une catégorie sur le fichier des modèles de blocs . Alors commençons à faire ça. Donc, nous créons une nouvelle classe appelée Post, qui est une instance, hors de la classe morale tee me. Et donc on va avoir un I D. Et c'est un stagiaire. Bien sûr. La clé primaire est égale à true. C' est notre primaire, euh, je le sens. Alors on va avoir un blawg donc on veut avoir une relation au sein du Blawg et du Post. Donc pour ça, on va faire une clé étrangère comme on l'a fait tout à l'heure avec le sang et l'auteur. Et ça va être n'importe quel professeur. Et c'est une clé de plancher pour le blawg I d. Ensuite, nous avons l'auteur, i d et c'est aussi une clé étrangère. Donc ça veut dire qu'on va devoir, euh, pour ici. Ça va être une autre colonne DB. Ah, c'est aussi un entier. Et dans ce cas, la clé étrangère est l'idée de l'auteur. , Maintenant,on a le titre et le titre va être une corde de 80 médecins et on a leur corps, et ça va être, hum, un message télé. Nous n'avons pas vu ce type de texte plus tôt à propos du Texas. peu comme si c'était une grosse partie de nos personnages et du Texas parfait pour le corps du sang . On va avoir quelque chose qu'on appelle une limace. La limace dans, euh , sur Internet, il est fondamentalement tout, euh, genre d'identifiant pour la fille hors de cet article et vous pouvez voir , affaiblir, voir une limace. Dans ce cas, la limace serait 20 étaient slash blawg et dans slash 2015 10 20 suite Alchemy. Tout ce qui est, c'est une limace. Donc, les slogans fondamentalement, cela implique généralement d'avoir le titre hors. Le de l'article fait un peu comme vous êtes tous compatibles pour voir comment les tirets remplacent les espaces ici, et c'est toutes les majuscules inférieures. Donc, il y a en fait une bibliothèque qui nous permet de le faire, et nous allons jeter un oeil à cela. Mais pour l'instant, c' est juste la colonne A TV. Ah, off string off 256. Et nous allons rendre ça, euh que c'est unique parce que pas deux sondages différents ne devraient avoir à dire des peintures murales qui sens, nous allons faire un état publié. Hum, donc je ne sais pas quand ça a été publié et pour ça, on va utiliser un autre type que nous avons une nouvelle qui est le jour, et ils me disent que c'est juste une chronique de ma suite ou pas un Mexique, mais un, euh base de données l'a appelé qui stocke, les informations de date et d'heure. Et enfin, on va avoir un drapeau de vie. J' utilise toujours ça, hum, quand c'est un peu comme du contenu lié, parce que d'habitude vous ne supprimez pas, hum, hum, les enregistrements de la base de données. Ce n'est pas une bonne pratique de supprimer des choses parce que les relations deviennent en dernier sous perdre leur histoire. Donc, si vous voulez avoir un post le plomb au lieu de le diriger à partir de la base de données, nous allons juste définir la faute de l'orteil de colonne de vie. Et ça devrait, genre, filtrer toutes les colonnes ? Y a-t-il un post que nous ne voulons pas voir ? Donc, euh, nous allons aussi avoir une catégorie, donc c'est que le post peut avoir une sorte de, comme une catégorie blawg. Et, euh, donc on va avoir ça. Donc, c'est une colonne qui est un entier DB. Et on va en faire une clé étrangère d'une autre table qu'on n'a pas encore créée. Mettons ça ici la catégorie que je suis, euh,et, hum, définissons l'dedans pour ça. Mettons ça ici la catégorie que je suis, euh, et, hum, Hum, donc on va avoir le titre d'auteur blawg, catégorie corps. Tout cela est nécessaire. Et puis nous allons avoir, hum, aucun Etat de limace nécessaire publié et vivre la vie. Ça va toujours être vrai. Donc ici, nous avons auto blawg I d égal blawg. Et remarquez comment je passe le blawg. Je pensais y être parce que je vais avoir passé le vrai, euh, objet de sang, pas le i d , ce qui est une différence subtile. Comme si je faisais blawg um blogueur d comme ça, alors je passerais juste le bloc i d parce que je m'attends à passer le nombre, le numéro de ce bloc. Mais on ne devrait pas faire ça, parce que le sang peut changer. Et nous ne voulons pas être, comme, comme, coder dur ou regarder vers le haut ce que je d. Donc, au lieu de cela, je m'attends à ce que ce soit passé le blogueur et l'auteur comme objets. Et je suis en train de comprendre ce qu'est l'idée. Même chose avec l'auteur I d Donc c'est, euh, l'auteur a pensé que je l'ai vu parce que je vais passer l'objet là-bas. Ils allaient avoir le titre. On va avoir le corps et ce journal. Et enfin, si l'état publié est dit à nul, je mange. Je ne vais pas en dépasser un. Alors je vais juste horodater avec ce qu'on a, quelle heure en ce moment ? Donc la façon dont nous faisons ça, IHS, nous allons utiliser le jour cette UTC Maintenant, souvenez-vous de ma conversation à propos de leur temps toujours en utilisant , euh, le fuseau horaire UTC ou Greenidge pour que tout soit un peu comme universel. C' est donc toujours une bonne pratique. Euh, et sinon juste mettre le pied de l'Etat polonais. Peu importe. J' ai été transmis sur mon baromètre et enfin, vie personnelle égale la vie, ce qui est vrai par la faute. J' ai une erreur ici. Syntaxe non valide. Ah. Oh, j'ai besoin d'un demi-côlon. Et en haut, j'ai besoin d'importer, hum,à hum, partir du moment où j'importe le bon. Jusqu' à présent, si bien. La dernière chose qu'on veut faire est de trouver lemodèle de représentation. La dernière chose qu'on veut faire est de trouver le le Ah, méthode. Et je vais juste revenir. Uh, le pourcentage de poste est avec le titre. Cool. Jusqu' à présent, si bien. Maintenant, je veux faire la catégorie. Et pour ça, je vais aussi faire ça s ah, c'est une instance de modèle DB, et je vais avoir, euh Eh bien, l'idée est la même que ça. Je vais juste copier et coller ceci et le nom. Ce sera le même que nous le titre ici. Euh, mais je veux en faire 50 au lieu de 80. Et donc pour l'dedans, je vais à lui-même principal. Et je vais définir le nom pour être ce nom. Et la représentation est la catégorie de retour pour cent sont auto Dale. Oh, lui-même a fait droit. D' accord. Parfait. Donc c'était beaucoup de mannequins là-bas. Mais nous avons notre poste et nous avons notre catégorie. Nous avons une clé étrangère. J' ai un type de leur catégorie catégorie I d C'est la clé étrangère de la catégorie. Je pensais que je serais, hum oh, il me manque une catégorie ici. Donc auto catégorie est égale catégorie et j'ai floqué la vie de l'état de police. OK, ça a l'air bien. Donc disons que, une chose queje veux aussi vous montrer, c'est bien, on peut ajouter quelque chose en termes de relations à ce sujet. Donc disons que, une chose que je veux aussi vous montrer, c'est bien, Je ne crois pas qu'ils obtiennent un magasin n'importe où sur la base de données lui-même. Mais c'est plus pour, hum, alchimie secrète de pouvoir faire, hum, des recherches dynamiques entre les tables. Donc ce que je vais faire, c'est que je vais établir une relation entre le bloc et leurs poteaux et la façon de faire cela est à travers la relation db dot et ça dit fondamentalement le look du modèle sanguin . Et quand j'ai un objet blawg, je peux faire bloqué nos messages et s'il vous plaît retourner les messages qui sont liés à l'orteil ce bloc. Donc, nous devons passer la classe pour ça. Pour cette relation, nous devons passer un dos et un orteil de référence. Cela et c'est fondamentalement le blawg c'est à dire de post retour au sang Quel est le navire russe ? C' est le bloc, non ? Et enfin, il y a l'appel assis. Lacey est dynamique, ce qui signifie que quand je le fais, je lève les yeux. Ne pas forcément, euh, chercher tous les messages du blogueur, à moins queje ne que les demande explicitement. Donc, il gère cela pour nous et fait la requête pour le post chaque fois qu'il doit le faire. Donc on va jouer un peu avec ça sur le terminal pour voir à quoi ça ressemble. 65. Post-migration et test: Ok, donc c'est l'heure d'en faire un peu. Hum donc les migrations. Donc Oh, voyons, nous n'avons pas d'erreur là excluant l'O. J n'a pas d'attribut pour ing. Ah, voyons voir. Qu' est-ce que c'est en ligne ? 26 revêtements de sol. Ah, commence une faute de frappe. Laisse-moi vérifier la clé étrangère. Euh, il me manque la clé. Leur clé étrangère. OK, et disons ça et mauvais serveur. Ok, maintenant ça a l'air bien. Parfait. Donc, il est clair de l'écran. Et maintenant on va faire la migration. Alors essayons ça, hum Tyshon Ministry. Pourquoi ? En fait, laisse-moi mettre ça. Donc, je veux voir la version apparaître. Nous avons 70 d et 30 nom I D 39 I d, euh ils sont mon grand. Donc maintenant, nous avons ce nouveau et vérifions ça. Donc, nous avons des catégories créées sans clé primaire contrainte de I d parfait. Quand j'ai leur poste et j'ai cette clés étrangères à l'auteur, blogueur et catégorie Parfait. Et, euh, ouais. Encore une fois, c'est un peu comme insérer cet auteur des autorités, Il ressemble certainement à un ah, comme une erreur sur une sorte. Mais je vais le laisser comme ça. Donc ça a l'air bien um, alors retournons au terminal et on va faire en s'amusant B Y qu'ils soient hors classe supérieure. Super. Parfait. Donc, il exécute la, um la mise à niveau qui est ici. Ah, montrer les tables. Je sais que nous l'avons fait. Ah, la catégorie imposée. Parfait. Ok, jouons un peu avec le mannequin. Donc vous avez une idée Oh, fichier pour interagir avec ses nouveaux modèles. Donc, je vais faire python minutes p wash. Laisse-moi d'abord effacer l'écran par téléphone. Gère-moi. Pourquoi Shell ? Ok, alors nous allons importer des modèles de l'offre. Et nous allons importer à partir de Blawg tous les modèles. Et donc, lisons une nouvelle catégorie. Donc la façon dont nous créons une nouvelle catégorie va être catégorie égale catégorie. Et quoi d'autre que python ? C' est une super catégorie. Hum, donc on va faire une séance de base de données dans cette catégorie et ça va être parfait. Alors vérifions ma suite pour voir si les choses vont bien. Donc, si je ne sélectionne l'étoile de la catégorie Il est. Nous avons notre catégorie de téléphone à tarte là-bas. Ok, donc maintenant on y va maintenant. Um, créez des livres de bloc. Donc pour ça, nous avons besoin d'un auteur. Alors faisons venir le premier auteur ici que nous pouvons obtenir. Et cet auteur est bien sûr, Jorge. Et puis je vais avoir la catégorie, qui est aussi la première, Donc d'abord il catégorie c python parfait. Et donc nous allons créer un post que nous allons faire Post égal Post. On a passé le blawg. On a réussi l'offre. Donc, vous avez ce e c cet as au lieu de regarder le bloc i d. Ou c'est juste comme il vaut mieux juste jeter l'objet et laisser le modèle, genre , comprendre les choses. Laisser quoi ? Ce dont il a besoin. Alors que ça allait être le téléphone Pi, c'est cool. Et le corps, c'est pourquoi, par téléphone, une école et la catégorie, on jette la catégorie et remarque que je ne passe pas ce journal ou l'état de police. Oh, bloc nommé. Oh, je n'ai pas récupéré un bloc. Correct. Donc Blawg est égal à la requête blawg en premier, et nous voyons ce bloc. Oui, mon par le bloc. Ok, alors essayons encore. Maintenant, ça a bien fonctionné. Donc je vais faire db session ad post et D session B. Viens, c'est génial. On dirait qu'il a traversé. Vérifions la, euh, table aux postes. Et c'est là. Nous avons le sang I D. Ce qui est le blawg. Ah, les tuyaux. Du sang. Mon auteur i d et le titre Le corps Le nul lent. L' état publié, qui est la date et l'heure d'aujourd'hui à l'heure de Greenwich, c'est la vie et la cargaison que je d est, euh oh catégorie la neige. Donc c'est inattendu. Um, c'est si nous avons fait les choses correctement ici catégorie. Donc, nous avons une catégorie. Il me manque peut-être quelque chose sur le mannequin. Revenons donc à la Et c'est pourquoi il est important que vous jouiez avec vos modèles avant de les mettre sur l'application, car vous pouvez obtenir des erreurs à partir de là. Donc c'est la catégorie O c, il me manque la catégorie I d. Je pense que je devrais avoir la catégorie I et, euh, on vérifie. Oh, donc j'ai en fait deux erreurs que j'ai, euh j'ai défini des idées de catégorie le champ, donc je dois mettre ceci à la catégorie I d. Et j'ai besoin de mettre la catégorie point i d. ici. Ok, Donc , euh, revenons ici, donc les changements que vous faites sur vos modèles ne reflètent pas automatiquement sous le terminal, vous devez sortir et repartir pour qu'ils soient comme rechargés. Ce n'est pas comme la fonctionnalité de rechargement automatique, donc Ah, c'est clair et fera par téléphone. Me gérer ? Pourquoi, hum, encore Shell. Alors maximisons. Et c'était la même chose ici des modèles d'auteur, euh, et des modèles sanguins, Importer star et auteur est le premier auteur et blogueurs le premier sang et les catégories . La première catégorie et je dois supposer ici, qui est le deuxième post, , en fait, que je démystifiais le problème plus tôt, donc je pense que quand j'ai aussi écrit Donc je vais avoir 1/3 post bloc ici, et je vais l'appeler. C' est mon troisième post de bloc. Et toujours regarder I DS est le titre, donc cela devrait le faire. C' est à quoi cela ressemble sur la validation de base de données. Hum, donc la troisième fois c'est le charme. Et voilà, trouver que nous avons la catégorie D ici. Donc ça a fait l'affaire semble bien. Euh, en fait, je veux maintenant, euh, fondamentalement effacer tous les messages parce que ce sont comme des postes de test et nous voulons avoir une table vide. Donc, vous devez faire est le plomb de la poste à nouveau. Il y a quelque chose Mon site de suite. Um, vous pouvez le faire aussi sur le terminal du côté python. Oh, et, euh, mais c'est plus rapide. Et bien sûr, il n'y a personne pour leur. Alors soyez prudent quand vous le faites. Donc la lèvre du poste. Et maintenant, comme vous pouvez le voir, il n' comme vous pouvez le voir, il n' y a pas de poste là-bas, donc nous avons une table vide. y a pas de poste là-bas, Alors maintenant, continuons et commençons à travailler sur le, um, sur les vues pour ce post. Faisons comme le squelette. Et sur la prochaine leçon, on va faire beaucoup, beaucoup plus. Ok, donc, euh, sortons d'ici et effacons l'écran. Hum, et ce qu'on veut faire maintenant, c'est sur la vue du sang. Nous allons à notre première route pour pouvoir, euh, être capable de, euh, générer euh, un nouveau pape. Donc la route va être coupée, et nous allons avoir une journalisation nécessaire pour ça. Et nous allons les définir, demander la fonction post, et pour l'instant, et pour l'instant, c'est juste mettre le post de bloc de retour. Donc on sait qu'on est au bon endroit. Eh bien, disons ça. Voyons si nous pouvons tromper l'application. Et, euh, ça va slash post et leur porte-chance. Donc, la prochaine section, nous allons commencer à construire le front end pour cela. Ah, pour cette fonctionnalité de post bloc. 66. Introduction au Markdown: D' accord. Vous voulez faire beaucoup dans cette leçon, alors assurez-vous que vous êtes détendu et avez eu une sorte de, comme une petite pause. Euh, vieux trucs bien, mais beaucoup de choses à traverser. Alors commençons. Ah, la première chose que je veux faire est que j'ai besoin de bibliothèques supplémentaires sur les exigences. Txt et ceux-ci vont être ah par téléphone slog si je qui est une bibliothèque qui me permet de générer des slogs à la volée sans avoir à vous soucier de les générer sur l'autre est appelé flasque marqué vers le bas et marquer est une sorte de comme un C'est presque comme un Fudoh, hum, langage de formatage. Mais ce n'est pas que la langue est un peu comme un ensemble ah, hors règles ou ou des utilitaires pour vous y faire et ajouter, hum, texte, hum, du texte, hum,un peu comme le formatage d'une manière très standard. Et vous pouvez chercher si vous faites un Google sur comme marque vers le bas. Um ah, ouais. Enseignez que c'est, euh est une bonne recherche. Vous allez voir comment vous pouvez faire des en-têtes. Vous voyez comment vous faites des en-têtes, vous savez, peu comme des signes trouvés. Et en fonction du nombre de livres que vous avez, il générera les différentes tailles, euh, listes et tout ça. Alors jetez un oeil à ça. Euh, assurez-vous de vous familiariser un peu avec ça. J' ai des images et tout ça, mais c'est un très cool, euh, genre de langage utilitaire d'accouplement , pour permettre aux gens d' genre de langage utilitaire d'accouplement, pour permettre aux gens d' éditer leur leur poste. Alors contrôlons voir à partir d'ici, et nous allons faire un examen des exigences de décrochage. voir à partir d'ici, Parfait. Donc maintenant, nous avons mordre ralenti si je clignote markdown installé. Alors faisons, hum, hum, un espace réservé pour ça où nous affichons le réel, comme les articles de poste. Et nous allons le faire ici sur les modèles blawg. Et je vais créer un nouveau fichier appelé, um article dot html. Et là-dedans, je vais essentiellement, euh, mettre un peu balisé pour qu'on teste que ça marche bien. Donc, je vais pâte, vous savez, étend le code HTML de base, et nous allons faire un discours de bloc intitulé, qui va être bloqué post. Et on va avoir, hum, le contenu bloqué. Et donc la façon dont nous jouons ce code Orender marqué vers le bas est en utilisant ce qui suit, vous utilisez la marque de filtre vers le bas et vous faites un filtre de fin. C' est un peu comme un bloc, mais c'est une attaque personnalisée pour faire face à Mark Down. Et donc je vais juste faire ça pour que tu te vois, je vois ici un peu marqué pour que le titre soit Ah, tu es marqué. Et puis je vais faire, comme une petite liste 0.1, la suivante et la suivante, et vous remarquerez que ceux-ci sont remplacés par 123 donc c'est un peu comme une initiale facile marquée vers le bas. Hum, nous devons aimer, inclure, inclure, avant de rendre cela, nous devons inclure la marque vers le bas sur l'unité y afin que l'application sache comment faire face à cette chose. Donc, nous allons faire à partir du dernier point txt Oh, pas de lin e x t marque d'importation marquée et je vais créer une entrée pour marqué ici marque vers le bas et j'ai passé le haut. Donc à partir de ce point sur l'application, Osada rend, um, contact de marquage. Hum, donc c'est ça. Et voyons si on peut rendre cet article ici um, donc on va faire une fonction rapide ici appelée, euh, article, article, Tout comme tu vois à quoi ça ressemble et certains font un article slash, et puis je suis va revenir. Il n'y aura pas besoin de Logan. Est-ce que quelqu'un peut voir l'article, et puis je vais rendre l'article de journal de slash modèle. Ok, alors voyons si ça marche. Hum, il est en cours d'exécution, donc c'est toujours l'article Slash. Nous avons un article de type plus proche. Oh, j'ai le mauvais caractère là-bas. Donc, nous allons voir que les recharges et actualisé. Parfait. Alors maintenant, voyez comment il rend le 123 et vous êtes marqué vers le bas. Donc, ça semble courir. Alors commençons maintenant à construire sur la fonctionnalité de post bloc réel. Mais avant de faire ça, je pensais que nous avons besoin d'un autre décorateur. Alors rappelez-vous comment nous avons le, um, um, journalisation a exigé un plus grand ici. Donc je pensais que, vous savez, je pourrais avoir un long et requis pour certains, um, um, pour les utilisateurs de pouvoir poster des commentaires comme nous l'avons dit. Mais j'aimerais qu'un autre décorateur le demande spécifiquement. Ah, ça suffit sur l'auteur. C' est lui qui s'est connecté, et je pense à l'administrateur, et je pense au cours post. Vous pourriez être enfermé, mais si vous êtes l'auteur n'est pas réglé, alors, euh alorsnous ne devrions pas être capables de faire quoi que ce soit. Vous pourriez être enfermé, mais si vous êtes l'auteur n'est pas réglé, alors, euh alors Et je pense que, euh, sur la journalisation quand ? Lorsque vous êtes sur l'auteur, votre session est définie ici. Alors faisons ce décorateur, et ce sera à peu près la même chose, mais nous allons l'appeler auteur requis. Et dans ce cas, ce que je vais faire, c'est si la session get est l'auteur. Si c'est si la session obtient que son auteur est connu, alors je reviendrai automatiquement ici sur une planche à bord de quatre ou trois. Si c'est si la session obtient que son auteur est connu, Et pour cela, n'importe quel orteil inclut à bord ici. Donc c'est un peu différent en ce sens que si tu n'es pas un autre, je ne vais pas, genre, te renvoyer gentiment à la page de connexion. Tu fais probablement quelque chose de hacky. Donc je vais juste aimer retourner un 43 ici. Alors c'est tout pour ça. Et maintenant je vais avoir le, euh, euh, sur les vues ici que je vais faire à la place, hors Logan requis. Je vais faire l'auteur exiger, et je dois importer ça ici. Parfait et la même chose avec le avec un poste, non ? Vous ne devriez pas pouvoir poster si vous n'êtes pas un auteur. 67. Formulaire de publication: Alors commençons à travailler sur le formulaire de bloc pour le post. Et donc nous avons, hum, enceinte appelée est la classe de formulaire post, et c'est aussi la classe de forme. Donc on va avoir un titre, qui est le titre du Post. Et c'est un Stringfield. Je vais afficher le titre sur l'étiquette et puis ici, quand un ont validateurs requis et la longueur maximale, il sera 80 et puis je vais avoir un corps, qui est un C'est un nouveau. Nous avons un champ de texte de nouvelles, qui va être contenu, et ensuite je vais faire des évaluateurs. C' est nécessaire, euh, et enfin avoir la catégorie. Donc, avec la catégorie serait aussi vous quelque chose de nouveau, qui est que nous pouvons faire, vous savez, ce sera une sélection, vous savez, ces sélectionner plusieurs champs de sélection, mais nous voulons orteil chargé avec le contenu des catégories que nous avons sur la base de données. Donc pour cela, nous pouvons utiliser quelque chose appelé le champ de sélection de requête et tout à fait un champ de sélection signifie qu' il va tirer d'un de fondamentalement d'une table que je désigne, um, le contenu de ce jeu, um Donc, la façon dont vous faites ce problème a passé une usine de requêtes, et cela pointe vers une fonction que j'ai besoin de définir ici. Donc ça va s'appeler Trata Gorey's, et je vais laisser les équidés blancs. C' est vrai, parce que je ne sais pas, je ne le suis pas. Je ne pense pas que nous devrions forcer l'utilisateur à sélectionner la catégorie. Um, dans moins que le moins si l'utilisateur veut entrer dans une nouvelle catégorie, je vais permettre ça. Donc je vais juste avoir un autre Stringfield appelé la nouvelle catégorie. Ok, alors ajoutons que, hum, cette usine et c'est juste une fonction de vous définir ici les catégories et qui renvoie une catégorie. Ah, Doug Requête. Et nous devons ajouter, hum, ici. Ah, à partir des réformes dont nous avons besoin au champ de la zone de texte. Et nous devons également ajouter des catégories d'importation de modèles blawg afin que cette requête puisse fonctionner. Et enfin, je vais à Ah, le, um de w t formes que e x t dot suite alchimie. Et cela se sent importer requête Select champ. Parfait. Hum, donc maintenant, allons travailler sur le modèle pour ça qui allait rendre ce formulaire alors allons aller au bloc. Um, vues et travail sur le poste. Hum, donc je dois adhérer aux méthodes. Méthodes égale, hum, get and post, et je vais avoir l'auteur requis. C' est très bien. Et définir post parfait. Alors commençons à charger des trucs ici. Hum, le formulaire sera le formulaire de poste, et nous allons avoir un, um, um, retour modèle Orender post pensé Eckstine Mill. Eh bien, nous devons le mieux pour lui. Et nous devons inclure le, hum voir ici. Ah, de forme de livre. Ah, Poste le formulaire 4. Parfait. Et, hum, regardons à quoi ressemble le code HTML de ce bloc, et ensuite on peut filer la base de données, donc on va créer un nouveau modèle. J' ai un problème ici. Vous avez déposé Vous avez opposé html, et cela va avoir des étendues. Euh, vapeur de base. L On va avoir un titre de bloc. Ecoute, poster ils auraient le contenu du bloc et, euh, voir ici, donc, euh, aurait une classe de bœuf égal rang. Et puis une classe div égale appel. Et le décalage trois et appeler MT. Six, qui est ce que nous avons utilisé pour bootstrap le long. Et puis on aura le titre. , H 3, nouveau poste de bloc. Et nous n'avons pas cette aide des helpers de formulaire dot html Import champ de rendu. Um, parfait. Alors passons au formulaire. Plus pour la méthode égale post et action est le, um, Euro pour la poste et le rôle est égal forme. Parfait. Et nous avons notre, um jeton RSE Hayden tag. Quoi ? Et maintenant, nous rendons champ une classe de titre de formulaire égale contrôle de formulaire. Et donc quand un copier-coller que pour tous les autres champs. Donc dans ce cas, on va avoir un corps. Et une mise en garde ici, c'est parce que ça va être une zone de texte. En fait, je vais passer une seconde. Mieux mesurer ici, qui s'appelle Rose, est un certain nombre de lignes que ce champ, pas le champ de zone de texte, va avoir. Voici donc la catégorie de formulaire, et enfin, une nouvelle catégorie. Donc, si l'utilisateur veut entrer une nouvelle catégorie, il peut le faire là-dedans. On a presque fini ici. Le type de bouton est égal à soumettre. Classe égale Bt n la faute et post parfait. Jusqu' à présent, si bien. Alors voyons si nous avons des erreurs ici. Non, ça a l'air bien. Alors maintenant, nous allons à un poste qui devrait être en mesure de voir cette forme parfaite. Donc nous avons un titre ici. Nous avons le contenu, qui avec les 10 lignes ici et consultez la catégorie. Mais c'est bizarre. Il est dit catégorie Python. Donc, ce qui se passe ici, c'est que , um , um, quand on fait cette reproduction, c'est ce qu'il passe au modèle, euh, désolé pour la forme. Donc, quand ils font cette requête de catégorie, il sélectionne les catégories. Et je n'ai pas trouvé de moyen de faire que ça, euh, travailler avec ça ou avec une autre représentation semblable. Donc ce que j'ai fait ici et vous pouvez vérifier s'il y a une autre façon de le faire c'est que je me suis retourné ce nom au lieu de cette reproduction. Mais j'aimerais avoir le pour continuer à avoir ceci et filtrer d'une manière ou d'une autre. Donc, si vous trouvez un moyen de le faire, faites-le moi savoir. Mais maintenant, si je recharge ici, vous verrez que j'ai la bonne catégorie. Donc, à la recherche de l'air bien jusqu'à présent. Maintenant, nous avons juste besoin de faire la pièce de base de données, ce que nous allons faire dans la, hum dans la paix suivante 68. Enregistrer le message dans la base de base: Alors allons de l'avant et voyons comment nous pouvons créer le post de bloc. Hum, donc nous devons, hum, ici dans les vues de bloc sur la méthode post, nous allons faire si, ah, formulaire valide sur soumission. Ce qu'on a toujours avec. Nous avons vu le passé. Hum, donc on va faire un peu de vérification ici. La première chose que je vais vérifier, c'est s'il y a un formulaire, um, nouvelles données de catégorie. Cela signifie que l'utilisateur passe une nouvelle catégorie. Donc, je vais en quelque sorte créer cet objet à la volée sur la base de données en définissant une catégorie , hum, à l'intérieur de la force que l'utilisateur passe. Et puis je vais faire une séance dans cette, euh, catégorie. Et puis je veux nous faire une chasse d'eau. Donc pas encore commettre parce que je suis je ne veux pas commettre, euh, Onley Cette chose que je veux commettre quand j'ai tout le paquet. Donc, mais avec la chasse d'eau de session, j'ai maintenant l'objet créatif, euh, et avec un potentiel i d. Donc c'est que, euh, l'autre chose est, si rappelez-vous que l'utilisateur peut passer une, hum, catégorie vide. Mais s'il y a une donnée de catégorie étant passe-temps à la place, l'utilisateur a sélectionné quelque chose. Ensuite, je veux faire ce qui suit. Je dois chercher cette catégorie. Et la façon de le faire est de regarder la catégorie D. Et vous le faites en utilisant cette fonction d'aide, qui est Ah, qui est Ah, obtenez PK Et vous avez passé la catégorie à la dysfonction des orteils. Mais cela fait est qu'il obtient la clé primaire SPK ou le I d off cette sélection à partir de ce champ. Et puis après cela, je vais regarder la catégorie en faisant une recherche, euh, catégorie cette requête, Um euh, catégorie cette requête, , ce filtre par I v égale la catégorie I d que d'abord et qui prend soin de la catégorie. Um, sinon, je vais juste passer que la catégorie ne facilite aucun. Parfait. Donc, rien, je suppose qu'on n'aura qu'un blawg par application, donc je vais juste dire blawg aigles à interroger d'abord. Donc s'il y a plus d'un bloc et que vous voulez créer un système qui a besoin de plus bloc, de bloc, alors nous devons, vous savez, comprendre ça ici, euh, et écrire un autre comme fonctionnalité. Mais pour ce cours, je suppose juste que ce n'est qu'un bloc que nous avons ici. Pour que ça marche. Sauf si je veux que nous ayons l'auteur. Donc je fais l'offre, la requête, et je vais regarder par la personne qui est connecté, accord, donc utilise son nom égal session. Euh, vous certainement. Et puis j'ai d'abord ma catégorie avoir mon sang, et j'ai mon auteur. Le reste est juste ce qui est passé par le formulaire afin de former des données de titre. Euh, et le corps est à travers les données de corps de forme. Et pour ce journal, je vais utiliser cette bibliothèque qui a installé et vous juste pour prendre si je, euh titre. Um Et donc il est maintenant temps de créer un objet de poste ou non passer blog titre titre catégorie corps et regarder parfaite s propre idole Devi, session God Post et le commentaire de session B. Et enfin, je vais retourner l'utilisateur à l'administrateur parce que dans l'armée, je vais avoir, genre, genre, un lien pour créer de nouveaux messages éventuellement. Donc je vais juste le faire ici, et on va vérifier si tout s'est bien passé du côté de la base de données. J' ai donc quelques erreurs parce que je dois, comme, comme, ajouter une catégorie et solidifier et poster. Donc je vais aller au sommet et à ces choses là-dedans et voyons ici. Donc, à partir des modèles de bloc pour blawg Post dans la catégorie et, hum, de lent si je suis sorti lent si je suis parfait donc je ne devrais pas voir plus d'erreurs là-dedans, qui semble bon. Ensuite, nous voyons s'il y a des erreurs. Des usure connues. Alors essayons ça. Essayons de créer notre premier post sanguin en utilisant le formulaire. Donc on est au poste. Laissez-moi le recharger au cas où. Et je vais dire ici, euh, euh, flasque est vraiment incroyable pour le titre, puis le contenu. Je vais dire flasque, c'est un génial. Je vais dire flasque, Euh, par téléphone. DreamWorks étaient-ils vraiment ? Je le recommande. Parfait. Et donc nous allons essayer avec la catégorie d'abord et voir si cela fonctionne et ensuite aller poster Ah, objet. C' est beaucoup être un rencard. Ok, donc c'est la catégorie Ellie. Rendez-vous sur blob. Utilise mentir. 72. Oh, Dada. Dada. Ok, alors essayons ça. On peut recharger ici. Parce qu' il va envoyer les mêmes données. Et maintenant, nous avons une référence de caractère d'acheteur local avant l'affectation. Voir ici. Oh, c'est des données de catégorie de formulaire ici, alors voyons ça. Ça a l'air bien. Retournons et postons à nouveau. Cool. On dirait qu'il a traversé. Et vérifions la base de données pour voir si tout semble bien. Alors, sélectionnez l'étoile à partir de Post. Impressionnant. Permettez-moi de maximiser cela et de voir si ça a l'air bien. Il y a donc le i d. le bloc I d. Autorité le titre. La limace du corps. Voir les limaces. Flacon. Dash décime vraiment le tableau de bord ? Nous avons la date, et nous avons la vie est un et porter celui-ci parfait. Donc ça a l'air très bien. Hum, donc maintenant, on est bien en train de mettre ça en place. Permettez-moi d'en faire une autre avec une nouvelle carrière pour voir si ça marche. Donc, disons ici ma nouvelle catégorie dans mon bloc, ce sera la nouvelle catégorie. Donc maintenant je vais avoir ça va être vide, et je vais voir que c'est une catégorie de flasque. Donc post qui a l'air bien. Maintenant, faisons une autre recherche ici et parfait. J' ai une catégorie deux, qui est la nouvelle catégorie. Et si je sélectionne, um, commencer à partir de la catégorie maintenant je dois un dans parfait donc semble vraiment bon. Félicitations. C' était beaucoup de travail, et Ah, et Ah, mais vous commencez à voir la coupure en utilisant le ou M et Ah, et en utilisant ça. Ces outils comme la forme, la suite. Alchimie. Tout cela se réunit, donc ça a l'air vraiment bien. Euh, maintenant nous allons Ah, essayons de rendre ce, euh, ce post sur le seul sur les vues de l'article. 69. L'affichage l'article: Donc maintenant, nous allons, hum, créer la fonctionnalité à rendre sur l'article. Et la façon dont nous le faisons, c'est sur l'abus de sang. Nous avons la fonction de rendu de l'article ici, alors modifions cela pour qu'il soit réellement extrait de la base de données. Donc on va faire quelque chose qui s'appelle Slash Slug. Donc, l'idée est que vous recherchez en passant, ce champ slug sur la base de données, et nous l'avons transmis à la fonction. Tu te souviens de ce journal ? C' est, ah, unique. Donc ça marche parfaitement bien nous comme un i. D. Donc c'est vraiment simple. On regarde juste le poste. Um, par ce journal, euh, filtrer par journal est égal à slug, et il y a une fonction pratique appelée premier ou 44 Et ce que ça fait, c'est s'il trouve que, euh, par ce journal, euh, filtrer par journal est égal à slug, et il y a une fonction pratique appelée premier ou 44 Et ce que ça fait, c'est s'il trouve que, euh, sur la base de données par la recherche que vous faites, le renvoie à la publication viable, et sinon, il renvoie un pour un quatre à la vue. Donc c'est assez pratique. Hum, et ici donc je vais faire ah, après le post pour le modèle. Et bien sûr, nous devons modifier le modèle Donc, nous allons, hum, fondamentalement changer ce qui suit. Donc, au lieu de bloquer les messages ici, je vais mettre le titre hors du post. Andrea, sur Le post est l'objet qui est récupéré de la base de données. Et ah, l'autre chose est, euh bien, nous devrions garder le truc de classe de, hum, hum, de bootstrap et qu'ils tournent et plus de contenu ici et puis aussi, ils ont, Euh, classe est égale à 3 et appelle les six et cette séance. Et ici. Parfait. Donc maintenant, hum, on va avoir Ah, enlever ça. Nous allons avoir un titre, qui est le titre du post et la façon de rendre le message réel iss. Nous faisons le corps de la poste, puis nous filtrons avec marque vers le bas, sorte que ce type de tuyau ou de ligne ligne ligne verticale est appelé un tuyau. Et markdown est disponible pour nous puisque nous avons la bibliothèque installée. Donc, je vais avoir une petite division ici, comme un cheval sur la ligne, et ensuite je vais faire de leur classe un texte en sourdine sur ce genre de ça va être comme un dossier. Um, posté par je vais avoir, genre, un arrivé à l'auteur. Même si ça ne va pas, tu sais, marcher. Hum, pour de vrai. Mais vous pourriez l'implémenter. Et, euh Et puis nous allons mettre à la date sur post publication. Ils, euh et on va utiliser une fonction appelée String of Time. Laisse-moi envelopper. Ce bureau a l'air un peu moche. Ah, s t r f temps. Et c'est un meurtre. Donc, nous conformons les mises à jour, nous allons utiliser le pourcentage. Pourquoi ? Quelle est l'année ? Pourcentage. Je suis pour cent et c'est un peu moche, mais on peut travailler là-dessus. Juste qu'on a quelque chose en place et que je vais faire dedans et encore une autre dérive qui ne va pas aller nulle part au départ. Juste qu'on a quelque chose en place et que je vais faire dedans et encore une autre dérive Hum, et on va mettre le nom de catégorie cool. Hum, donc ça a l'air bien. La dernière chose que je veux faire est comme, une fois que nous publions dans le, um, au bloc que nous avons envoyé l'utilisateur ou l'auteur directement à cela. Alors faisons ce changement ici. Um, au lieu de les envoyer à Rodman, je vais retourner l'euro 4, euh, article et ensuite passé la balle. Parfait. Donc maintenant, quand je publierai, je vais être emmené à ça. Euh, donc cet article Eso Voyons si nous avons des héritiers. Hum, ça a l'air bien. Alors allons-y. Poteau d'orteil Um, c'est encore un autre article, et je peux mettre certains, vous savez, certains marqués ici pour que je puisse mettre quelque chose comme, euh, la version initiale est le genre de sous-titre et de la nourriture ici certains. Ceci est la version initiale de l'article qu'il a voir rangée et que ces petites étoiles doivent rendre audacieux. Il n'a aucun accès sur Internet, et ça devrait aller. Et on va l'avoir dans la catégorie python. C' est ça. Donc c'est juste. Publication d'erreur générée. Aussi, je pense que cela a à voir avec cette ligne ici. 85. Oui. Ceci est censé être juste euro pour l'article virgule slug slug parce qu'ils je passe les deux les deux paramètres là-bas. Laisse-moi te dire ça. Et, euh, créons un autre post parce que nous allons déjà avoir celui-là. Je pense qu'une fois enregistré correctement sur la base de données, nous pouvons vérifier. Euh, ouais. Donc c'est à un autre. Euh, voir ici la beauté. Oh, flasque. Et puis je vais faire la même chose. Pourquoi le flasque est-il génial ? J' allais aimer un sous-titre. Hum, et je vais mettre le flash est génial parce que oui, euh, parce qu'il en a beaucoup. Qu' est-ce que l'Astor est beaucoup hors fonctionnalités, alors mettons cela dans le flacon et post parfait. Donc au moins je suis envoyé à la donc la salope correctement. Et c'est dire que le sang un est supposé n'a qu'un hommage de bidon. Auteur. Oh, donc on dirait qu'on n'a pas de lien entre le poste et l'auteur sur le modèle, ce qui est assez intéressant. Donc la façon dont on répare ça c'est qu'on va voir les modèles sanguins et quand on dit une relation entre poste et l'auteur, donc , euh, je ne sais pas si j'ai, genre, parlé de genre, la sienne, Euh, en détail parce que c'est, genre, donc une seconde nature pour moi. Mais voir comment je fais passé le nom complet de l'auteur, comme, je saute entre deux types de base de données ou de tables, non ? C' est de l'or comme des liens. Et c'est quelque chose que tu vas avoir. Tu as toujours été une sorte d'usage comme ça. Donc post auteur, Le nom complet est l'un d'entre eux et pose le nom de la catégorie est un autre. Comme sauter de l'orteil de la catégorie au nom et la façon dont vous faites ce problème à, euh, ces relations dont nous avons parlé brièvement, euh, avec le, euh, catégorie. Rappelez-vous comment j'ai ce poste de répertoire rift Blawg dynamique, hum, avec le postal à la blawg. Et j'ai, je ne pense pas avoir de relation de catégorie. Laisse-moi voir. Oui, je l'ai fait. J' ai l'extérieur , mais il aura une sorte de relation comme une relation. Donc, la règle de base il est que vous avez toujours le ceci est appelé un à beaucoup de relation. Je mange pour un, euh, post, il y a un potentiel qu'ils pourraient être. Je veux dire, il n'y a qu'une seule catégorie, mais pour chaque catégorie, il pourrait y avoir plusieurs postes. Donc l'idée est que vous placez la relation sur les cidres multiples qui étaient essentiellement les, euh étaient le genre off comme ça. Des points uniques sur les multiples. Et dans ce cas pour ça, lien que Toby a fait. C' est en fait pour l'auteur. C' est en fait sur le modèle de l'auteur. Donc tu vas voir comment je fais ça ici. Donc je vais faire des posts et ça va être un nouveau champ, et je vais y aller. Le post de relation DB est la classe à laquelle je le lie. Et la référence arrière est l'auteur. Et c'est là qu'est-ce qui va me donner cette relation ? Et, euh donc, voyons quoi ? C' est ce que ça fait. Regardons que je n'ai aucun problème là-bas, alors rechargeons. Regardons que je n'ai aucun problème là-bas, D' accord ? Et comme prévu, je n'ai pas de problème de course entre le poste et la catégorie. Donc encore une fois, chaque, um, chaque catégorie peut avoir plusieurs post d'amour. C' est là qu'on devrait faire leur relation. Um, donc passons aux modèles doivent blawg, et je vais avoir ici la catégorie de catégorie égale la relation B et la catégorie des classes et le Griff arrière est égal à la télévision post de graphique arrière de sorte que les messages de ce qui a et lacy est égale dynamique. Ok, donc maintenant je peux aller à un poste et et au graphique arrière hors de ce hors de quelle catégorie ? Il pointe à utiliser cette relation. Donc c'est celui où nous chargeons et il y en a. Maintenant, j'ai, vous savez, posté par Jorge Escobar dans une fiole. Alors j'espère que ça a du sens. C' est un peu difficile de faire commencer ces choses par un jour. Euh, mais vous avez le coup de ça c'est tellement fondamentalement, rappelez-vous que si vous avez un post et, hum, vous voulez avoir une relation avec la avec une catégorie, vous placez la catégorie comme un champ, et ça va être un champ. Si vous si vous recherchez un poste, vous pouvez faire la catégorie post start et vous obtiendrez la récupération à laquelle il appartient. Mais aussi, vous pouvez avoir que vous pouvez rechercher une catégorie et faire que les messages et obtenir le poste qui sont à l'intérieur cette catégorie. Euh, donc des trucs cool qu'on a appris ici. Et voilà. Vous pouvez voir que le post de l'auteur et le dos. L' auteur de Griffey. Donc, cela signifie que je peux faire poster auteur point et obtenir la relation ici. Hum, donc c'est une fonctionnalité assez utile que vous allez utiliser beaucoup. Donc, hum, choses froides, nous allons maintenant sauter dans la liste des articles sur l'administrateur et la page d'accueil pour qu'on aime et puisse voir la liste des articles en un seul endroit 70. Articles de liste: Ok, donc on va, hum, commencer à afficher une liste des messages sur le, hum sur la page d'administration ainsi que demandé la page d'accueil du bloc. Donc pour ce faire, nous devons, euh, aller à la vue noire et, ah, au lieu de ça. Ah, blogueur Admin. Euh, étant juste coincé à vérifier si la session sort de l'auteur, nous devons cocher le post, lire le post dans, euh, nous allons les afficher dans un ordre inverse en termes de date et puis l'envoyer au modèle. Et puis nous devons faire quelques changements à partir des modèles afin qu'ils y soient affichés . Donc avant de commencer à faire ça, je viens de réaliser qu'il y a, ah sur le point de vue de nos auteurs. On doit, hum quand on regarde dehors, on doit aussi faire cette séance pour l'auteur de l'Est. Alors rappelez-vous comment nous à une session est l'auteur au système. Maintenant, nous devons aussi pop ça pour que quand les gens regardent dehors, ce cookie ou la session soit aussi, euh, effacé. Alors allez-y et à ça. Et, euh, nous devons maintenant aller au ah, blob. Utilisez l'administrateur pour commencer un processus d'obtention du, euh, désolé. Obtenir les, euh, les messages de bloc pour l'administrateur. Donc disons juste ici, euh, nous allons faire ce qui suit. On va avoir des messages plus anciens. Hum, et nous devons faire une requête propre ou acheter. Ah, date de publication du post. Je pensais que le e S C signifie descendre. Et nous avons posté ici sur le sang une fois, mais nous le faisons. Parfait. Donc maintenant, nous allons passer ces messages à bout de l'admin html. Donc post est égal aux messages. Ok, alors allons aux modèles, hum, hum, pour l'administrateur du sang. Et, euh, donc nous avons notre, euh, bienvenue ici. Je suppose que nous pouvons alors faire ce qui suit. Ajoutons juste un avec une classe hors poste, peur qu'on ne fasse un regard quatre. Donc, pour le poste dans les messages. Et maintenant, Post va tenir un viable pour ah, pour les informations de post quand il fait et pour ici et maintenant nous allons faire, hum, hum, un article de poste, et nous allons avoir le mot à dire ce titre avec un lien hypertexte pour ces titres. Hum, pour l'article et remarquez comment je fais l'article. L' euro quatre sur ce journal est le journal des messages. Donc maintenant vous remarquez à quel point c'est facile une fois que nous avons les bonnes choses en place, ce n'est pas beaucoup de travail supplémentaire. choses en place, Donc, vois, je n'ai pas de titre avec un orteil hyperlien. Le bon article, et ça va fonctionner parfaitement. Il me manque une citation ici. Parfait. Donc maintenant je vais faire un Ah, je vais faire un texte en sourdine, ce qui est, comme, comme, une sorte de police plus légère comme. Ceci est, euh, fourni par bootstrap. Et je vais avoir un peu, comme une ligne de l'auteur. Ce Ah, pour l'instant ne relie nulle part. Il y a quelque chose que tu pourrais faire. Je dis, comme un défi personnel ou un exercice pour vous est de créer comme, hum peut-être des pages de profil pour les autres. Et je vais le faire probablement si date, um une chaîne de temps libre. Et je n'y arriverais pas. Ah, pourquoi ? Et c'est vraiment casser que pour qu'il ait l'air plus agréable. Donc je vais juste mettre un espace ici, et enfin je vais avoir la catégorie. Donc, dans, euh, ils rédigent des égaux et encore. Vous pouvez le faire comme un devoir est de saluer les pages de catégorie où la publication de cette catégorie sont affichés. Parfait. Ok, alors allons-y et voyons si ça marche. Donc je vais enregistrer ce fichier. Voyons voir le Il est en cours d'exécution. Ça marche bien. Donc c'est sur l'administrateur. Alors passons à l'administrateur slash. Et si j'enregistre ce fichier, c'est moi qui l'utilise. Je n'ai pas enregistré le fichier. C' est vrai. Ok, donc maintenant s'il y a des erreurs et qu'il est rechargé ici, vous y allez. Parfait. Donc maintenant, nous avons tous les messages que nous avons intérêt à tirer le blawg, et vous avez le posté par Jorge Escobar. Ce lien ne fait rien. Et la catégorie, hum, qui ne fait rien aussi. Mais si vous cliquez sur le, um, sur un article individuel, nous avons le chargement de l'article. Donc c'est génial. C' est génial. Um, jusqu'à présent si bon. Alors maintenant faisons quelque chose de similaire pour la page d'index et allons-y. Donc, pour la page d'index, je vais faire des choses très similaires ici. Je vais avoir les , messages ici, et, hum, hum, je vais faire ce qui suit. Donc, si je vérifie que les blocs sont égaux à zéro, alors je vais pour la mise en place. Sinon, je vais, euh en fait, non, nous n' avons pas besoin de faire ça d'autre, parce que ce retour sera Will, nous allons juste arrêter toute autre exécution de ça. Donc on va faire le post la même chose ici, et on va avoir un, hum voyons. On va avoir le modèle ici, mais je veux faire quelque chose quand j'ai le titre du bloc quelque part dans la, hum dans cette page. Donc, je vais changer ça un peu à la place, faisant le compte blawg quer, je vais faire ce que j'ai fait de l'autre côté, qui est blawg égal à la requête de bloc d'abord, et cela me donnera juste un premier bloc afin que ici au lieu de cela bloque égaux ici. Je vais le faire, si ce n'est pas le journal, parce que ça veut dire que je n'ai pas de retour. Alors fais ça. Sinon obtenir le poste et passé le blawg comme les postes Blawg et Post Eagle. Parfait. Donc maintenant je vais créer la, um, um, la page html d'index pour cela pour la page d'index sont réels, comme, blawg. Laissons donc sur votre dossier. Je l'appellerai Index X TML. Et tu sais quoi ? C' est un peu en règle ici avec les sommets. Je suis désolée, les gars, et d'habitude ne fais pas ça, mais, hum, c'est juste comme construire, hum, lentement. Il y a une fonction très cool ici qui dit que vous pouvez faire fermer tous les types que vous pouvez fermer tous les autres types qui ne sont pas celui-ci ou fermer arrête le droit. Il y a beaucoup de choses comme, bonne fortune, n' est-ce pas ? Je vais juste fermer les robinets pour qu'on puisse commencer à partir de zéro. Et, euh, passons à cet index html ici. Donc, nous commençons par étend, um base extrême el nous à un titre de sang avec le nom blawg et peut bloquer. Et ensuite, on va bloquer le contenu et je vais faire la classe de la mort égale rang. Et puis ils ont classe égale appel et le décalage liquidé sur les autres. Appelle les six. Hum, donc on va avoir le nom du bloc. C' est là que nous voulions que le blawg soit passé à ce modèle, puis nous avons une liste de messages et, euh donc je vais faire pour le poste dans les messages et puis et quatre. Et, euh, voyons, nous allons avoir la classe égale l'article post et le titre. Tes quatre sont trop cool. Slog est égal à post slug, et nous allons avoir le titre du post ici. Bon, maintenant on a ce qu'on avait dans l'autre. X mis en sourdine par un brouillon est égal ah, factice et ensuite opposé le nom complet de l'offre, et puis je vais faire sur la date de publication post. Ce s direction F temps pour cent y pour cent m pour cent, le I dans un X ref puis la catégorie de poste peut. Parfait. Alors c'est ça. Et, euh, voyons ce qu'on doit faire d'autre ici. Hum, j'ai sauvé ceci et je me laisse voir les vues de bloc à nouveau. Donc, retour dans le modèle, nous avons le bloc le post. Ok, ça a l'air bien. Voyons si j'ai des erreurs. Non. Alors passons à l'expression finale. Voyez ce qui se passe. Ah. En bloc. Nous avons besoin d'un bloc de fin sur l'index des templates html. On l'aura ici. Donc la teneur en sang, c'est ça. On a besoin d'un coffre. Pas d'erreurs. Recharger. Ils sont parfaits. Hum, ça a l'air bien. La seule chose, c'est qu'on n'a pas de dossier. Um, comme on l'a fait à l'administrateur. Donc, dans ce sens, où est-ce que j'ai ? Donc on avait un pied ou quelque part ? Euh, voyons voir. Peut-être était Oh, c'était peut-être dans la leçon ou la section précédente plutôt sur le test. Oui, je suis confus. Je croyais qu'on avait un pied ou ici. Donc c'est à un repas parce que c' est quelque chose que chaque bloc devrait avoir. Donc on va éditer la vapeur de base l et tout détruit. On n'a pas de fausseur. Ça explique ça. Euh, donc allons ici, ils ont des cours, euh, égaux. Je vais passer un autre appel, officier 3, et ensuite les appeler les six. Et puis je vais mettre un peu comme, ah, ah, règle horizontale ici, séparée, séparée, et ensuite on mettra de la nourriture, euh, élément. Et quand je mets, euh, copie, droite, 2015. Et, euh, ouais, gardons ça comme ça. Voyez ce que ça ressemble à des épargnants et des années. Et allons à la page d'accueil. Ouais, ça a l'air beaucoup mieux. Parfait. C' est donc notre page d'accueil initiale. Alors voyons sur quoi d'autre on peut travailler pour notre prochaine section. 71. Page de connexion: D' accord. Donc, dans la leçon précédente, j'ai fait une sorte de pied de page, mais je viens de réaliser que ce n'est pas au bon endroit. On devrait le mettre dans le conteneur. Donc, euh, désolé pour ça. Je pense que ça a l'air un peu funky. Et je pense que c'est la raison pour laquelle. Laisse-moi te dire ça. Et rechargeons la page. Ouais, ça a l'air beaucoup mieux. C' était comme si dehors, c'était comme si, qu'est-ce que c'était ? Donc oui, ça , ça semble beaucoup mieux si je clique ici, je reçois les articles réels. C' est génial. Une chose que je voulais ajouter ici, c'était une sorte d'aide. Si vous étiez enfermé, euh, orteil vous permet de, hum, hum,un peu comme avoir ah, peut-être une page de journalisation ou un lien de journalisation ou regarder si vous étiez enfermé. Donc c'est comme ça que je vais le faire. Um, je vais vérifier ça. S' il y a une session, je remarque que nous avons accès à la session. Objet ici dans le modèle sans avoir à faire aucune importation ou quoi que ce soit. Alors gardez ça à l'esprit. Donc, si nous avons un auteur connecté. Alors on va dire, euh, euh, un voyage est égal à toi, Earl. Quatre. Ah, administrateur pour que tu puisses aller à la page d'administration si tu le voulais. Et puis je vais faire une fin si et de la même manière, je veux vérifier si la session iss a dit pour, um pour le nom d'utilisateur. Je veux dire, c'est un utilisateur connecté. Alors je peux les aider à se déconnecter. Alors laissez-moi copier et coller. Il y a l'euro quatre. Déconnectez-vous, puis regardez ici et en fait est allé faire un autre ici, sinon, si elles ne sont pas des noms d'utilisateurs, Sessions dit, alors je vais les inviter à se connecter. Donc H ref Europe pour l'exploitation forestière et Logan. Voyons si ça marche. Euh, recharger. Parfait. Donc parce que je suis mon, euh, et il est l'auteur. Ensuite, je reçois l'administrateur cliquez ici lien, et si je veux bas Garrick, puis regarder en toute sécurité. Et maintenant, regarde, il m'a encore invité à Los Angeles. Donc, quand je peux me connecter ici et 12345 et oui, cela nous amène à la réussite de la journalisation quand nous devrions émettre nous prendre à la page d'accueil. Alors regardons aussi ça. Donc après que les gens se soient connectés correctement, euh, vous êtes quatre Index au lieu de flagellation, et nous pouvons aller de l'avant, et, euh je veux dire, nous n'avons plus besoin de cette fonction de succès. 72. Pagination: Ok, donc maintenant ce qu'on va faire, c'est qu'on va avoir une fonction de pagination, et c'est quelque chose que tu verras aussi souvent sur les sites de blogs. Et n'importe quel pitch quand ces applications qui ont des pages de contenu, Um, vous allez vouloir le faire. Donc, la façon dont nous faisons cela est en utilisant une fonction intégrée de, hum, de me verrouiller secret qui vous permet de faire un genre paginé d' accès ou de requête à, hum, d' accès ou de requête à, hum, accès ou de requête à, hum, sur le site. Voyons comment on peut faire ça. Donc la première chose que nous allons faire est que nous allons bloquer les vues, et nous allons mettre une constante ici en haut, qui va être des messages par page. Mettre des constantes sur le contrôleur réel est quelque chose qui est très bien tant qu'il n'affecte que ce contrôleur. Ou que les vues sont la raison pour laquelle tous les gens préfèrent juste avoir cela sur un fichier de paramètres si cela va affecter plus de 11 section. Mais c'est bien de l'avoir ici. Euh, parce que ça va juste être un couple pour ce dossier en particulier. Donc ce que nous devons faire ici, c'est que nous devons ajouter un ah, fondamentalement sur un paramètre de page sur l'euro eux-mêmes pour que, hum, suite Alchemy puisse ensuite tirer le bon, euh, le bon genre de, comme page d'index. Voyons comment on fait ça. On va avoir des points d'entrée maintenant à la pointe de cette manette. Donc dysfonctionnement plutôt, qui va être index ou index slash un nombre comme 1234 et ça va être le numéro de page . Et là, nous allons avoir une page égale à un. Qu' est-ce que ça veut dire ? Cela signifie que si les index appelés sans page, comme lorsque vous l'appelez par l'index ou juste une barre oblique, alors la page sera automatiquement définie toe one. Sinon, il faudra n'importe quel numéro passé ici dans la route. Ok , , donc l'autre chose que nous devons adhérer est maintenant une fonction paginée à la fin de la requête. Et donc nous faisons ce qui suit, euh, Paige et messages par page et, euh, et puis un paramètre 1/3 appelé défauts. Et qu'est-ce que cette fausse viande ? Cela signifie que si une page que c'est l'année dernière n'existe pas, alors elle renvoie un 44 Si elle est définie sur true et si c'est faux, alors il ne vérifie pas cela. Il juste si c'est comme un mauvais, euh, euh, peu comme un numéro de page, alors il retourne juste une liste vide. Donc je préfère les ramener à bail et ne pas avoir de 44 Um, donc c'est ça. Et maintenant, nous devons passer. Euh ah. Donc fondamentalement, maintenant, ce post, um, objet a un ah, un nouveau set off, off ou une liste hors des objets appelés éléments. Donc, voyons comment nous pouvons un peu comme, gérer cela sur le modèle réel, parce qu'il va à la page d'index. Une chose que je veux faire est que je veux avoir un h ref pour, um pour le titre du bloc afin que vous puissiez revenir à ceux de la page d'accueil. Vous cliquez dessus sur ce nom, et ce serait un peu comme un moyen de revenir à la première page si nous avons la pagination ici. Vous cliquez dessus sur ce nom, et ce serait un peu comme un moyen de revenir à la première page si nous avons la pagination Donc d'accord, donc c'est ça, euh et ensuite on va avoir fondamentalement besoin de changer les, euh, euh, les messages ici à la place. Hors poste. On va poster, on va passer des articles. Donc maintenant c'est le nouveau genre de comme si c'était juste une liste de gens qui sont dans cette page. Ok, euh et, hum, voyons voir ici. Hum, nous voulons avoir un maintenant, nous voulons avoir une pagination comme, euh, genre, disons, disons, ma nourriture ou droit, donc ce serait, Mettons-le ici sur, hum, près du fond. Et quand j'appelle ça le post paginé et c'est ce que ça va nous permettre de, comme afficher les pages précédentes et suivantes. Euh, et vous pouvez aussi faire d'autres choses plus anciennes ici, mais je vais juste rester avec les précédentes imposées. Donc, nous allons vérifier si les messages ont précédent ce qui est ce genre de fonction d'aide que l'objet de pagination a. Alors, euh, on va avoir ce qui suit. Si c'est le cas, je vais mettre ici, um h ref équivaut, um, page d'index Euro 4, et ensuite je vais passer. La page est égale aux messages. Numéro précédent prv numb. C' est donc automatiquement intégré dans les orteils. Mettez le numéro de la page précédente dans l'euro et ensuite on aura, hum, hum, pour aimer, petit comme nos flèches et tenir. Voilà, tu y vas. Et puis nous allons mettre des messages plus récents parce que ça va de plus petit, trop grand. Hum, et, hum, si on n'a pas, hum, nouveaux messages, ça veut dire qu'on regarde la première page. Alors on peut faire autre chose ici, hein, hein, Els et, euh, les gens qui d'autres ici pour que ça ressemble mieux à d'autres. Je vais juste afficher ce tex sans le lien hypertexte. Um d'accord. Et puis on a mis ah, petit séparateur ici, et ensuite je vais faire la même chose. Je vais copier et coller la plupart de tout ça, mais je vais changer un peu. Quel est viable ? On a vérifié. Donc maintenant, nous allons vérifier si les messages ont ensuite au lieu de précédent. C' est le prochain. Ensuite, on va afficher leur page d'index Euro 4, et puis ça va être le prochain engourdi, et je vais mettre ici des messages plus anciens parfaits. Alors qu'ils se soucient prend soin de voir si cela fonctionne déjà. Laissez-moi aller à l'administrateur, venez dans la page d'accueil et voyez cela en action. Parfait. Donc maintenant, je vois qu'il y a plus récent Post est Ce n'est pas le cas. Ce n'est pas hyperlié mais les messages plus anciens ISS. Et si tu vois le ton l ah, c'est Index, c'est aussi. Et si je clique là Wow, index touché deux. C' est ah slash à. Plutôt, cela fonctionne assez bien. Hum, donc et maintenant ont le nouveau post activé et, hum, hum, et les anciens messages désactivés. Ça veut dire que je n'ai que, disons quatre, non ? Oui. Quatre, hum, articles. Donc oui, ça marche très bien. Et, euh, nous allons juste la même chose pour l'administrateur. Ok, donc, euh, on va devoir faire la même chose. Une chose similaire ici. Donc on va faire la même chose jusqu'à la route. Ah, truc avec l'administrateur ici, et on va avoir une page, euh, égal à une onda. Enfin, je vais Pagine huit la même chose ici avec les messages. Et, euh, c'est tout du côté contrôleur. Voyons voir du côté de l'administrateur. Donc on va faire la même chose. Ah, peut-être l'année Treff. Vous êtes pour l'administrateur, et puis soufflez m'a amené ici, et nous allons avoir le poste soit les articles de poste, et je vais copier et coller le truc de pagination ici. Et on pourrait demander la moitié de ces trucs dans une macro. Mais, euh ouais, pour l'instant, c'est pour ça. Ici, euh, donc ça a l'air juste. Poster des articles. Oui. Et quatre le Yeah, a l'air bien. Alors essayons, hum si nous avons des erreurs et allons à la page d'administration et maintenant nous avons de l'imagination. Parfait. Donc, cela fonctionne très bien. Et si je clique sur le Oh, attendez, je mets l'index ici. Ça devrait être administrateur. Je me demandais ce qui s'était passé là-bas, euh, parce qu'il liait la page d'index à la place. Alors revenons en arrière. Recharger. Admin post plus ancien. Parfait. Mythiquement ici. Je suis emmené à la page d'accueil de l'administrateur. Impressionnant. C' est la pagination. Vraiment ? À nouveau, les gars. Vous n'avez aucune idée à quel point c'est dur si vous voulez le faire comme manuellement. Il y a beaucoup de travail que j'ai fait au fil des ans pour mettre en place la pagination. Donc tu vis dans un grand âge, , que les choses sont beaucoup plus faciles pour nous, et on peut se concentrer sur la construction des choses vraiment importantes. Donc c'est tout pour cette leçon. Hum, et, hum, la prochaine chose que nous allons voir est, hum, ajouter des photos pour les éliminer. Alors allons-y. 73. Installation de l'application Flask: Ok, donc maintenant, hum , dans ce , um, quelques leçons viennent. On va ajouter une photo ou une sorte d'image au post. Et pour cela, il y a une assez bonne bibliothèque pour que nous n'ayons pas à réinventer la roue ou à faire comme beaucoup de choses personnalisées que vous devez faire. Euh, parce que j'ai l'impression parce que j'ai l'impressionque c'est un problème qui a été très bien résolu jusqu'à présent, donc je n'ai pas l'impression qu'on devrait le faire manuellement. c'est un problème qui a été très bien résolu jusqu'à présent, Cependant, si vous voulez explorer ça, , c'est toujours une sorte de fonds pour essayer de le construire vous-même tout, comme l' image du processus de chargement et, vous savez, un peu comme, hum, gérer le fichier de la forme etcetera. Il y a des choses qui sont utiles à apprendre, mais, euh, euh, je ne pense pas que c'est un C'est quelque chose qui devrait construire à partir de zéro. En ce moment, je pense, euh, il y a de meilleures solutions là-bas et ah, au lieu de vous je pense, euh, il ya de meilleures solutions là-bas et ah, au lieu de vous concentrer sur, je suis concentrer sur, construire d'autres choses que ce n'est pas, euh, vous savez, l'image de chargement de la pièce ayant dit que, hum, habituellement ce que nous utilisons sur le côté plat pour les images est un bagage appelé chargement de flasques, et c'est vraiment bien. On va voir comment ça marche. Le seul problème était que ça ne fonctionnait pas avec Python 3. Et étonnamment, euh, l'auteur de ce paquet ou de cette bibliothèque a été un peu comme mon A et, euh, euh, travaillant sur d'autres choses et n'a pas eu le temps de continuer, euh, euh, mettre à jour ça. Et, euh, donc j'étais comme, tu sais, devrais-je juste, comme, construire à partir de tracteur ? Devrais-je essayer de l'utiliser toujours en utilisant python trois. Et donc ce que j'ai fini par faire, c'est que j'ai changé la bibliothèque avec, que je l'ai réparée pour qu'il puisse travailler avec trois. Et j'ai posté ça sur le ... Voici les changements réels. Un petit changement n'est vraiment rien de majeur, mais, vous savez, mais, vous savez, l'auteur ne l'a pas mis à jour comme je l'ai dit, donc je l'ai mis ici sur mon get hop. Et quoi ? On va le faire. C' est une bonne sorte d'exercice pour vous les gars, c'est qu'on va être en mesure d'ajouter cette bibliothèque sur les exigences. Txt utilisent une sorte de ah, obtenir un compte. Hum, que ce n'est pas la bibliothèque des gens habituels qui installent. Donc on va le faire, euh, et je te donnerai l'euro pour la bibliothèque. Ou tu peux le taper avec moi. Mais commençons à faire ça, accord ? Pour que nous puissions le faire, nous allons passer aux exigences ouvertes. Txt. Et à la fin, hum, ajoutons le tiret e suivant et puis l'espace obtenir la perte quitter le PS, euh, euh, obtenir une barre oblique point com à partir de zéro eu slash flasque uploads et puis, um hashtag un EG équivaut à des téléchargements de flasque. Donc ça dit aux gens que tu vas installer une bibliothèque, que ce n'est pas sur les gens principaux. Ah, dépôt. Mais tu l'arrêtes d'ailleurs. Et tant que c'est un get, hum ah, get repo. C' est très bien. Alors c'est là que je m'entraîne. Alors allons ah, installons ça. Donc, la façon dont nous faisons ça, euh, assurez-vous que vous avez votre envie au début permettre aux gens encore néerlandais, nos exigences txt Donc il est tout télécharger. Et maintenant, il dit qu'il a installé avec succès des téléchargements plats. Donc, quand il commence à configurer cela, Ok, donc l'étape suivante que nous devons faire est de l'argent pour ajouter des constantes aux paramètres trois y et voyons ce que c'est. Alors, ah, les paramètres soient Pourquoi ? Une affaire ? Nous allons ajouter ce qui suit, hum, téléchargés hors destination des images chargées. C' est essentiellement le chemin, euh, sur le serveur où vous allez télécharger les images lorsque l'utilisateur les téléchargera. Donc dans ce cas, remarquez que je vais utiliser mon propre chemin. Vous devez donc remplacer cela par votre chemin dans votre serveur. Et c'est fondamentalement, euh, voyons, flats blawg, euh, images statiques. Donc nous devons créer Ah, dossier pour ça dans le, hum, dans votre chemin. Droit. Donc, dans statique. Laisse-moi minimiser ça. Hum, donc on étudie bien, on n'a pas d'étude ici. Ok, donc nous devons créer ce dossier. Alors créons ah,un nouveau dossier. Alors créons ah, On va faire du statique. Et puis dans ce dossier, nous allons créer un nouveau dossier appelé Images. D' accord. Et comme vous vous en souvenez peut-être de la section précédente statique C'est un type spécial de, comme le répertoire pour flask. Où servez-vous ? Un peu comme, ah, ducontenu statique, comme des images javascript,ce genre de choses. Un peu comme, ah, du contenu statique, contenu statique, comme des images javascript, Maintenant, vous devez vérifier si vous êtes sur flash block, faire un PWD et vérifier que ce chemin ressemble à ce chemin. Et oui, vous pouvez voir ici est la maison une aubaine à l'espace de travail appartements, blawg. Et puis vérifiez également que les images statiques existent. Donc, vous le faites est statique. Vous faites un onglet. Alors que nos champs et puis des images afin que ce soit bien. Ça marche bien. Et puis l'autre paramètre est téléchargé les images. Tu es moi et dans ce cas, c'est comme ça que tu sers ces images. Et on va juste appeler ça des images statiques. C' est comme l'euro qui devrait préparer fin à n'importe quelle image que nous allons servir. Donc c'est ça, Hum, alors maintenant allons continuer et commencer à configurer le, um, le jeu de téléchargement sur le dedans. Donc maintenant, ici dedans, hum, on va ajouter des trucs ici. La première est de flasque, euh, uploads qui téléchargent, import off load set, peigne figures uploads et images. D' accord. Et, euh, sous Ah, voyez des chargements de flasque aller une virgule de la zone hors charge. Et ici, nous allons faire sur la section des images, et nous allons faire des images téléchargées égal à hors charge, déclencher des images, hors type d'images. Les images téléchargées par Eso définissent essentiellement le type d'images que nous allons être. Hum, nous allons être de chargement et comment le nom de l'ensemble, vous pouvez avoir plusieurs ensembles, comme, par exemple, des images. J' appelle les images de poste, mais vous pourriez en avoir un autre pour, comme, profils d'utilisateurs, et vous pourriez appeler ces profils. Et cela a essentiellement à voir avec où, euh, le système ils montent les appartements, téléchargent les magasins qui ont fait des données sur ce qui précède l'image. Alors la prochaine chose que nous allons faire est de configurer les téléchargements, et nous avons passé l'application et les images téléchargées Ah, viables que nous venons de créer. Alors la prochaine chose que nous allons faire est de configurer les téléchargements, et nous avons passé l'application et les images téléchargées Ah, Et c'est tout. Hum, donc maintenant la façon dont nous allons, hum, stocker que ces images seront sur un champ dans le modèle hors poste, et fondamentalement ce qui est stocké est l'image de chemin. Hum, donc faisons-le pour qu'on aille faire des modèles de sang des orteils. Et donc, tout d' abord, nous devons importer DB et maintenant des images téléchargées. Euh, et sur le, euh sur le , poste sous le corps que nous allons avoir sur le champ d'image et cette image va être une colonne DB . Ah, off type chaîne off. Je vais mettre 255 juste au cas où nous n'aurions pas besoin d'autant, mais ça n'a probablement pas de sens. Et puis sur le dedans, hum, je vais ajouter une propriété. Um, voyons ici avant ça, euh, avant le et en fait donc je vais en faire une propriété hors de ce record. Donc, il y a une propriété décorateur Cold et propriété signifie que c'est votre genre de création d'un de ces, comme l'image de corps de titre. Vous allez en créer un nouveau, mais que c'est calculé, euh, en fonction de votre enregistrement. Donc c'est un bon moyen de modifier le genre de, comme quoi ? Mais est retourné de l'objet sans avoir à, en fait, vous savez, n'a pas besoin d'exister où vous pouvez le faire à la volée et cette propriété que nous allons appeler source d'image. Donc, la source de l'image est ah, c'est une propriété de cette classe et ce que cela fait Il renvoie les images téléchargées. Votre l hors de l'image des disques. Euh, champ. C' est seulement une base de données. Donc, comme vous pouvez le voir, , il y a, hum, il y aura, comme des calculs faits parce que ça ne va pas juste retourner le, hum, juste l'enregistrement d'image, mais ça va passer par les images téléchargées, qui est une fiole. Chargements. Ok, donc c'est ça. Donc, nous devons maintenant faire une migration pour mettre ces choses changements sur la base de données. Ok, alors ouvrons le terminal. Et quand je fais python gérer heureux. Pourquoi DB migrer. Et, euh, voyons à quoi ça ressemble. Parfait. Nous avons donc généré 9 à 7. Donc c'est ce dossier juste ici. Vérifions ça. Et, euh, vrai, on a une image de colonne de poste ici, donc ça va être créé. Euh, et après la vie. vois, c'est un peu comme le bug dont on parle avec son auteur aussi, qui est comme si c'était toujours hors de lingots. C' est un peu comme s'il avait besoin de les modifier à nouveau. Mais encore une fois, ce n'est pas quelque chose qui affectera quoi que ce soit. Ce qui est important, c'est celui-là, qui est sur l'image. Une colonne va être créée, donc ça a l'air bien. Une colonne va être créée, C' est proche, euh et donc on va faire la mise à niveau vers la base de données. Donc par téléphone géré B Y d b Oh, génial. Parfait. Donc tout a l'air bien et Ah, donc maintenant on devrait pouvoir continuer, euh, notre travail et ça commence maintenant à travailler sur le post d'interviews. 74. Ajouter un message sur Blog image: Ok, donc, euh, avant de faire ça, pour n'importe quelle vue, on va aller aux formulaires parce qu'on doit ajouter ça au formulaire. Et donc la façon dont nous allons le faire est la suivante. Hum, nous devons ajouter une ligne Ils ici pour le champ de fichier que nous allons faire à partir de flasque wtf fichier d'importation, champ et fichier autorisés. Et, euh, sur le formulaire de publication, nous allons ajouter, euh , avant le titre, nous allons avoir une image qui va être un champ de fichier, et ensuite ce sera, ah, le nom du formulaire. Le hors champ va être une image. Et puis, les validateurs, nous allons avoir le fichier suivant Ah, autorisé pour que nous puissions réellement filtrer les types d'images que nous pouvons accepter. Donc on va faire des J piquets et des P et G pour l'instant. Euh, et puis, euh, le message d'air pour ça ne sera que des images. Et c'est proche. C' est parfait. Donc nous avons notre poste, euh, formulaire avec une nouvelle image. Euh, un peu comme, ah, terrain pour commencer, hum, faire accepter nos images. Donc maintenant, la dernière chose que nous devons faire est de commencer à travailler sur les vues de bloc, mais voyons à quoi cela ressemble sur le formulaire réel. Donc maintenant, nous avons besoin de l'orteil modifier la forme de bloc, non ? Alors qu'il dans le temple en fait le poste. Voilà, tu y vas. Pour que nous aimions ajouter, est-ce que le nouveau champ pour l'image ? Cependant, il y a un petit changement que nous devons faire pour que les formulaires puissent gérer les images. Le type correspondant doit être spécifié. Et ça ressemble à ça. Vous faites le type d'encodage, les données de formulaire en plusieurs parties. Maintenant, ce que cela signifie, c'est que, hum habituellement ce que fait HTML ou htp est plutôt que c'est ça ? Il a un séparateur. Et il est dit, de ce point à ce point, vous allez obtenir, comme, normale, Ah, Ah, champs normaux pour des données comme, vous savez, la catégorie du corps du titre comme les champs de texte. Et puis il y a une chaîne réelle de conception de séparateur qu'il recherche. Et puis, à partir de là, c'est une image, qui est un peu codée, um pour que le serveur puisse la lire. C' est ce que fait ce multipart. Donc et maintenant nous avons juste besoin d'ajouter à ce champ. On a besoin d'une image de forme. Parfait. Voyons donc si nous avons des erreurs. Nous n'avons pas d'air, alors rechargeons ça. Et maintenant j'ai une image. Euh, choisissez un fichier. Donc si je choisis de classer ici, ça dira, Oh, tu sais, lequel. Quelle image souhaitez-vous, comme, sélectionner ? Et que nous pouvons sélectionner n'importe quelle mission là-bas, et puis , euh, , euh,alors il sera envoyé avec le poste. Donc, nous allons travailler sur la façon de recevoir cette image réelle sur le post, et c'est sur les vues de bloc. Alors allons-y. Une chose que je viens de réaliser est que nous avons fait cette propriété pour la source de l'image, mais nous n'avons pas, en fait, euh, mis en place le, um, le champ d'image de l'unité pour, Hum, Whatchamacallit. Ils ont besoin d'une bonne liste. Donc nous devons allumer une image ici. Et donc on va faire l'image n'est pas égal. Cela signifie que si c'est si je veux dire, je veux dire qu'une image n'est pas passée. C' est très bien. Nous devrions toujours avoir le post de bloc créé. Donc, c'est une chose facultative une chose facultative. Donc, euh, alors après la catégorie eso est nécessaire. Donc après la catégorie, on va faire nous-mêmes. Cette image est égale à l'image. Donc cette image va être mise sur le pied ce, euh, donc cette vraie, vous savez, propriété. Et c'est en fait ce champ d'image ici, Ok, Ok, mais quand on demande la source de l'image, ça va être la valeur réelle que vous avez téléchargée des images ou des appartements. Donc OK, maintenant nous sommes prêts à commencer, euh, travailler sur la vue réelle. Alors allons à l'orteil, les vues bloguées, et commençons à travailler sur cela sur le formulaire de poste à l'étranger. Mais avant de faire ça, nous devons laisser quelques choses sur le dessus, hum, hum, de flasque. Ah, nous devons ajouter, hum, l'objet de requête ici. Et nous avons également besoin d'appartements blogués, importer des images téléchargées. Parfait. Hum, donc maintenant nous allons aller dans la section des postes et il a formulé sur soumission. C' est là qu'on va vérifier l'image. Ainsi, l'image est envoyée avec la demande. Donc, nous disons que les images demandent que les fichiers pour obtenir l'image. Ce nom d'image est le même nom de champ d'image que nous avons dit sur le formulaire. Et puis on va dire qu'il y a un nom de fichier qu'il va être réglé sur zéro. On va faire un essai ici, donc on va essayer quelque chose, et si ça ne marche pas, alors on fait un message flash. On va faire un essai ici, donc on va essayer quelque chose, et si ça ne marche pas, Mais, euh, donc nous faisons un nom de fichier égal, des images téléchargées, cette image sûre. Alors que les images, cette image ici et ce que les images téléchargées vont essayer est de l'enregistrer dans le dossier des images statiques . Et si c'est le cas, si c'est réussi, alors ça retournera ça à la famille. Et si ça échoue, alors on va dire flash. Ah, l'image. Ce n'était pas un ballonnement. D' accord. Et, euh, enfin ici sur le post, on va passer la catégorie suivante après catégorie, et ah, donc, hum, mystique ça. Ok, donc le ticket il y a des erreurs est jusqu'à présent, si bien. Ce serait plutôt excitant si on réussissait à faire fonctionner ça. Laisse-moi quand c'était un dossier. J' ai donc téléchargé le logo de la fiole ici sur le web. Donc voilà, et puis je vais mettre le titre est l'image flasque logo test. C' est notre premier test avec une image. Et, hum, laissez-moi juste allumer la console parce que je veux voir si on a des catégories d'années. Flask, et ça devrait être tout. Voyons ce qui se passe ici. Poste. Non. Aucune erreur n'a été signalée, et il semble qu'elle ait été publiée correctement. Donc, si nous voyons une image esthétique Oh, regarde ça. Nous avons notre flacon plus bas. C' est incroyable. Donc maintenant, nous avons le logo de la flasque sur le dossier sur nos images statiques, et je vais vérifier rapidement sur la base de données reçue que cela a réellement traversé. Alors voyons. Spectacle. Je veux voir si je suis au bon endroit. Oui. Donc, sélectionnez l'étoile à partir du poste. Hum, et je vois déjà ici image Fleiss, test local. Et je vois Fleiss. PNG. Ce doit donc être ce qui suit. Et cela signifie qu'il est passé correctement à la à la aux bases de données. Eh bien, si bon boulot. C' est incroyable. Donc maintenant, nous devons faire est que nous devons afficher ces images sur les articles réels, donc ça va être notre prochain, moins que ça 75. Voir l'article d'index image: Ok, alors allons-y. Et, euh, ça s'arrête de près. Euh, je pense qu'on se remplit encore avec beaucoup de robinets. Et c' est la première chose que je veux voir. Si je peux afficher est sur le réel sur l'index sanguin, hum, html. Et la façon dont je vais faire ça, c'est que je vais essayer ... faire en sorte que le, euh sur le poste, euh, je vais un peu, comme, séparer dans celui de comme, Dave. L' un sera pour l'image sur le côté gauche et l'autre pour l'image sur le côté droit . Donc on va faire ce qui suit. Donc ce raide, vois, on a Steve ici, donc on va dire, Post item et je vais appeler ça une rangée pour que, hum, hum, bootstrap sache qu'il y a une subdivision qui se passe ici, donc ils ont classe égale Col N d 9. Donc, ce sera la plus grande partie de celui-ci et de la terre et ça ici, et ils veulent faire un autre cours Dave égal appel dans les trois. Et cela ajoute jusqu'à 12. Et je veux dire si, hum, ils sont supposés image, alors faire la source d'image égale, et ici nous allons utiliser cette, euh, propriété source d'image que nous avons ajoutée sur le, euh, sur le modèle. Et je vais dire que la hauteur est égale à 60 pixels. Donc j'ai dit qu'ils se cachent à une constante, et quand je l'ai mis une belle classe hors de l'image pour laquelle est notre utilité de, euh, sangle émiettée. Et je pense que c'est tout. Parfait. Alors voyons si on voit ça, hum, là-dedans. Allons à l'orteil. La page d'index. Non. Et pour nous, Mason et quatre blocs dans un email sexiste. Non, je n'avais pas la fin de l'image du post. droite. Et si tu y vas, vois ? Ça a l'air bien. Hum, et l'image est très petite là-dedans. Voyez à quoi ressemble la source de l'image. Ah, il ne l'imprime pas. La source énorme est égale. Voyons voir ici. Oh, j'ai un genre. Sa source d'image. Voilà, tu y vas. Ok, essayons encore une fois et rien. C' est ce que vous avez payé source. Ah, des images statiques. Flacon. Ok, donc c'est qu'il me manque une barre oblique après ça. Et ça pourrait être à cause des paramètres B y. Je ne mets pas le bon. Vous êtes tous là, il semble qu'on ait besoin d'ajouter un euro après ça. Ah, cette définition. Donc, cette fois, nous devrions être bons. Voyons voir. Recharger. Et voilà. Enfin. Hum, donc ça a l'air vraiment sympa. Hum, c'est en fait, c'est beaucoup de caractère à la page d'accueil à la page d'accueil. Mais maintenant, nous n'avons pas l'image sur le post de bloc réel, alors corrigeons cela. Alors passons à l'article, poste. E-mail. Et nous allons ajouter le, um avant le titre du poste est à vérifier si l'image de poste et vous les gars. Maintenant, je comprends pourquoi je continue à faire cette fin près dans le bloc parce que j'ai beaucoup de problèmes parfois. Comme mettre fin à ces trucs comme j'ai oublié. Donc, je vais faire l'image source égale. Oups. Um, post des plaies d'image. Et puis je dirai la hauteur ici. Je vais le mettre un peu plus grand. 300 pixels en classe est l'image qui l'entoure. Parfait. Donc ça devrait s'occuper de ça. Voyons si nous avons dans les années pas d'erreurs. Donc maintenant je recharge ceci et je reçois une erreur ici sur la même chose. C' est la source de l'image. C' est une épave locale ? Ça fait ça. C' est bizarre. Eh bien, voilà. Ah, ça a l'air un peu grand. Je suppose que c'est parce que j'ai une plus grande taille. Je suppose que non. Alors mettons ça un peu plus petit. C' est un 150 pixels et voyez à quoi ça ressemble. Ouais, c'est un peu mieux. Tu peux jouer avec. Euh, mais ça a l'air de la violence. Et Ah, donc c'est tout. Nous avons notre, ah, ah, vue de l'article avec l'image et, euh, et on dirait que tout fonctionne parfaitement bien. Félicitations, c'est ça. Ah, c'est une grosse entreprise. Et, Ah, la prochaine chose sur laquelle on va travailler est, euh, on va faire l'édition du post, parce que parfois tu veux, comme après avoir sauvé un nautique, vous voulez être en mesure de l'éditer. Voyons comment on fait ça. 76. Supprimer l'article: Ok, donc maintenant on va faire, hum, à la fonctionnalité hors édition ou à la tête d'un post. Hum, et nous allons voir ça dans la vue de l'article. Alors essayons de commencer à faire ça. La première chose à laquelle je veux aller est l'article, um, modèle. Et je vais ajouter après le titre, um, um, un petit lien qui dit si session pas obtenir l'auteur. Non, c'est l'auteur. Désolé, il a une offre. Puis laissez-moi essayer et aller en voyage avec la fille pour l'avait post je d égal posté le donc je vais passer. Donc, cette, hum, route, que je n'ai pas encore créé un, euh ils ont posté le que j'ai déjà à partir du post lui-même. Alors qui ont édité ici, et ensuite j'en aurai un autre. Oui. Semblable à ça, qui est, euh, la ligue et, hum quelque chose que vous devriez , connaître à ce jour et à l'âge, stockage est si bon marché que il n'est pas logique de supprimer des choses. Ce que tu fais c'est que tu les marques, et je crois que je l'ai dit dans le passé. Vous marquez leur vie, drapeau ou leur statut comme étant faux. Donc, euh, parce qu'à la fin de la journée, quand vous quittez des enregistrements, vous pouvez affecter, euh, les relations, les clés étrangères, des choses de ça nature. Il est donc préférable que vous construisiez vos applications. Hum, basé sur non pas qu'il ne le pensait pas, mais plutôt les marquer comme ah, ce n'est pas la vie. Alors allons maintenant et construisons, euh, cette fonctionnalité pour éditer, euh, sur les interviews. Donc c'est ce que le leader. D' abord, parce que j'ai l'impression que, euh, on peut voir comment ça va marcher en général. Et puis nous ferons le, hum, l'édition. Donc pour la suppression, je vais faire ce qui suit, donc je vais faire une sieste route de l'élite, puis une dame de poste et post I D. Et je vais avoir auteur requis pour ça. Vous pouvez même frapper ça si c'est si vous n'êtes pas un autre. Donc la fin va avoir le post I d. On a besoin de ça. Ce n'est donc pas facultatif. Donc ce que nous allons faire, c'est que nous allons avoir post equals post query filter. I d égal post I d. premier ou 44 Donc, s'il ne le trouve pas, alors vous retournerez un 44 Si ce n'est pas le cas alors il retournera le premier. Donc je vais juste mettre post life est faux. Et puis je vais juste faire un commit, donc c'est vraiment simple. puis Etpuisje vais effacer l'article et le renvoyer à l'orteil. L' administrateur. Ok, donc c'était assez simple. Euh, une chose que je veux faire avant qu'on soit un peu comme ... euh, on peut attester. C' est que je vais, hum je vais ajouter quelque chose sur l'administrateur sur le html à une sorte de, comme montrer les articles qui ont été supprimés. Alors, euh, allons me bloquer le prochain email. Et donc je vais dire sur la liste sur le titre du post, Laissez-moi ajouter quelque chose ici qui dit, sinon post life, alors affichons entre parenthèses supprimé et ok, alors essayons de voir si nous travaillons. Euh, non. L' air est là, donc je ne veux pas laisser celle-là causer trop joli. Allons Ah, laissez le 1er 1 Ah, post je d connu. Oh, je l'ai eu parce qu'on n'a pas la fonction d'édition. Nature morte. Droit ? D' accord. Alors, Alors, qu'est-ce qu'on peut faire ici ? Enlevez-le, et ensuite on l'ajoutera ? Enlevez ça en toute sécurité et rechargeons. Ok, donc Ah, maintenant nous avons notre bouton de suppression ici. Donc, il est dit la tête quatre. Donc ça devrait être les quatre. Maintenant, laisse-moi aller à l'administrateur 11 2e et en fait, je vais augmenter le nombre, euh, hors articles parce que je veux voir plus d'articles sur cette liste. Donc, c'est celui qu'on va supprimer. Flacon. Vraiment incroyable. Donc je vais aller appuyer sur, supprimer et filtrer un argument attendu. Je d ah, Filtrons le filtre de requête de post par pas filtrer il ya rester. Essayons encore une fois. Le plomb. Parfait. Donc je reçois un message flash sont d'aller le chef. Et comme vous pouvez le voir maintenant, ce dernier article nous est montré le leader. Ok, alors que se passe-t-il quand je vais à la page d'index ? Maintenant ? Je vois toujours cet article flatté, vraiment incroyable, donc je dois m'occuper de ça. Et la façon dont nous le faisons est sur l'index. On va plutôt chercher tous les articles. Je vais juste dire, Donnez-moi , euh, donnez-moi les articles qui vivent sont vrais. Ok, donc maintenant si je recharge la page, je ne devrais pas voir ça en dernier. Et voilà. Voyez comment ça marche. Donc tu peux changer de marguerite. Vous pouvez voir ici. Il y a un premier filtre changeant puis ordre par, puis paginé. Ça s'appelle un changement de mer. Parce que c'est ah, vous pouvez faire des points et des points et connecter différentes opérations. Donc c'est critique. Génial. Donc ça marche bien sur l'administrateur. Je vois le poste et sur le site de vie. Je ne le vois pas. Alors maintenant, euh, voyons comment on peut faire la partie d'édition, ce qui est un peu plus de travail. Mais il ne devrait pas être si mauvais, parce qu'on va rajouter ça, hum, pas un truc. Moi qu'on avait ici. Où est-il ? Oui, ici. Et sauve ça. Et maintenant je vais avoir les vues que je vais modifier pour qu'il ne se plaint pas à ce sujet. Donc, je suis fier de lui, et puis la même chose et post i d. Et puis aussi nécessaire qu'ils sont éditer post. Je vais bien, alors, hum, voyons. On va devoir faire deux méthodes, deux méthodes, et c'est ce que je pense. Alors vous savez quoi ? Euh, peu comme s'en aller pour éditer un article. Je pourrais, euh , fondamentalement , euh , si vous lisez un article , ça veut dire que si vous cliquez ici et que quevous voyez l'article rendu, hum, si vous pouviez cliquer dessus, ça devrait vous emmener à une sorte de formulaire comme celui-ci, n' est-ce pas ? Mais avec les valeurs éteintes, il a rempli ici, cependant, je ne veux pas encore. Le principal sec, c' est ça. Vous ne voulez pas faire ces deux formulaires et créer un nouveau formulaire de publication et un formulaire de modification et maintenir ces deux formulaires. Et puis si vous ajoutez un nouveau champ, vous devez l'ajouter sur le formulaire à. Donc, c'est un peu comme pas très évolutif. Et, euh, et aussi non seulement évolutif, mais c'est juste contre, genre, vraiment beau développement. Donc ce qu'on va faire, c'est qu'on va utiliser le même formulaire que pour l'article, celui-ci, le formulaire de poste. Mais nous allons le remplacer par les valeurs de l'article si vous l'éditez et que vous allez , hum, les voir vides si vous créez un nouvel article un nouvel article sur la façon dont ils allaient dire au système, dont l'un des cas d'utilisation de l'outil que nous allons utiliser est de contourner quelque chose appelé une action. Donc, l'action est à elle, alors le type de formulaire de semblable rend l'en utilisant le même formulaire. Il rend le contenu. Et si ce n'est pas le cas, ce sera l'action égale nouvelle. Et cela signifie que c'est un tout nouvel article. Alors faisons ça ici. Donc nous devons d'abord chercher le post. Donc opposé filtrer la requête par. I d égal poste. J' ai dpoint en premier ou pour quatre. Alors regarde ça. Nous allons utiliser le formulaire le formulaire de poste le même formulaire. Mais regarde ça. Nous pouvons faire des objets égaux. Post objet est un peu comme une chose de construction qui forme la moitié. Et ce que vous dites ici n'est qu' un signe. Tous les champs sur le formulaire complètent les bonnes choses que vous obtenez de la base ce post, ils supposent celui-ci ici. Donc c'est assez utile, euh, et très puissant. Et il y a donc le formulaire formel validé. Mais on va sauter ça. Tu vois à quoi ça ressemble ? C' est quand il reviendra. Modèle de rendu. Um, les femelles d'affranchissement de journal mais que nous utilisons la même tentée il forme égale forme, et ensuite post égale post. Et enfin, l'action est égale à elle et voir comment nous passons le message là-bas. Alors voyons si ça marche. Laissez-moi aller à l'orteil sur l'article Arctic ici. Je vois éditer. Regarde ça. Donc, j'ai préchargé le titre, le contenu, la catégorie une chose que je suis je ne me souviens pas si nous avons besoin de passer le post. Hum, quoi ça ressemble ici ? Son image de forme ? Je ne suis pas sûr. Je sais pourquoi on ne l'a pas encore vu. Hum, donc la seule chose est que vous voyez comment l'image ici est comme, euh, peu, rend que c'était une nouvelle image. Mais que se passe-t-il quand j'ai une image ? Si je l'avais, voyez qu'il n'y a pas de flacon. Tout le logo flats n'est pas là. C' est un peu difficile à dire. Donc ce que je fais en fait, il est que je vais changer la forme pour que les images soient rendues. Voyons donc à quoi ça ressemble 77. Édition d'articles: Alors faisons quelques changements sur le, euh, euh, sur le post de bloc. Euh, ancien, euh et c'est ce qu'on va faire. Alors rappelez-vous, nous avons cette action égale Neil. Donc je vais dire que si l'action est nouvelle, alors faites l'impression suivante New block post, hum, factures imprimées, hum, hum, éditer Black Post. Donc, nous savons avec certitude que c'est ce que nous faisons et puis ça. Et, euh, nous devons aussi changer où ça a été envoyé. D' accord. Donc, au milieu de copier et coller là. Donc, si le bloc pose, si l'action est nouvelle, alors vous envoyez un post orteil. Ok, Mais si vous éditez, je veux vraiment que vous me le renvoyez, à l'édition et avec les idées de poste. Alors voyez, c'est les premières données de post que nous devons récupérer de ce post. C' est là qu'on passe le poste. Donc, pour ce modèle, je suppose que je suis égal à post, je pense et et Ok, et , euh, mettons ça ici. Parfait. Et la dernière chose est, eh bien, pas la finale. Donc nous avons deux choses. L' une est l'image, est-ce pas ? Donc, nous voulons rendre l'image s'il y a une image pour que l'utilisateur puisse voir Donc je vais dire si Post est passé et que l'image post est ex-président, alors pourquoi dois-je poster et poster l'image versus juste si poster cette image ? Eh bien, le problème, c'est que si Post ça n'est pas passé, hum, l'image de l' affiche va me donner ah, ça va aller, comme si ce n'était pas une erreur. Je ne peux pas gérer ça. Mais python a cette chose très intéressante avec if, qui est que si la première qui est que si la première expression est fausse, alors il n'évalue même pas le reste. expression est fausse, Et tu peux sortir de là. Donc c'est quelque chose de très utile pour vous les gars d'avoir. Et rappelez-vous ça , , si vous voulez avoir quelque chose que vous voulez voir, comme, oh, oh, est-ce que cet objet a une propriété dedans ? Mais vous n'êtes pas sûr si le si les objets vont être disponibles en premier lieu, vous pouvez faire ce petit truc si post ce n'est pas rapide et il sort et il ne lance pas d'erreur et puis il vérifie. S' ils sont supposés et qu'il s'est opposé à l'image, alors nous allons rendre l'image. Alors c'est ça. Et donc nous allons rendre l'image ici pour que l'utilisateur puisse voir quelle image il a à l'origine . Et s'il veut le changer de sorte que les sources d'image tracas poster une source de fusion. J' espère que j'ai bien orthographié celui-là. Je l'ai eu avec cet air là-dedans. Je croyais que c'était la correction automatique. Pour une raison quelconque, la classe équivaut à l'image autour d'elle. Mais quoi ? Vous n'avez pas encore vu l'image en dessous ? Parce qu'on avait un fond blanc là-bas. Mais c'est si on peut trouver une autre image plus belle. D' accord ? Presque fini. La dernière chose est cette soumission. Je veux que ce soit un peu pointilleux, mais je veux ah, dire si l'action est nouvelle alors, hum, affichez le bouton Toby Post. Et sinon, je voulais y exposer, et certaines personnes pourraient dire que ce n'est pas nécessaire. Hum, les petites choses vont loin. Ok, c'est ça. C' est tout pour le formulaire. Voyons à quoi ça ressemble. Donc si je recharge ici Ah, et que les amis de Dieu sont égaux, c'est l'un de ceux où vous devez juste regarder tout ça. Euh, quel est le modèle ? Méthode ? action de publication est égale à. Voyons voir ici, Euro 40 je vois. Voilà, tu y vas. J' étais que je ne fermais pas ça correctement, donc ça va, parfait. Alors maintenant, j'ai l'image, , pour que je puisse voir à quoi ça ressemble. C' est un peu proche de la chose, mais quoi que nous ayons le titre, le contenu de la catégorie détient qui fonctionne. Très bien. Voyons la source de la vue. Oh, alors attendez. Donc ajouté l'affiche de verrouillage. Vous voyez comment il maintenant le titre dit que sur les bols, et il dit mise à jour à la place hors post. Et voyons la source à voir à partir des idées qu'ils sont Yep. Donc yeux opposés où il va être envoyé avec le posté le égal à deux A. Parfait, hum, posté les égaux à huit. C' est intéressant. Je m'attendais à ce que ce soit, euh , juste, , juste,euh à ce poste mais comme je ne suis pas, je n'aime pas faire quoi que ce soit avec. Je suppose que l'Europe pour son Il le fait correctement. Quoi ? On verra ce qui se passe. Ok, donc maintenant, faisons le vrai, euh, travailler, euh, hors d'avoir le post et, euh, sur le montage. Ok, alors commençons le processus. Donc, euh, je vais dire que si le formulaire ne valide pas sur les passes de soumission, ils veulent dire que l'image originale est l'image de poste. C' est ce que j'ai sur le poste. Um, depuis le début, et puis je vais dire, euh donc je dois faire ce formulaire, remplir l'objet du post. Qu' est-ce que c'est que c'est ? Qu' est-ce que ça fait ? Donc fondamentalement, il charge le post Cet objet post que nous avions initialement là il le remplace par le contenu du formulaire. Et maintenant post a été modifié à ce que vous entrez sur le formulaire I D i e Si vous ne changez que le titre, par exemple, le nouveau titre Post doc sera ce que chaque mettre sur le formulaire. Mais le reste de l'information va être conservé à nouveau la même chose. Une ligne de sortie. Des trucs puissants. Normalement, vous devez faire beaucoup de contrôles. C' est que tu n'as aucune idée. C' est très désagréable, mais c'est super élégant. Hum, donc nous allons essayer de voir si l'image du formulaire a été déposée. Cela signifie que l'utilisateur a envoyé une nouvelle image. Alors je vais demander ces dossiers. Euh, ne comprends pas oh, image, ce qui est dit sur la partie multiple. Droit ? Et puis je vais essayer de le sauver. Donc nom de fichier Vous auriez dû voir ça avant, pas vrai ? Images téléchargées, ah dot enregistrer l'image. Et puis s'il y a une exception et, euh, clignotez l'image n'est pas téléchargée, ok ? Et enfin, si j'ai le nom complet, puis poster l'image équivaut à deux fondations. Parfait. J' ai donc besoin de vérifier, mais attendez. Hum, donc Mais si l'utilisateur n'a pas changé l'image, alors l'image de poste est égale à l'image originale. Et, euh, nous devons le faire parce que l' image de poste est, euh, elle va probablement être effacée puisque vous n'avez pas mis d'image de formulaire là-dedans. Et c'est un peu comme alors quel est le truc attendu ? Si vous n'avez pas choisi une image de fichier ici et que vous mettez à jour, je pensais bien, alors cela signifie que vous vouliez supprimer orteil, n' est-ce pas ? Mais je ne me sens pas à l'aise que je pense qu'il devrait garder la même image. C' est à toi, si tu veux. J' aime, supprimez-le. Si l'utilisateur n'a pas envoyé quelque chose ici, ou vous pourriez aussi, comme, avoir sur un lien réel là-dedans ou basculer comme Brady dans le dit l'image. Je ne sais pas, , il y a beaucoup de façons de le faire, mais ce que j'ai choisi de faire c'est, si vous n'avez pas choisi un fichier qui ne voulait pas dire que je voulais supprimer cette image. J' ai juste ça veut dire que rester avec la même image. Donc c'est ce que c'est cette ligne. Ok, euh, Donc je vais maintenant vérifier si de nouvelles catégories là, parce que cela signifie que l'utilisateur veut changer la catégorie et il veut la changer avec quelque chose de nouveau, comme s'il tapait le nouveau. Donc, après la certaine gestion là-bas, donc la catégorie est formée de nouvelles données de catégorie, et je vais session à cela, et je vais vider afin que j'obtienne l'objet de catégorie. Et, euh, je vais mettre la catégorie dans la catégorie des postes à la nouvelle catégorie. D' accord ? Et maintenant, je vais enfin envoyer tout ça à la base de données. D' accord ? Et revenez. Rediriger euro pour l'article slog est égal à post slug. Parfait. Donc plein de trucs. Toujours pas aussi compliqué qu'il l'était avant que deux choses se terminent, mais oui, il y a quelques vérifications que vous devez faire, surtout quand nous avons des images, ça devient un peu plus délicat. Mais, euh donc voyons, tout ça marche. Et avant qu'on oublie, oublie, on doit passer. L' action est nouvelle dans ce truc parce que, euh, on s'attend maintenant à ça. Donc, c'est sur ce est sur le sur le post sur la fonction originale, comme, post. Droit ? Alors jouons un peu avec ça. Voyons si ça marche. Alors pourquoi ne pas commencer par poster quelque chose de nouveau ? Voyez que ça marche. Donc, nous devrions avoir un post qui relie là. Donc, euh, je ne vais pas voler des images. Je vais juste dire que c'est, euh, l'article pour y mettre fin. Cet article, il est destiné à être testé avec edit. Fonctionnel. C' est le travail. Catherine de Python a posé. D' accord. Parfait. Donc ça a l'air bien. C' est un regal pour le lire pour aller à l'administrateur. Il est dit que l'image n'a pas été téléchargée, je suppose qu'il n'y avait pas d'image. Il est dit que l'image n'a pas été téléchargée, C' est un insecte. Ok, mais essayons d'éditer ceci dans cet article. Donc je vais éditer, je les ai là, y aller, donc je vais l'ajouter. Que dois-je ajouter ici avec chaque fonctionnellement cela fonctionnait parfaitement bien. Donc cette ligne que j'ajoute au contenu. Et je ne vais pas changer la catégorie ou le titre. Je veux mettre à jour. Ok, on a fait un insert. C' est intéressant. , Ok, alors pourquoi ça fait un insert ? Centre est au lieu d'une mise à jour, j'ai dû attacher quelque chose de mal. Vérifions. D' accord. J' ai vu quoi ? Ce que ce waas C'était parce que sur le formulaire pour le poste, il ne dit pas dans le poste, il devrait être envoyé à l'air. C' était donc juste en gros envoyer le formulaire entier à la, um à la whatchamacallit, la fonction post. Donc ça devrait réparer ça. Donc vous êtes oh, pour modifier Si c'est, ah, si c'est l'action égale ajoutée sur le nouveau si c'est correct, alors essayons encore, En fait. Je dois recharger ça. Alors voyons. Modifier. Cela devrait être mis à jour. Hum, et vérifions la source juste au cas où. Voyez où ça va être envoyé. Éditer neuf. Parfait. Ok, donc mise à jour parfaite. Donc ça a fonctionné. Donc, cela fonctionne parfaitement bien. Alors faisons le très dur, qui est d'éditer celui-ci avec un test de logo. Et, euh donc, allons juste un autre dossier. Donc j'ai ces, euh, l'épice sur le logo ici. Alors c'est le Lector. Euh, et essayons l'image de cinq journaux téléphoniques. Je change l'image et le titre. Ah, alors ça va être un changement. Alors mettons-le à jour. Oui, c'est génial. Je ne m'attendais pas à ça. J' essayais de Toby. Ah, sûr de soi, mais non, ça a l'air bien. Donc maintenant, nous avons le, um, ah, le local Python ici, et, et, hum et ça a changé les titres. Eh bien, donc ça marche parfaitement bien. Et c'est incroyable. On a fait beaucoup. Hum, et la prochaine section sera sur les tests, ce qui est super important, donc on se verra là-bas. 78. Introduction aux tests d'unité: Ok, donc nous sommes ici à la dernière section du cours, et c'est à propos d'une partie très importante. Off. Ah, votre carrière en tant que développeur Web est de créer de bons tests, et le test est une sorte de la compétence que vous apprenez presque généralement la dernière. Mais en fait, euh, après avoir appris à tester, vous allez probablement faire ce qu'on appelle le développement piloté par les tests. Hum, donc tu vas vraiment écrire des tests demandés. Vous écrivez votre code parce que c'est à quel point il est important que vos programmes testent vos applications que nous les construisons. Donc il y a des concepts de base qui, euh , qui sont applicables pour les tests que je vais partager avec vous. Mais fondamentalement, il y a un dicton, Ah, Ah, que je pense que c'est très vrai, ce qui est quelque chose qui n'est pas testé est cassé. Donc, si vous écrivez du code et que vous n'écrivez pas de test pour cela, vous cherchez essentiellement Oh, vous vous configurez pour comme, l'échec. Hum, et c'est parce que les tests sont si importants. Hum, certains des principaux concepts dans le test, euh, je dirais que le numéro un est de ne pas tester les choses qui sont externes à votre application Par exemple, ne testez pas la session Eva est définie parce que c'est quelque chose que vous n'écrivez pas. La pièce de réglage de session du code qui est intégré dans la fiole et la fiole de lin a ses propres tests pour le tester. Donc, vous devriez toujours vous concentrer sur tester des choses qui sont, euh, fondamentalement, qui se rapportent au code de votre écriture. La deuxième chose est, essayez d'écrire des tests qui couvrent toutes les utilisations possibles, y compris les cas de bord. Donc, vous devez être très créatif et trouver, vous savez,des savez, choses étranges que l'utilisateur pourrait faire. Comment votre application réagit-elle ? Donc, par exemple, um, sur le formulaire d'inscription a envoyé une chaîne qui a, vous savez, 1500 caractères pour l'e-mail. Est-ce que ce genre de, comme casser l'application ou non ? Ce genre de chose ? , La troisième chose,c'est de vérifier les 12 et les scénarios. Donc, par exemple, si vous avez un p I qui reçoit plusieurs entrées et que vous testez, vous savez, passer un élément dans ce charbon, alors testez avec quatre et puis, euh vous savez que le le troisième élément de cette liste est complètement garbage complet. Alors essayez de toujours tester avec, ah, vous savez, peu comme définir les scénarios où il y a plusieurs cas d'utilisation pour cela pour ce morceau de l'application. Hum, donc c'est à peu près tout. Hum, tu auras le coup de ça et tu auras un meilleur test. Ah, le mortier. Tu le fais. Essayons donc de mettre en place des tests pour notre bloc Fleiss. Donc, euh, la première chose que nous allons deux façons de créer un, hum, hum, un test à froid de fichier. Et c'est d'habitude, euh, où tu vas écrire tous les tests. Um, dans ce Um, dossier. Donc, créons ce fichier au niveau du bloc flash, et on va appeler ce test pourquoi ? Et pour les tests, nous utilisons généralement un test unitaire lyrique python. Donc nous allons utiliser ça une houle, même si, comme d'autres frameworks comme, ah, Django a son propre test Sweet. Mais c'est en fait, je crois que c'est une extension des tests unitaires. Mais pour les appartements parce qu'il n'a pas de test intégré, nous allons utiliser des pythons, ce qui est une très bonne bibliothèque. Alors commençons hum, mise en place qui est tombée. La première chose est nous devons tracer le chemin comme nous l'avons fait avec l'e nippy y et, hum, alors laissez-moi voir si je peux vraiment, um Oh, c'est dans le obligatoire. Pourquoi, c' est exact ? Donc je vais juste copier et coller ceci parce que nous avons besoin du même genre de définir le chemin pour le, um, um, pour ce fichier afin qu'il sache que c'est où il se trouve et quel est le répertoire relatif. Donc on va importer des tests unitaires. On n'a pas besoin d'installer de paquets pour ça. Nous importons aussi l'alchimie de la suite, et, euh et nous allons importer la suite flasque Alchemy. Um, bibliothèque. Ok, euh, alors à partir du flasque blawg, nous allons importer l'AP et la DB jusqu'à présent, si bien. On doit importer tous les modèles. Alors faisons ça à partir des modèles d'auteur, Import star et des modèles Blawg, Imports star. Alors faisons ça à partir des modèles d'auteur, Import star et des modèles Blawg, Donc on va, euh on va aller et commencer à regarder quoi ? Le format hors test et utilise généralement une classe dans cette classe. Ça dépend de ce que vous testez, mais dans ce cas, on va faire ? Ça dépend de ce que vous testez, mais dans ce cas, Euh, surtout, hum, des tests en bloc. Ah, pour le côté utilisateur, même si on va faire des tests de blawg pour le côté utilisateur, même si on va faire des tests de blawg. C' est bien, mais ils regroupent juste tous dans une classe, et vous pouvez faire plusieurs classes aussi. Mais faisons ça avec vous, monsieur. Test. Donc nous allons appeler le test utilisateur, et ça doit être un cas hors test d'instance, qui est dans, hum, hum, test unitaire. , La première chose qu'on va faire,c'est qu'on va avoir une mise en place et une déchirure, mettre en place et déchirer nos sont essentiellement, euh , genre,des genre, sections de ce cours. qui sont toujours appelés au début et à la fin chaque test, hum, hum, et fondamentalement mis en place impliquera Rob. peu comme créer un vase temporaire. Donc, nous n'utilisons pas réellement la production que je base pour le qui échappe à la principale que j'ai basée. Nous créons un nouvel ultra, celui-là pour que nous puissions, euh pour que nous puissions créer et détruire ce que je base comme un test. C' est comme ça qui arrive, alors voyons comment on va faire, on va, euh on va mettre votre oeil pour ça. Et, euh, donc je vais faire plus ou moins la même chose que j'ai fait avec le décor. Trois. Pourquoi, hum, ce qui est, ah, important. Le nom d'utilisateur, le mot de passe, l'hôte TV et cette chaîne. Alors, hum, c' est à travers ça. Donc on va appeler ça le Donc on va avoir, hum appelons ce bébé. Utilise son nom égal, et on va lire la config. Cette, um, cette valeur hors du nom d'utilisateur B dans l'application dot com fig ah, tableau. Donc maintenant, nous sommes qui ont BB. Ah, mot de passe. Et on va avoir l'hôte. Donc, toutes ces trois valeurs, comme vous pouvez le voir, sont ici. Ah, nom sournois pour être mot de passe et animateur télé. Nous n'avons pas besoin du nom de la base de données blawg parce que nous allons créer notre propre genre, comme test, um, um, base de données ou base de données de blogs. Donc maintenant on va passer ces boules de feu ici, ils seraient utilisés son nom le mot de passe B et l' animateur télé. Non. D' accord. Et on va sortir ça, et en fait, on et en fait, onne va pas passer le nom de la base de données ici. Ok, donc maintenant, allons mettre en place le, euh, eh bien, nous devons venir craindre quelques paramètres liés aux tests, et l'un d'eux s'appelle ah Testing. Et nous devons passer cela comme vrai. Et cela dit flask automatiquement flask et lire ce drapeau test et savoir qu' il est en cours d'exécution sous un, um, un mode test. Et ce genre de genre désactive une partie de la vérification et vous pouvez en lire plus à ce sujet . Hum, en ligne, mais c'est comme si ça disait à l'application que ça va Winston elle a mangé que c'est un test doux et ordre. Une vraie application que je pense que nous devons faire est de désactiver CSR f pour WTF parce que nous allons simuler un peu comme c'est le peuple, mais nous ne voulons pas vérifier cela. Le que le CSR f parler est un clou parce que ce n'est activer que quand, quand, quand vous faites réellement cela via un navigateur. Donc, nous voulons mettre cela dit aux chutes. Donc maintenant, disons, Ah, nous allons appeler le nom de la base de données pour être, hum, Test Blawg au lieu de Blawg et ah, enfin, nous allons passer cette configuration 2. La suite Alchemy, que je base votre I et c'est le droit DVU que nous avons sur le dessus plus config Log évidemment. D' accord, jusqu'à présent, si bien. Maintenant, nous devons créer un moteur, qui est fondamentalement une sorte de comme une suite. Instance d'alchimie. Maintenant, nous pouvons parler à Do you be you is I. Et puis nous nous connectons avec ce moteur et nous exécutons un commit pour que s'il y a quelque chose sur la session qui ressemble à Aisling, il est effacé, et ensuite nous Je vais créer un vase avec ce nom de base de données de sang. Enfin, nous faisons un créer aussi que toutes les tables sont créées et nous avons fermé la connexion. Donc c'est un peu comme créer la base de données, euh, par programme pour nous. Et enfin, il est là où nous Au lieu de cela, elle a fait l'application, et ça va nous appeler un client de test, donc je sais que c'est beaucoup de choses bizarres, mais vous aurez le coup de main. C' est Est-ce que vous devez toujours le faire pour que vous puissiez, comme, copier et coller tout cela et l'utiliser à chaque fois sans aucun problème ? Hum, et ça va toujours être un peu comme un modèle similaire pour les tests. Ok, donc maintenant on va faire le, euh, euh, la déchirure, ce qui est fondamentalement le contraire de la mise en place. Il est en train de supprimer la base de données et de fermer la connexion, et cela va en fait supprimer complètement le plomb de cette base aérienne. Donc, à la fin, c'est comme si rien ne s'était passé. Donc nous allons commencer avec Devi session, supprimer, supprimer, et ensuite nous allons créer un moteur que nous avons fait. Euh euh, précédemment. Et c'est fondamentalement les mêmes commentaires comme celui-ci, et donc nous allons faire une connexion égale au moteur Connect, et nous allons exécuter un commentaire. Et, euh, nous allons abandonner la base de données, donc et enfin nous fermons la connexion. Parfait. Jusqu' à présent, si bien. , Alors maintenant,commençons à créer le, um le test réel et le premier test que nous allons faire est de créer un blawg et de vérifier que c'est ah, il est créé correctement 79. Créer un test blog: Ok, donc je vais, hum, créer une fonction pour créer blawg, et fondamentalement, je vais le faire comme une fonction initialement ou dès le début, parce que je vais devoir à chaque test, Je vais devoir créer le bloc. Maintenant, dans chaque test que vous exécutez, il va en quelque sorte passer par la mise en place, démolir, et fondamentalement, vous allez en quelque sorte , créer à une base et détruire la base de données à chaque fois. Pourquoi ? Parce que chaque test est fondamentalement un peu comme votre test une autre partie ou une partie différente de l'application. Donc vous voulez commencer à partir d'une ardoise propre, euh, et créer le bloc. C' est comme si tu avais besoin de le faire à chaque fois. Donc je vais séparer évaluer son propre genre de fonction interne que je peux appeler à partir de ces différents tests. Alors faisons ça. Et quelque chose que vous verrez très intéressé ici est comme si nous allons simuler comme si nous étions un peu comme poster sur une partie de l'application. Et la façon dont vous faites cela est à travers le mécanisme de test interne ou le système, vous pouvez simuler, obtenir et poster la requête http alors sortez-le comme nous écrivons ceci. Donc on va fondamentalement super bloc va revenir. Ah, un post d'application à la mise en place et et voir ici comment nous avons mis en place comme c'est un peu comme un votre l um alors ça va vraiment, genre , , frapper cette barre oblique mise en place pour simuler la création de l'hors du bloc. Maintenant, une chose que vous pourriez demander. Et je crains juste ça parce que pendant que je tape ça, pourquoi ne pas utiliser votre 4 ? Et en fait, c'est une sorte de chose intéressante. Je n'avais pas pensé à ça. Alors, hum, faisons-le juste avec la mise en place. Remplaçons ça par la fille pour l'installer et voyons que ça marche. Mais en tout cas ici, alors vous nous passez un dictionnaire. Les choses que vous devez poster pour configurer pour créer la base de données et ces choses sont nom , hum, mon test blawg. Et puis vous avez un nom complet, et je vais utiliser ah, Jorge Escobar et email. Um, utilisez son nom, mot de passe et confirmez, qui est le mot de passe de confirmation, où nous devons entrer le mot de passe deux fois. Et, euh, je vais passer ce drapeau froid. Hum, tombez dessus. Les redirections sont égales à true. Maintenant, si tu ne passes pas ça, alors ça va frapper ce, euh, fondamentalement, ce , point d'entrée ou ton itinéraire, mais ça ne suivra pas quoi que ce soit s'il y a une redirection de retour ou quelque chose comme ça. Donc, nous voulons vraiment suivre ces choses. Donc, Donc, on veut vraiment un orteil, comme suivre, comme suivre, parce qu'on va probablement, comme, comme, capturer ou tester ce qu'on a obtenu de ça, Euh, de ce poste. Donc c'est ça, Hum donc maintenant on va créer notre premier notre premier. C' est un test. Voyons comment on fait ça. Ok, donc le premier test s'appellera test sur le score. Créer un bloc quelque chose de très important ici. Les tests commencent toujours par le test, soulignent quelque chose, et c'est ainsi que vous dites le test unitaire. Euh ah. Système que c'est ceci est en fait un test que vous allez exécuter et vous verrez que tout ce que le test qui était juste, um va commencer par des tests sur le score. Comme vous le remarquez. Créer du sang ne commence pas par le test. Donc ce ne sera pas Rhône automatiquement par la suite de tests. Hum, et c'est pour çaque nous ça créons cette fonction d'aide sans le test sur le score du début. Donc ce que nous allons faire est que nous allons capturer demandé la valeur de retour RV hors de cette fonction auto-créer du sang, et , euh, donc la base ou ils savent le genre de noyau de chaque test est d'affirmer que vous avez une valeur spécifique ou une chaîne spécifique ou une donnée Pacific, um, dans cette opération que vous faites. Donc, dans ce cas, je vais affirmer que blawg créé a été retourné dans la chaîne A de ces données RV. Donc Ivory Data va stocker les données sur ce résultat supplémentaire comme p. Et parce que nous sommes en train de suivre le vrai Rex est vrai. Cela signifie que les données que tout ce post que nous faisons a bloqué, créé, créé, et comment puis-je savoir que le sang va être créé dans ce, hum, dans ce retour ? Eh bien, si nous voyons les vues B y du blawg sur la mise en place. Donc on est piégés. , Vous voyez, le livre flash créé ici, mais après la redirection, il redirige l'administrateur directement dans l'administrateur. Il y a un flash. Alors vérifions ça deux fois. Euh Ah. voyez, nous avons les invités flash qui reçoivent des messages que le sang créera sera sur l'administrateur, euh, pour après la création du sang. Donc ça va marcher si le si le si le test fonctionne correctement. D' accord. Enfin , Enfin , avant de lancer ça, on doit avant de lancer ça, on doit gérer le pourquoi ou l'unité. gérer le pourquoi ou l' l' Pourquoi est-ce que nous avons eu dans le passé ? Nous devons vérifier si le nom est égal à main, qui est un peu comme OK, si cela est exécuté par le dans le terminal, puis exécutez les tests unitaires dot main, et c'est fondamentalement unité. Ce principal va appeler, euh, le premier test qu'il trouve, qui va être créer un bloc. Mais avant qu'il ne s'exécute, c'est quand j'ai , genre, créé que je base toute la base de données, ce truc de configuration, alors il va tester la création du blawg va affirmer que les données du RV qui est retour sur le sang créé est face là, et puis il va passer par déchirure qui est en fait le vivant de la base de données. Voyons comment ça marche quand on court. Ok, donc nous allons maintenant faire le goût, le test, et nous allons le faire à travers le terminal, donc assurez-vous qu'ils ont votre environnement de véhicule installé et allumé. Et cette année-là dans la racine, euh, hors de l'application. Laissons l'écran et ah, c'est un bon. Laissons l'écran et ah, Et on va tester ça. Donc python teste P Y vous ne pouvez pas importer l'alchimie de suite. Pas de suite. Très bonne suite. Alchimie. C' était difficile à attraper. Ok, alors essayons encore. Effacer, puis par téléphone. C' est b y ne peut pas être connecté. Nom ou service ? Non connu. Ok, on dirait que notre base de données n'est pas en cours d'exécution. Ah, Contrôle. C c Non, il a l'air de ce que c'est en quelque sorte. Je pense que c'est sérieux. Sérieux. Ici. Test blawg. Je suppose qu'il nous manque un euh ouais, il nous manque une, euh, une barre oblique. Ok, alors voyons ici auto être Oh, me manque un traînant, couper leur poubelle cool. Donc, nous allons éclaircir et réessayer le test que je suis sexiste. Oh, d' accord. Alors maintenant que cela existe toujours. Donc nous devons le laisser tomber avant de pouvoir le refaire parce qu'il semble qu'il a été créé. Donc, si on montre la base de données, oui, oui, je vois des tests qui s'y bloquent. Donc, abandonnons le test de base de données sur le score. Blogged. D' accord. Et essayons encore une fois. Le sang échoue l'a nettoyé. Ok, donc c'est une affirmation, Eri, ce qui est bien. Cela signifie que maintenant tout le processus est en cours d'exécution. Si vous voyez cela, qu'une base ici, vous verrez que le bloc de test n'est pas là dedans. Cela signifie qu'il a été créé, puis il a été banni ou abandonné, comme nous l'avons fait sur le script. Mais il dit que le bloc créé il n'est pas sur le flux de retour, et nous devons comprendre cela. Donc, une astuce que je fais est d'imprimer les données du RV pour voir à quoi cela ressemble. Et, euh, et puis nous pouvons, genre , vérifier quelle est la sortie de cette fonction. Donc nous allons recommencer et en fait maximiser ce parent de mixage, hum, hum, en utilisant python à Okay, c'est 434 milliards. Euh, hein. Donc ça veut dire qu'en quelque sorte nous vérifions que, hum, que l'utilisateur a Non, , c'est non, ce n'est pas le réglage de l'auteur oriental, hum, réglage. Alors voyons ici. Donc, si je vais admettre qu'il dit auteur requis, mais quand je mets en place, voir ici, coup créé s donc je suppose que je ne me connecte pas, Donc il m'envoie à l'administrateur. Quoi ? Je n'ai pas encore regardé. Donc c'est le genre de choses que vous allez découvrir quand vous ferez vos tests. Euh, alors voyons, comment pouvons-nous faire ça ? Donc, comme je pensais, plus à ce sujet quand je vais le faire fait fait plus de sens, est après que les blogueurs créés pour envoyer l'utilisateur à la page d'index, puis afficher l' utilisateur ou la chaîne de sang créée dedans. Donc, mais pour que je le fasse, , je vais devoir afficher des messages clignotés ici et l'autre le seul endroit où la moitié des messages flash en ce moment est sur l'administrateur. HTML. Donc ce que je vais faire, c'est que je vais convertir ça en un pour être une, hum, une macro, et ensuite je peux le démarrer n'importe où j'en ai besoin. Donc je vais attraper ça et créer un nouveau, euh, nouveau modèle de classement, et je vais l'appeler sur le score des messages flash point html et dans les messages flash. Je vais avoir cet extrait de code. Donc, euh, je vais sauver ça. Et puis je vais entrer ici. Je vais avoir, euh, essentiellement insérer les, um, les messages flash. Donc pour cent, hum, inclure des messages flash, la porte html. Et quand ils font la même chose sur la page d' index, index, c'est joué. Ici. Oups. Voilà, tu y vas. Alors maintenant, nous allons voir si cela aussi la dernière chose n'est pas Alors quand je crée le blogueur, je ne vais pas les envoyer à l'administrateur. Je vais l'envoyer à la page d'index, puis ils auront un lien de journalisation sur cette page, donc cela devrait fonctionner. Essayons une fois de plus et lançons le test. D' accord. Impressionnant. Alors voyez, et maintenant avoir le « This is the age steamer « Laisse-moi et je le regarde et il dit, Ah, messages de classe. Du sang créé. C' est une chaîne que nous avons renvoyée. Alors quoi ? Au lieu de, hum, je ne veux pas voir tout ce vieux genre de je ne veux pas voir tout ce vieux genre dedonnées HTML. Je vais juste, genre, genre, supprimer ça pour que tu vois à quoi ça ressemble et que l'écran soit effacé et recommencer le test . Parfait. Donc, quand vous voyez un petit point, cela signifie que cela a exécuté ce test, et il dit Exécuter un test. Ok, donc c'est le premier test et ça a été passé, alors continuons à construire sur le dessus. 80. Tests utilisateurs: Bon, maintenant, écrivons notre prochain test. Je vais laisser ce Toby juste ça, cette seule chose et je vais commencer à tester, à déconnecter et à me déconnecter. Donc c'est notre prochain test, et je vais d'abord faire ce qui suit. Je veux créer blawg parce que j'ai besoin de créer le bloc à chaque fois. Et maintenant, je vais faire un droit de journalisation. Donc, je vais me connecter moi aussi ce que j'ai besoin pour créer ce dysfonctionnement. Donc, je vais créer une autre fonction d'assistance de fonction, parce que je vais devoir me connecter assez souvent et me déconnecter aussi. Donc je vais créer ces d' fonctionsd' aide. Donc, laisse-là la flagellation va avoir On va passer un nom d'utilisateur et un mot de passe, et je vais retourner le post hors barre oblique à nouveau, qui est un dictionnaire de données désactivé. Um, utiliser son nom est égal à nom d'utilisateur et mot de passe est égal à mot de passe et puis, ah, comme avec elle avant de suivre redirections est égal à vrai. D' accord. Et puis la même chose. Je vais avoir une fonction locale parce que je vais probablement appeler ça beaucoup. Et celui-ci va juste avoir, tu sais, paramètres et je vais juste revenir. Soi. Hum, j'ai raté une application ici. Self post application, en fait je peux faire juste pour obtenir parce que je n'ai pas besoin d'envoyer des paramètres. Et pour les redirections est égal à vrai. Parfait. Alors maintenant, euh, essayons de vous connecter avec, hum, Jorge et test, qui est le yusor que nous avons créé ici sur le blog sur créer. Et nous allons affirmer que la ficelle que vous avez enfermée, monsieur Jorge, parce que c'est ce que nous montrons quand ça sera exécuté. Alors essayons ça. Affirmez que je ne reçois pas l'utilisateur Jorge, regarde. D' accord. Pourquoi ? Alors voyons ici. Hum, il devrait exécuter la fonction de journalisation ici. Non, en fait, je ne reviendrai pas. Je ne fais pas de message flash quand je me connecte Ah, à droite. Donc, faisons une mesure flash lorsque l'utilisateur se verrouille correctement. Donc je vais le faire ici. Faites clignoter, monsieur. Pourcentage est enfermé, et je vais le faire avec ah, nom d'utilisateur de formulaire. Ils et, hum ça devraient envoyer ça à l'espace d'index où nous avons les messages flash là-dedans. Essayons donc que le flash n'est pas défini ou nous n'avons pas de flash ici. Donc, de flasque importation flash. Ok, donc une fois de plus. Parfait. Ce soir, ça marche correctement, donc tu peux voir que c'est comme si on donc tu peux voir que c'est comme si ons' assurait que, hum,il y a une sorte de signal dans le dans le sur les commentaires de cette opération. s' assurait que, hum, il y a une sorte de signal dans le dans le sur les commentaires de cette Dans ce cas, nous utilisons des messages flash, et nous devrions toujours tester et communiquer à l'utilisateur. Quoi ? Que vient de se passer ? Mais bien sûr, vous pouvez tester toutes les choses dans les données RV qui vous permettent de, um pour obtenir le signal que cette fonction fonctionne correctement. Alors essayons un autre. Nous allons tester la déconnexion, et nous allons juste vous faire regarder dehors et nous sommes en affirmant que l'utilisateur a regardé, est dans les données. Et comme la seule Inde, nous devons envoyer ce message flash quand nous regardons ici. Alors regarde dehors. Flash User a regardé. Disons que c'est parfait. Donc, disons qu'il est dit location que deux tests, euh , fondamentalement, chaque test est que c'est chacun d'entre eux. Donc il y a ce test numéro un, et ce test numéro deux. Peu importe combien de sous-types faisaient dans chacun d'eux. Bon, Bon, on essaie de bonnes choses, comme des choses qui ne vont pas échouer. Mais essayons quelque chose qui échouerait. Par exemple, euh, la mauvaise utilisation et même le mot de passe. Voyons comment on fait ça. Donc nous allons faire un seul coup de foudre avec le nom d'utilisateur Jorge et le mauvais mot de passe. Hum et ensuite on va affirmer qu'on a cette ficelle ici. Ah, dans le nom d'utilisateur et le mot de passe du cordon. Alors essayons de faire ça. Parfait. Donc, vous pouvez voir que nous sommes un peu comme, construire lentement toutes les choses que nous avons écrit et tester sur lesquelles ils travaillent. Le beau, disent-ils, c'est que chaque fois que vous continuez à construire votre application, vous allez construire un nouveau test pour les choses que vous construisez. Et vous pouvez être sûr que votre application ne va pas casser. Et c'est comme un grand sentiment à avoir, parce que cela signifie que votre application est forte et que vous n'aurez aucun problème de quelque nature que ce soit. 81. Projet final: félicitations pour avoir terminé le cours. C' est Ah, il y a eu un tour. Vous avez appris à partir de zéro le langage python et, ah, vous savez,des modèles logiciels comme le décorateur et la NBC. Vous avez appris à partir de zéro le langage python et, ah, ah, vous savez, Hum, et vous avez construit une application assez, hum, hum, complexe comme le ferait notre développeur web professionnel. Donc, vous savez, définitivement. Vous devriez vous sentir fiers de vous-mêmes. Et c'est ah, c'est un grand sentiment de commencer à apprendre tout ça. Et bien sûr, c'est comme le début. Vous devriez continuer à essayer des choses, des applications de construction sonore, et je me sens vraiment libre de les partager avec moi. Je vais Ah, attends avec impatience vos créations. Um, en tant que projet final de test, j'aime donner à mes étudiants, et si vous ne le faites pas, les autres cours que je fais, j'ai toujours ce test final ou le projet final Ce genre de test votre et voir comment vous avez pu obtenir toutes les, um toutes les leçons que cette malédiction a. Et ce que je voulais faire est d'utiliser, euh, fondamentalement le même type de format dans, hum ah, le blogué pour être en mesure de faire des commentaires sur chacun sur chaque post de bloc. Alors rappelez-vous comment nous avions cette fonction d'enregistrement sur les vues de l'utilisateur, Um, où nous n'avons rien fait avec. Mais je veux que vous soyez un peu comme, permettez à un utilisateur de s'inscrire et ensuite pouvoir poster des commentaires sur chaque message de bloc. Et, euh et ce serait le projet final. Complétez ça. Je veux que vous écriviez des tests pour ça aussi, et ensuite , ah, partagez avec tout le cours et tous les étudiants ici, hum, sur un dépôt git pour qu'on puisse jeter un oeil. Je vais jeter un oeil. Je vais télécharger le code et l'exécuter sur ma machine. Et si c'est bon, alors je le ferai. peu comme une reconnaissance publique de ça. Et je vais aussi aimer l'offre, euh, euh, coupons très réduits pour mon prochain cours, euh ah. Mes cours sur python et d'autres, hum, un autre, comme front end et, euh, et d'autres choses que j'ai en tête. Donc Ah, définitivement. Je veux que vous preniez ce défi et que vous nous montrez ce que vous pouvez faire de ce que vous avez appris jusqu'à présent. Tellement super boulot. Et , , espère que je te verrai bientôt dans mon prochain cours