Transkripte
1. Einführung: Hallo und herzlich willkommen von Null zu Flasche. Mein Name ist Jorge Escobar und habe in den letzten
10 Jahren professionelle Python-Anwendungen entwickelt und möchte Ihnen jetzt von Grund auf beibringen, wie man Kolbenanwendungen mit den
Techniken, die in realen Technologieunternehmen verwendet werden, baut . Flask ist mein Lieblings-Python Web-Framework. Ah, Framework ist eine Reihe von Bibliotheken und Tools, um die Web-Entwicklung einfacher und effizienter zu machen da es alle Funktionen, die von der Mehrheit der Anwendungen benötigt werden. Und lasst uns, die sich auf die kreativen Teile konzentrieren. Am Ende des Kurses werden
Sie eine Python-Flasche gebaut haben, die eine Vase angetrieben persönliche Blogger-Anwendung mit den Techniken, die ich Ihnen zeigen werde. Sie müssen auch ein brandneues Feature entwickeln, das die Konzepte verwendet, die Sie im
Kurs gelernt haben . Der Kurs beginnt mit den Grundlagenkonzepten und baut sich langsam in Bereiche wie
Datenbankgrundlagen auf. Aufbau der oder in Modellen, Vorlagen, Bildverarbeitung und sicher gebildet das Zeichen. Es gibt viele Wohnungen, Kurse und Tutorials da draußen, aber dies ist der einzige Kurs, um den professionellen Ansatz zu nehmen, den ich in allen meinen Kursen verwende. Also, wenn Sie bereit sind, Ihre Reise von Grund auf zu beginnen, um ein professioneller
Web-Entwickler zu werden , kommen Sie zu mir. Wir sehen uns im Kurs
2. Roadmap und Anforderungen: In diesem Kurs lernen
Sie die Grundlagen der Kolben kennen. So isolieren Sie Ihre Abhängigkeiten mithilfe virtueller Umgebungen. Dann gehen wir über Routing-Vorlagen, Sitzungen und Datenbankmigrationen mit einer einfachen Seitenzähleranwendung. Wir werden dann eine Blockpublikation mit Autorenregistrierung,
Protokollierung,
Post Block Artikel Hinzufügen von Fotos,
Paginierung und Bearbeitung,
und die führenden Beiträge in jedem Schritt der Art und Weise erstellen Protokollierung, Post Block Artikel Hinzufügen von Fotos, Paginierung und Bearbeitung, . Wir werden Komponententests für jede der Blockfunktionen schreiben, genau wie professionelle Entwickler es tun. Was brauchst du also, um diesen Kurs richtig zu lernen? Zuerst müssen
Sie ein grundlegendes Verständnis von der Python Sprache haben. Ich habe einen ausgezeichneten Kurs dafür, der von Null nach Python aufgerufen wird. Aber wenn Sie die Grundlagen der Python Sprache kennen, reicht
das aus. Zweitens: Richten Sie eine Entwicklungsumgebung ein. Wir haben zwei Möglichkeiten in diesem Kurs. Sie können Python in meiner Fortsetzung lokal auf Ihrem Computer installieren, oder Sie können den Kurs mit einer Online-Entwicklungsplattform verfolgen, auf der Sie von überall aus in der
Cloud codieren können . Und drittens müssen
Sie sich leidenschaftlich darum bemühen, die professionelle Art und Weise zu erlernen, wie man
Softwareentwickler wird. Ich bin sicher, Sie haben einige Online-Tutorials gesehen oder sogar einige Programmierkurse. Allerdings warne
ich Sie, das
meiste Material da draußen ist nicht aktualisiert oder lehrt die fortschrittlichsten Konzepte und verwendet eine Menge von Punkt-und Klick-Tools und einfache Konzepte. Wenn Sie den einfachen Weg lernen möchten. Das ist nicht der Kurs für Sie. Aber wenn Sie am Anfang ein wenig lernen und leiden wollen, aber am anderen
Ende mit solidem Wissen herauskommen , dann haben Sie den richtigen Kurs gefunden.
3. Deine Python Development: wie ich bereits erwähnt habe, haben
wir zwei Möglichkeiten, unsere Python-Flask-Entwicklungsumgebung einzurichten. Die erste besteht darin, Flask lokal in Ihrem Computer zu installieren. Das bedeutet, dass Sie Administratorzugriff haben und Konserven gestohlen Pakete haben. Die zweite besteht darin, eine Online-Python-Entwicklungsumgebung zu verwenden. Hier melden Sie sich bei einem Cloud-basierten Dienst an, wo Sie von überall aus
Ihre Arbeit,
Computer oder sogar ein Internet-Café codieren Ihre Arbeit, können. Es ist keine Installation erforderlich. Wählen Sie in den folgenden Lektionen die für Sie passende Option aus.
4. Python3 auf Mac mit Homebrew installieren: mein Fee Paket Manager für den Mac ist zu Hause, und das ist, was verwendet wird, um per Telefon drei zwischen gestohlen Homebrew installieren. Gehen Sie einfach auf die bescheidene Website unten jetzt, Corbyn hallte auf der Homebrew-Homepage. Öffnen Sie nun ein neues Terminalfenster. Sie können das Terminal öffnen, indem Sie zum Rampenlicht gehen. Suchen Sie bei der Eingabe von Terminal. Sobald das Terminal-Fenster geöffnet ist, basierend auf einem Homebrew-Code und drücken Sie die Eingabetaste. Warten Sie, bis alle Dateien installiert sind, um zu überprüfen, ob alles richtig in
unserem Brauarzt installiert wurde . Jetzt installieren wir Python drei. Tun so beißt auf drei. Geben Sie einfach das folgende Gebräu ein. Installieren Sie fünf von drei. Warten Sie, bis das Skript beendet ist, um sicherzustellen, dass Python drei noch nicht korrekt Python drei Dash Capital V eingegeben hat und das war's. Jetzt können wir mit unserem Kurs beginnen.
5. Python3 auf Windows 10 mit Chocolatey installieren: Mein Lieblingspaket-Manager für Windows ist Sugar Lady, und das ist, was verwendet wird, um per Telefon zu installieren. Drei. Gehen Sie zu dem Schock, den eine Dame installieren Seite und kopieren Sie den Code dort drin. Öffnen Sie nun ein Power-Shell-Terminal. Sie können es finden, indem Sie Windows Plus R drücken und dann Powershell eingeben. jedoch Sie müssenjedochals Administrator ausgeführt werden. Klicken Sie also mit der rechten Maustaste auf das Fenster und auf das Menü. Wählen Sie Als Administrator ausführen aus, zeichnen Sie das Power-Show-Fenster auf und drücken Sie die Eingabetaste. Warten Sie, bis das Programm installiert ist. Schließen Sie das Power Shell-Fenster, und öffnen Sie es erneut als Administrator. Denken Sie daran, jedes Mal, wenn Sie Sugar Lady verwenden, um Pakete zu installieren , müssen
Sie Power Shell als Administrator ausführen. Technologische Dame wurde ordnungsgemäß durch Eingabe von Choco staubig installiert. Wenn Sie eine Versionsnummer sehen, Sie sind bereit, jetzt zu gehen, um zu installieren, beißen Sie auf drei nur zu Shoko. Installieren Sie dash y python drei. Schließen und öffnen Sie Power Shell als Administrator erneut, um sicherzustellen, dass Pfadeinstellungen für das Python-Paket angewendet werden, um sicherzustellen, dass Python drei ordnungsgemäß installiert wurde Geben Sie per Telefon Bindestrich über Fall V ein und das war's. Jetzt können wir mit unserem Kurs beginnen
6. Die Cloud-basierte Python-Entwicklungsumgebung: Ich bin ständig auf der Suche nach der besten Python-Cloud-Entwicklungsumgebung und ich
komme immer wieder Python überall zurück. Sie sind völlig kostenlos, aber sie haben wirklich gute Pläne. Sie haben erstaunlichen Kundenservice und sie haben meine Fortsetzung und Post große Unterstützung
in dieser Lektion gebaut . Wir werden uns ansehen, wie wir unser Python Anywhere-Konto erstellen, um den Prozess zu starten. Bitte verwenden Sie den folgenden Empfehlungslink Toby vollständig geöffnet mit diesem Link, Ich bekomme eine kleine Provision, wenn Sie sich für einen bezahlten Plan anmelden und dies hilft mir weiterhin,
Ihnen mehr gute Inhalte zu bringen . Danke Im Voraus, wenn Sie auf der Seite landen, sehen
Sie eine Willkommensseite Klicken Sie auf den grünen Button, um den Prozess hier zu starten Sie mit den verschiedenen Plänen
vertreten. Für den Zweck dieses Kurses ist
das Anfängerkonto mehr als genug. Wenn Sie daran denken, eine persönliche Website mit Ihrer eigenen Domain oder eine bessere Geschwindigkeit und
Leistung zu hosten,
wählen Sie eine Leistung zu hosten, beliebige aus den Pay-Plänen. Also machen Sie weiter und erstellen Sie das Konto. Sie werden nach einem Benutzernamen, einer
E-Mail-Adresse und einem Passwort gefragt . Vergewissern Sie sich, dass Sie Ihre E-Mail mit dem Link bestätigen, der Ihnen zusendet, und das war's. Sie kommen zum Dashboard an. Mach dir noch keine Sorgen darüber. Wir werden anfangen, zu befassen, wie man all die Dinge in den kommenden Abschnitten macht.
7. Virtuelle Umgebungen: eines der grundlegenden Werkzeuge Ihrer Python-Entwicklungsumgebung ist das Konzept
virtueller Umgebungen oder virtueller Ins. Stellen Sie sich eine virtuelle Umgebung als ein Gehäuse in Ihrem Computer , in
dem Sie Python,
zusätzliche Bibliotheken sowie Ihren eigenen Code installieren können , ohne Ihren Computer im
Allgemeinen zu stören , sowie andere -Projekte. Jedes Projekt, an dem Sie arbeiten, wird also eine eigene virtuelle Umgebung haben. Also lassen Sie uns voran und erstellen Sie unsere erste Projekt-Ordner und Rückgabe-Umgebung trotz aller schlechteren Handhabung aus. Wo, vielleicht anders ist, bitte skapieren Sie den Abschnitt.
8. Windows und Mac Virtualenv Setup: Eine Sache, die ich empfehle, ist, dass Sie alle Ihre Projekte in einem Ordner auf Ihrem Computer ablegen . Es ist keine gute Übung, nur Projekte in verschiedenen Ordnern auf Ihrem
Computer herumliegen zu lassen. In Mac Typ LS dash ale Schrägstrich in Windows Typ L S C Doppelpunkt Backslash oder was auch immer der
Laufwerksbuchstabe Sie verwenden, Bitte beachten Sie. Wir werden Windows Power Shell als unser Windows-Terminal verwenden. Wenn Sie t Schrägstrich oh hübsche Ordner haben. Das ist großartig. Wenn Sie dies nicht tun, können
Sie es mit make dear slash o p t erstellen oder Angst Backslash so hübsch machen. Wenn Sie einen Fehler zu administrativen Problemen auf Mac erhalten, verwenden Sie den Pseudo-Befehl wie dieses Pseudo machen ihren Schrägstrich O p T Sie benötigen das administrative schnelle Wort dafür. Stellen Sie dann sicher, dass Sie die Eigentümerschaft für Ihren normalen Benutzer ändern. Sie können Ihren Benutzer sehen, indem Sie Komai eingeben und dann Pseudo-Ton Ihren Benutzer Schrägstrich Oh, schade. Okay, jetzt ist das erledigt. Wechseln Sie in das Verzeichnis mit CD-Schrägstrich Fettleibigkeit in Mac oder C D Backslash ziemlich in Windows. Stellen Sie sicher, dass Sie sich in diesem Verzeichnis befinden, indem Sie PWD eingeben und den Pfad überprüfen. Lassen Sie uns nun einen Ordner erstellen, der einfach auf der Punkteflasche Unterstrich App genannt wird. So machen Sie ihre einfache auf der Punkteflasche auf der Score-App und ändern Sie es mit CD Einfache auf der Score-Flasche auf der Partitur jetzt installieren werden virtuell. Führen Sie die folgenden Python drei Bindestrich M V E n v ri Envy in Windows Python Dash M V E N V V E M V. Dies wird einen Ordner namens V E M V erstellen, in dem alte Pakete installiert werden, nachdem Sie Ihre virtuelle Umgebung aktivieren.
9. PythonAnywhere Virtualenv Setup: da Python überall Einschränkungen für die Berechtigungen des Benutzers hat. Muss unser Verzeichnis mit Python erstellen Anywheres benutzerdefinierte Einrichtung. Sie uns zunächst LassenSie uns zunächstein Verzeichnis erstellen. Wo werden wir alle unsere Wraps installieren? Normalerweise würde
ich Slash Appetit verwenden, aber da wir keine Admin-Achse haben, wird einfach eine in unserem Home-Verzeichnis erstellen. So stellen Sie sicher, dass Sie in Ihrem Home-Verzeichnis sind und erstellen Sie dann einen Schrägstrich o PT Ordner hier und innen, die einfach sind Auf der Partitur Flasche Unterstrich APP Ordner. Jetzt werden wir unsere Rachel erstellen und für unsere Anwendung, So verwenden Sie den folgenden Befehl. Dies wird einen Ordner in Ihrem Home-Verzeichnis erstellen, der wie folgt aussieht rechts unten diesem Pfad auch irgendwo. Benötigen Sie es in einem Feature-Schritt. Nun, geben Sie
einfach die activate, so dass Sie aus Ihrer virtuellen schauen können. Ich bin
10. Aktivierung und Deaktivierung: für Ihren virtuellen IWF. Toby Aktiv. Sie müssen den Befehl eingeben. Zehe aktiviert. Aktivieren Sie es Macht den Computer denken, dass der Hauptordner, um Dinge zu installieren, ist im RV Envy Ordner und nicht der Stammcomputer Ordner. Also, wie aktivieren wir es? Einfach Quelle ve nb Schrägstrich Schmerz Schrägstrich Aktivieren Sie auf dem Mac v e n b Schrägstrips Schrägstrich Aktivieren Sie auf Windows und arbeiten Sie an einfachen Flask App auf Python überall. Beachten Sie, dass Sie jetzt eine V M V-Eingabeaufforderung oder eine einfache Flask-App im Ordnerpfad haben. Die virtuelle Aktivierung wird nicht aktiviert. Und es ist eine der wichtigsten Quellen von Problemen für neue Entwickler. Bevor Sie also etwas programmieren oder installieren, stellen Sie sicher, dass Sie diese Eingabeaufforderung sehen. Andernfalls aktivieren Sie Ihr virtuelles ihn. Also die Aktivierung. Geben Sie einfach die activate in allen Plattformen ein. Beachten Sie, wie sie ve und werden aufgefordert Verschwindet. Jetzt sind wir bereit, Kolben zu installieren
11. Aufwand installieren: es ist Zeit, Kolben für unser Projekt zu installieren. Da wir nicht wollen, dass Flash systemweit installiert wird, verwenden
wir unsere virtuelle. Ich bin so stellen Sie sicher, das Verzeichnis in Ihr Projektverzeichnis zu ändern, indem Sie CD-Schrägstrich o pt Slash einfache Flask-App in Mac-CD tun. Oh, ziemlich einfache Blitzkappe in Windows oder C D o. Ziemlich einfache Blitzkappe in per Telefon überall. Jetzt denken Sie daran, an dieser Stelle müssen wir die virtuelle aktivieren, und ansonsten werden wir Flask für alle Benutzer in unserem Computer installieren. So Quelle. Ben wird auf Mac Dot Vamps Skripte aktiviert. Aktivieren Sie unter Windows oder arbeiten Sie an einfachen Flesh Cap auf per Telefon überall. Stellen Sie sicher, dass Sie das Ritual und Flavell wichtig zu sehen. Dies ist am Anfang
aus der Terminal-Eingabeaufforderung. Wie installieren wir Pakete in einer virtuellen Umgebung für diese Verwendung? Die Papierbibliothek ist der Python Paketindex, und es verfügt über Tausende von Open-Source-Paketen, die Sie von Twitter verwenden können. AP I Connectors Toe Web Scraper, Toe Web Frameworks Es ist wirklich eine aus Bindestriche. Größtes Werkzeug. Mit Personen können Sie bestimmte Versionen von diesen Bibliotheken unter Verwendung einer Versionsnummer installieren. Warum ist das wichtig? Das Hauptproblem ist, dass als Entwickler großer Bibliotheken mit mehr Funktionen diese Änderungen
manchmal zu einem Problem für unseren Code werden können, da sie die Art und Weise ändern können, wie Sie mit der Bibliothek
interagieren. Es gibt auch Probleme, wenn wir mehr als eine Bibliothek haben und sie miteinander sprechen, so dass wir Versionsnummern für alle Bibliotheken verwenden, die in unseren Projekten installiert werden und flask ist keine Ausnahme. Lassen Sie uns also Kolben Version 1.0 Punkt zwei in einer virtuellen Umgebung installieren, so dass Typ Taping Stall Kolben gleich 1,0 Punkt zwei ist.
12. Der Code-Editor: gibt es viele gute Optionen für Zitatredakteure. Zu den beliebtesten gehören erhabener Text nach Charme und visueller Studio-Code. Ich empfehle definitiv, einige von ihnen auszuprobieren, wenn Sie die Zeit haben und sehen, mit welcher Sie sich am wohlsten fühlen. jedoch Für diesen Kurs werde
ichjedoch Adam verwenden. Adam ist wirklich einfach und kraftvoll zugleich und benutze es seit einiger Zeit, also fühle ich mich wohl damit. Also gehen Sie weiter und installieren Sie Ihren Co-Editor und wir beginnen, unsere Hallo Welt Anwendung
als nächstes zu erstellen .
13. Hallo Welt: also lassen Sie uns eine Datei erstellen. Im Inneren befinden sich einfache Flask App Ordner. Aber zuerst müssen wir unsere virtuellen Umgebungen für Mac aktivieren, öffnen Sie das Terminal und CD 20 S.
T. T. Einfache Flesh Cap. Dann machen Sie Quelle. Vend aktiviert, um virtuelle und auf Fenstern zur Stadt zurück Schrägstrich o p.
D.
Backslash einfache Plassat-Aktivierung D. . Dann tun Vamp Slash Skripte Schrägstrich Aktivieren Sie per Telefon überall Do CD bis die oh ziemlich einfache Fleisch Kappe, dann tun Krieg Khan. Einfache Fleischmütze. Von diesem Punkt an, wenn ich sage aktivieren Sie Ihre virtuelle und folgen Sie bitte den vorherigen Anweisungen für Ihr aktuelles Betriebssystem. Jetzt erstellen wir eine neue Datei namens Hallo Punkt b y mit unserem Code-Editor in der einfachen Flasche APF alt für Windows und Mac Typ adam dot Dies wird den Herbst-Editor mit diesem
Ordner ausgewählt öffnen . Wenn Sie ein Mac sind und dieser Befehl eine Luft auslöst, wie Adam nicht gefunden wurde, stellen
Sie sicher, dass Sie die Atomanwendung beenden, öffnen Sie es erneut und wählen Sie Shell Kommentare installieren. Wie erstellen wir Hallo Punkt B y unter Windows und Mac? Wählen Sie zuerst den einfachen Flask App-Ordner mit dem Mund und drücken Sie dann den Kleinbuchstaben eine Taste auf dem Eingabefeld. Geben Sie hallo Punkt p y ein. Beachten Sie, dass Ihr Ordner möglicherweise nur noch einmal geklickt hat, um ihn zu erweitern und den
Inhalt auf per Telefon überall anzuzeigen . Drücken Sie das Hamburger-Symbol oben rechts und wählen Sie Dateien aus. Suchen Sie dann den
O. P. T. Ordner im Verzeichnisabschnitt. Klicken Sie darauf und klicken Sie dann auf den einfachen Flask App Link. Stellen Sie sicher, dass Sie den vollständigen Pfad Schrägstrich Startseite Schrägstrich Ihren Benutzernamen Schrägstrich oh pt Schrägstrich einfache
Blitzkappe oben links haben . schließlich Geben Sieschließlich
im Dateiabschnitt Hallo Duh p y ein und klicken Sie auf die Schaltfläche „Neue Datei“. Okay, wir sind bereit, unsere erste Kolbenanwendung auf dem ersten Zeilentyp aus
Kolben-Importkolben zu codieren . Dies importiert die Kolbenklasse in ihrer Datei. Wir müssen jetzt eine Instanz der Klasse erstellen, die wir diese Objekt-App nennen. AP entspricht Kolben. Auf diese geht dieser Kernname auf der Partitur Bekanntmachung geben wir diese Punktzahl in diesem Gericht Namen, unterstreichen die Partitur als Parameter. Dies ist ein Python in Magie gebaut, praktikabel, der flask mitteilt, welches Modul oder Paket dies von diesem läuft, ermöglicht es flask zu wissen, wo sie nach verwandten Ordnern aus unserer Anwendung suchen. Wenn jetzt eine leere Zeile bei APP eingegeben wird
, wird diese Route Schrägstrich das at Zeichen hier als Dekorator bezeichnet. Und im Wesentlichen erlaubt
es uns, zu modifizieren. Die Funktion wird darunter eingeben. Wir haben mehr über Dekorateure gelernt. Später, auf der Route, Decorator sagt Kolben, was Ihre L-Dysfunktion aufgerufen wird. In diesem Fall wird
dies der Stammordner oder Schrägstrich sein. Wir erstellen jetzt unsere Funktion, die nur zurückkehrt. Hallo, Welt. Zurück zum Browser Death. Hallo, die Welt kehrt zurück. Hallo? Hat gearbeitet. Und das war's. So sieht die ganze Akte im Herbst aus. Herausgeber. Beachten Sie, dass ein kleiner blauer Kreis auf dem Wasserhahn ist. Das bedeutet, dass diese Datei nicht gespeichert wurde. Hit control plus s unter Windows oder Befehl Plus s auf Mac, um es auf Python überall zu speichern. Beachten Sie, wie es bei sicheren Änderungen oben neben dem falschen Pfad steht, drücken Sie die grüne Speichern-Taste, um das Feuer zu speichern. Ab diesem Zeitpunkt werden
Sie in der Lage sein, den Code auf dem Bildschirm mit dem von Null Code kürzer zu erhalten. Sie werden einen kleinen Schieberegler wie diesen Pop-up jedes Mal sehen, wenn wir neuen Code für Sie hinzufügen. Geben Sie einfach den Code in Ihren Browser ein und Sie werden zu meinem Kind-Hub-Repository weitergeleitet. Zu diesem Zeitpunkt können
Sie den Code von dort kopieren und einfügen,
obwohl ich es besser finde, wenn Sie tatsächlich codieren, so dass Sie sich an Ihren
Editor gewöhnen und Ihr Gehirn trainieren können , um wie 1/4 zu denken. Jetzt werden wir sehen, wie Sie diese Anwendung und Seed in unserem Browser ausführen. Wir haben zwei verschiedene Lektionen,
je nachdem, ob Sie in Windows oder Mac sind oder ob Sie irgendwo in Bison sind, entkommen dem, der für Sie richtig ist.
14. Laufen der Anwendung (Windows und Mac): Mal sehen, wie wir diese Anwendung unter Windows oder Mac ausführen. erneut
sicher, dass Ihr virtuelles M aktiviert ist, damit das Wort ve envy auf dem Befehl erscheint . Eingabeaufforderung. Wenn es nicht aktiviert wird, um die Anwendung ausführen zu können, müssen
wir zuerst eine Umgebung einstellen, die möglich ist, um flask mitzuteilen, welche Anwendung wir ausführen möchten und dann eine Flasche verwendet. Iran Befehl in Windows Power Shell sagte, die Umgebung lebensfähig mit dem folgenden Befehl Dollarzeichen E N v Doppelpunkt Kolben Unterstrich App gleich Hallo p y. in meiner Suche, Sie sagten, es durch den Export Flasche auf diesem Mist gleich hallo. Wir können nun die Anwendung ausführen, indem Sie den folgenden Befehl flask eingeben. Jetzt ausführen Öffnen Sie Ihren Browser. Binden Sie los. Bezahlen Sie diesen Euro http! Doppelpunkt Schrägstrich 1 27.0 Punkt Null, dass ein Doppelpunkt 5000, dass 1 27.0 Das ist dein anderer. Es wird auch als lokaler Host bezeichnet, und es ist eine spezielle I-P-Adresse, die auf Ihre eigene Maschine verweist. Sie sollten jetzt die Zeichenfolge Hallo Welt hier oben in Ihrem Browser sehen. Das war's. Unsere erste Kolbenanwendung. Starten Sie die Anwendung, indem Sie zum Terminal zurückkehren und die Steuerung drücken. Siehe unter ausgeführter Task, Beachten Sie, dass die Flask App-Umgebungsvariable gelöscht wird, wenn Sie Ihr
Terminal schließen . Wenn Sie also hier anhalten oder Ihr Terminal oder Ihren Computer neu starten, müssen
Sie die Umgebung wieder funktionsfähig einstellen. Wir werden sehen, wie wir dies später im Kurs automatisch tun können.
15. Durchführen der Anwendung (PythonAnywhere): , um unsere Anwendung überall auf Python auszuführen, wo wir uns registrieren müssen. Ah, Web-App unter System. also aus dem Navigationsmenü Klicken Siealso aus dem Navigationsmenüauf Web und Sie werden auf dem Bildschirm landen. Klicken Sie auf die Schaltfläche „Neues Web hinzufügen“. Sie werden über den Euro benachrichtigt, der Ihnen zugewiesen wurde. Normalerweise ist dies reduziert ihren Namen dot python überall dot com Für kostenlose Konten, das ist die einzige Option bezahlt Konten können benutzerdefinierte Wandbilder verwenden. Klicken Sie auf Weiter. Im nächsten Bildschirm wählen
Sie ein Python Web-Framework aus. Da wir Flash selbst installiert haben über sind Very Talev Select Manuelle Konfiguration. Auf dem nächsten Bildschirm wird gefragt, welche Python Version verwendet werden soll. Wählen Sie Python 3.6 und klicken Sie auf Weiter, die nächsten grünen Vorträge über die Erstellung einer W S G I Konfigurationsdatei. Mach dir keine Sorgen darüber, was WSC ich jetzt meint. Denken Sie nur an es als eine Datei, die die Python überall Server mitteilt, welche Anwendung
sollte Associate ID mit Ihrem Euro per Telefon überall werden eine Standard-ws g erstellen. Ich Datei für Sie, um es auf dem nächsten Bildschirm hinzuzufügen. Klicken Sie auf Weiter. Jetzt sind wir auf der Konfigurationsseite. Es gibt einige Dinge zu tun, hier zuerst bemerkt die beste vor Datum Abschnitt. Wenn Sie einen kostenlosen Plan haben, bedeutet
das, dass mindestens einmal alle drei Monate, Sie müssen die gelbe Taste drücken, die lautet, Ausführen bis drei Monate ab heute. Python überall tut dies, um sicherzustellen, dass Benutzer, die die Server verwenden, dies aktiv
tun . Als nächstes im Codeabschnitt müssen
Sie die Quelle namens Verzeichnis auswählen, Klicken Sie auf den blauen Link und geben Sie den folgenden Pfad ein, den Benutzernamen durch Ihren eigenen Benutzernamen zu
ersetzen. Schrägstrich Startseite Schrägstrich Benutzernamen Schrägstrich o p t Schrägstrich Symbol Flasche. Als Nächstes in der Konfigurationsdatei WS G I müssen
Sie den Dateiinhalt durch den folgenden Code ersetzen. Klicken Sie einfach auf den Blue Link und geben Sie dieses Snippet ein, indem Sie den Benutzernamen durch Ihren eigenen ersetzen. Nehmt ihren Namen. Wir sind jetzt fast fertig. Kopf über zum virtuellen in Abschnitt und wählen Sie den Blue Link und geben Sie einfach Symbol Flask App per Telefon überall bestellen, komplett mit dem vollständigen Pfad, wenn Sie Enter drücken. Also sollte das Ganze so aussehen, aber mit Ihrem eigenen Benutzernamen. Gehen Sie schließlich an den Anfang der Seite und klicken Sie auf die grüne Schaltfläche unter Abschnitt neu laden. Klicken Sie nun auf das blaue, Ihre URL oben, oder geben Sie Ihren Benutzernamen, dass Python irgendwo dot com Im Browser, sollten
Sie die Hallo Welt Text sehen. Wenn etwas nicht funktioniert hat, überprüfen Sie
einfach die Schritte und stellen Sie sicher, dass Sie nichts verpassen. Es ist normalerweise ein dummes, kleines Detail, das du vermisst.
16. Entwerfen unserer Anwendung: eine andere Sache wird die meiste Zeit damit verbringen, da ein Softwareentwickler Probleme
mit Ihrem Code und Ihrem Team finden wird . Auch bekannt als Box, ist
der Buchungsmodus ein Parameter. Sie übergeben die Kolbenumgebung so, dass Sie, wenn ein unerwarteter Fehler auftritt, mehr Informationen über die Bedingungen erhalten, die dieses Problem auslösen. Wie Sie vielleicht bereits wissen, läuft
Flask oben auf Python mit anderen Bibliotheken. Wenn Sie Ihre Anwendung zu einem bestimmten Zeitpunkt visualisieren, würden
Sie eine Art Pfannkuchen sehen. Und wenn ein Fehler auftritt, müssen
Sie sehen, dass alle Fehler von Ihrem Code bis zu Python abgeschnitten werden. Deshalb wird
Ihnen, wenn ein Fehler auftritt, der so genannte Fehlerstapel angezeigt. Um den Schnäppchenmodus einzuschalten, setzen
wir einen Konfigurationsparameter namens Bug on Flask. Es gibt zwei Möglichkeiten, dies zu tun. Einer für Windows und Mac und der andere auf Python überall. Entfliehen Sie zu dem Abschnitt, der für Sie gilt
17. Debugging: Öffnen Sie Ihr Terminal, aktivieren Sie Ihre Umgebung und tun Sie die folgenden auf Windows Donor Sign the Envy Doppelkolon
Kolon auf diesem Platz. Debug ist gleich eins und auf Mac Export Flask auf der Partitur, Debug gleich eins. Schließlich starten Sie Kolben durch Flask tun. Lauf. Jetzt werden wir einen Fehler absichtlich online einführen. Sechs. Fügen Sie das folgende X gleich einem plus Anführungszeichen A. In Anführungszeichen ein. Dies wird eine Zeichenfolge plus inter Ihren Fehler erzeugen, Speichern Sie die Datei und laden Sie dann die 1 27 ernsthafte hier eine Kälte auf 5000 Seite in Ihrem Browser.
18. Debugging: , um den Buchungsmodus in Python überall zu aktivieren, wo Sie die Whiskey-Datei im
Web-Code-Abschnitt im Dashboard bearbeiten und die App Dot de Bark Einstellung online einstellen müssen. Acht. Deaktivieren Sie die Datei in True Gespeichert eine Datei. Gehen Sie nun zurück zu Ihrem hallo p WiFi wird einen Fehler absichtlich online einführen. Sechs. Fügen Sie das folgende X gleich eins plus Anführungszeichen ein Ende. Speichern Sie die Datei überall in Python. Es gibt einen praktischen Neulade-Server-Button undefiled Editor. Ich schlage vor, wenn Sie mit Python arbeiten, wo Sie auf Ihrem Browser in einem tippen müssen, hätten
Sie Ihren Manteleditor und auf der anderen Ihre öffentliche Webseite. Wenn Sie eine Co-Änderung vornehmen, speichern Sie die Datei. auf die Schaltfläche Server neu laden und gehen Sie dann zum Tab mit Ihrer Anwendung und laden Sie die
Seite neu . Ein Wort der Vorsicht. Wenn Sie mit dem Debuggen fertig sind, schlage
ich vor, den Debugging-Motor zurückzugeben. Lassen Sie die Einstellung nicht für längere Zeiträume aktiviert, da böswillige Hacker möglicherweise Informationen über Ihre Kernbasis
extrahieren können , indem Sie sich die gestapelten Debugging-Ablagen ansehen
19. Der Debug: Wenn Sie die Seite neu laden, sehen
Sie so etwas. Es ist eine lange Seite, und wenn Sie nach unten scrollen, sehen
Sie den Fehler unten auf. Wenn Sie ein wenig darüber sehen, werden
Sie sehen, dass der Kolben Ihnen die Zeilennummer und Aussage sagt, die die Luft erzeugt hat. Manchmal werden Sie Glück wie diese auf der Linie mit dem Problem am Ende bekommen. Andere Male wird es in der Mitte sein. Obwohl Sie nicht alle Fehler in allen Stacks verstehen, müssen
Sie versuchen, nach dem Code zu suchen, den Sie geschrieben haben. Ich kannte die nicht über ältere Bibliotheken. Das ist mehr Kunst als Wissenschaft. Aber während Sie üben, werden
Sie besser darin. Bevor wir zur nächsten Lektion übergegangen sind. Gehen Sie voran und Elite Linie sechs, so dass unsere Anwendung wieder normal ist. Denken Sie daran, die Datei zu speichern
20. Routing: die Methode zum Senden von Benutzern zu einem bestimmten Teil des Codes basierend auf dem Ural heißt Routing in Flask. Dies geschieht durch den Routendekorator in unserem Beispiel. Früher hatten
wir die Hauptroute, um die hallo World-Funktion auszuführen. Lassen Sie uns diese Funktion auf eine andere Route verschieben und eine neue Funktion namens Index erstellen. So modifiziert das Skript nach Zeile für Toe sieht so aus. Speichern Sie die Datei in Macon-Fenstern. Sie müssen Flask nicht anhalten und starten. Der Flash-Theron-Befehl nimmt die Änderungen automatisch auf. Gehen Sie einfach zum Browser und laden Sie die Seite per Telefon überall neu. Das ist nicht der Fall. Denken Sie also daran, den Server zuerst zu speichern und neu zu laden und überprüfen Sie dann Ihren Browser angegriffen. Jetzt sehen Sie den Text in Erfahrung auf der Route. Aber jetzt, wenn Sie gehen, um Schrägstrich niedrig, Sie werden unsere alte Hallo Welt String den Ural sehen. Wir haben die Route kann auch mehrere Teile haben. So zum Beispiel könnten
Sie
zum Beispieldie You Earl Slash gelben Schrägstrich Welt mit Hello Funktion zuweisen und er würde dasselbe
arbeiten. jedoch jetzt lernen, Ein interessantes Merkmal wirdjedoch jetzt lernen,ist das Konzept der viralen Teile im Euro. wir zum Beispiel an, Nehmenwir
zum Beispiel an,
wir wollen alles, was sich im zweiten Teil dieses Euro befindet, greifen und es in der
Funktion verwenden . Ändern Sie Zeile acht und nach toe diese gespeichert eine Datei und laden Sie einen Euro Schrägstrich lo Schrägstrich Welt. Wie Sie sehen können, wurde
der zweite Teil des Euro den Namen lebensfähig unter aus zugewiesen. Sobald Sie das haben, können
wir es als Argument an die hallo Funktion übergeben. Was passiert also, wenn wir eine Nummer im Euro geben? Probieren Sie es aus. Es funktioniert perfekt, weil Kolben diese Zehe eine Stärke umwandelt, die wir explizit
sagen können Kolben. Das Department erwarten wir, dass es sich um einen bestimmten Typ handelt. Zum Beispiel. Nehmen wir an, wir erwarten eine ganze Zahl nach „Hallo“. Wir können den Code ändern, um wie folgt zu lesen. Speichern Sie die Datei und geben Sie in Ihrem Browser einen Schrägstrich gelben Schrägstrich vier ein. Wir sind auf Sendung gekommen. Kannst du raten, was passiert ist? Das ist richtig. Jetzt ist der Planet lebensfähig eine ganze Zahl und wir können keine Ganzzahl und eine Zeichenfolge erstellen. Um also die Hallo String zurückzugeben, müssen wir den Planeten Toe eine Zeichenfolge umwandeln. Dafür können wir die Funktion f verwenden. Leslie, Wenn Sie versuchen, eine Zeichenfolge wie Schrägstrich lo Schrägstrich Welt übergeben, Sie erhalten eine vier leisten nicht dort gefunden. Da Kolben im zweiten Teil des Euro eine ganze Zahl vermutet, können
wir virale Teile einem String Integer float und ein paar anderen Typen zuweisen. Sie können voran gehen und das in der Kolbendokumentation nachsehen.
21. VORLAGEN: während Sie Ihre Anwendung erstellen, die Seiten an den Benutzer zurückgegeben werden immer komplizierter. Es würde ziemlich chaotisch werden, wenn er jede Funktion mit einer Rückkehr hätte. Lebensfähig mehrere Dutzend Zeilen lang. Die meisten nassen Frameworks arbeiten also mit einem Entwurfsmuster namens Model View Controller oder M V C. Die Zeichenmuster sind ein Thema für einen anderen Kurs, aber wissen Sie nur, dass es einige Best Practices gibt, um Computerprobleme anzugehen, die so
bekannt sind dass Sie das Rad nicht neu erfinden müssen, wenn Ihre Karriere voranschreitet. Es ist gut, sich mit ihnen vertraut zu machen, also schreiben Sie das auf Ihre Leseliste zurück an NBC. Dieses Muster befürwortet grundsätzlich, dass Ihre Anwendung in drei
Hauptkomponenten unterteilt ist . Ein Modell, bei dem es sich um eine Datei oder eine Gruppe von Dateien handelt, die dem Lesen und Schreiben aus Ihrer Datenbank gewidmet sind. Eine Ansicht, bei der es sich um eine Datei oder einen Satz von Dateien handelt, die sich mit der Präsentationsebene in Webanwendungen befassen. Dies wäre HTML, CSS und JavaScript und ein Controller, der
die Datei oder Gruppe von Dateien ist, die die Benutzeranfragen koordinieren und lädt und speichert Daten mit den Modellen und stellt sie zurück mit den Ansichten in flask. Die Ansichten von der M V C Moral werden durch Vorlagen behandelt. Vorlagen sind Dateien, die als Eingabe eine Reihe von Variablen haben, die als Kontext bezeichnet werden und normalerweise HTML ausgibt. Gehen wir zurück zu unserem Drehbuch. Sie sollten Ihre virtuelle Umgebung aktiviert haben und die halbe Flasche laufen lassen. Lassen Sie uns einen Vorlagenordner erstellen. Flask hat ein paar spezielle Verzeichnisse, nach denen er in jeder Anwendung sucht und Vorlagen ist eines davon. In Windows und Mac, gehen Sie zu Ihrem Adam Editor, wählen Sie eine einfache Flasche, einen Ordner und drücken Sie Shift A. Sie sehen ein Pop-up, mit dem Sie den Namen aus dem Ordner
eingeben können, geben Sie Vorlagen ein Wenn Sie die -Ordner, wenn er sich das erste Mal zusammenzieht und die Ordner nicht anzeigt. Klicken Sie einfach noch einmal darauf, um zu erweitern. Sie sollten jetzt den Vorlagenordner dort telefonisch überall sehen. Gehen Sie zu Ihrem Hamburger-Menü oben rechts und wählen Sie Dateien in Verzeichnissen aus. Wählen Sie oh, schade und dann einfach flask app, und geben Sie dann Vorlagen im Verzeichnisbereich ein und klicken Sie auf das neue Verzeichnis. Aber wir werden jetzt eine extreme el-Datei für die Index-Seite in Windows erstellen und Mac klicken Sie auf den Templates Ordner und jetzt ein Sie werden ein Pop-up sehen, um den Namen einer neuen Datei eingeben
Innerhalb des Templates Ordner, Sie werden das Verzeichnis in das Eingabefeld. Stellen Sie sicher, dass Sie direkt nach dem Index HTML und drücken Sie die Eingabetaste per Telefon überall. Du solltest immer noch auf der Akte stehen. Stich. Stellen Sie sicher, dass der Pfad oben links lautet Home your user name (Home your user name). Oh, Petey, Einfache Flasche,
App, App, Vorlagen und dann rechts Index html unter Dateien Abschnitt und klicken Sie dann auf die neue Datei Schaltfläche . Wir können nun einige HTML-Inhalte hier eingeben, also schreiben wir einfach die folgende h eine Indexseite und H eins die h ein öffnen- und schließendes Element. Sie stellen fest, dass diese Zeichenfolgenindexsprache eine Header-Ebene 1 ist, die die größte ist. Beachten Sie, dass das erste Element keinen Schrägstrich auf der 2. 1 hat. Diese sagen HTML, dass das erste ist das öffnende Tag und das zweite ist die schließen intakt. Ich werde in HTML nicht ins Detail gehen, aber wenn Sie folgen, werden
Sie den Dreh davon bekommen. Sie können auch eine schnelle Einführung in Richtung weiblich in der W drei Schulen dot
com-Website Speichern Sie die Datei und jetzt gehen Sie zurück zum Hallo p Y. Und anstatt die Index-Seite String online zurückzugeben, sechs wird die folgende Rückkehr tun. Rendern Sie auf der Partiturvorlage Index html eine letzte Sache online. One When zwischen Port temperierte Funktion zu rendern, so nach dem Import Kolben, aracoma und fügen Sie Rendervorlage hinzu, so dass die ganze Zeile sieht wie folgt aus
Kolben Import Kolben Komma. Render-Vorlage speichern Sie jetzt die Datei und gehen Sie zu Ihrer Route. Euro. Stellen Sie sicher, dass es derjenige ohne Teile ist. Nach dem Schrägstrich sollte die Indexseite im Browser in Beit On irgendwo angezeigt werden. Denken
Sie daran, Sie müssen speichern und dann auf den Server neu laden unten klicken. Einmal gab es Herr ist vollendet. Gehen Sie zu Ihrer Website. Stechen und navigieren Sie auf die Route. Europa. Wie Sie sehen können, sieht
der Benutzer, was wir in der HTML-Datei geschrieben haben, und jetzt können wir diese Datei alles in Zusammenhang mit der Ausgabe behandeln lassen und ältere Routing und
Logik in der Python-Datei behalten . Aber jetzt sehen wir, wie wir Informationen basierend auf der
Eingabe des Benutzers an die Vorlage weitergeben können . Die praktikable ZPass toe Die Vorlage wird kollektiv als Kontext bezeichnet. In der zweiten Route haben
wir die Hello-Planeten-Funktion, die jede Zahl ausgibt, die sie eine Straße auf dem
zweiten Teil des Euro benutzen . Also lassen Sie uns eine andere Vorlage auf dem Template-Ordner erstellen wird tun. Hallo, Türausgang. E-Mail mit dem folgenden HTML nannte ich es t auf dem Punkteplaneten. Um deutlich zu machen, dass dies die Vorlagen Planet Feuer ist. Beachten Sie, wie wir doppelte geschweifte Klammern anstelle derjenigen verwenden, die wir für die F-Zeichenfolge verwenden. Jetzt wird die Vorlage drucken, was auch immer der Wert Off T planet es im Kontext bekommt. Wie übergeben Sie den Kontext an die Vorlage? Ändern Lügen 10 Mit dem folgenden, wir weisen die Vorlagen T Planet lebensfähig. Zehe den Wert vom Planeten lebensfähig. Wir bekommen aus dem Euro-Teil sagen Abstimmungsdateien und gehen über den Euro mit einer beliebigen Nummer, die Sie wollen. Versuchen Sie nun, die Zahl in etwas anderes zu ändern und zu drücken. Geben Sie ein. Sie sehen die hallo Ausgabe Änderungen
22. Die url_for(): eine Sache, die Sie oft tun, Ihre Vorlagen und Controller wird es sein, Links zu anderen
Seiten zu setzen . Also, zum Beispiel, lassen Sie uns einen Link von der Indexseite zu dem Hallo Paige in unserer Anwendung hinzufügen. Ändern Sie den Index html, indem Sie den folgenden Link in Zeile drei acht hinzufügen. Ref ist gleich Schrägstrich lo Schrägstrich vier. Hallo Schrägstrich Dieses HTML-Tag wird als Anker bezeichnet
und ermöglicht es Ihnen, die aktuelle Seite mit einer anderen Seite zu verknüpfen, die Datei zu
speichern und zur Indexseite zu wechseln. Du solltest das sehen. Wenn Sie auf den Hello Link klicken, nehmen
Sie die Hello Route. Aber sagen wir jetzt, wir finden heraus, dass wir den Euro von dieser Funktion auf
Gitter so online ändern wollen . Acht. Gehen Sie voran und ändern Sie die Route, um die Route zu lesen, Schrägstrich lesen Schrägstrich in Planeten. Speichern Sie die Datei und
gehen Sie in Ihrem Browser zur Indexseite und klicken Sie auf den Hello Link. Du kriegst jetzt eine Luft. Es wäre einfach, die Hilo HTML-Vorlage mit einem neuen Schrägstrich Euro zu aktualisieren, aber öfter, dass Sie nicht Dutzende oder Hunderte von Links wie diese in Ihrer
Anwendung haben . Statt der harten Codierung stellt
der Ural Flax eine Funktion namens euro four zur Verfügung, die es uns ermöglicht, den Euro mit einem
Funktionsnamen anstelle der Route zu binden . Als Funktionsnamen werden sich oft nicht so viel ändern. Also lasst uns das machen. Gehen Sie auf den Index HTML und ersetzen Sie die H ref durch die folgende eine Reise entspricht Euro vier. Hallo, Coma Planet ist gleich vier. Hallo Schrägstrich Speichern Sie die Datei und gehen Sie zur Indexseite im Browser und laden Sie sie neu. Wenn Sie den Mauszeiger über den Link bewegen und sich die Adresse auf der unteren Leiste des Browsers ansehen, werden
Sie feststellen, dass der Euro korrekt codiert ist. Klicken Sie darauf und Sie erhalten die Hallo Seite ohne Erben. Gehen Sie nun zurück zur Hello P Y-Datei und ändern Sie den Rock zurück zu hallo. So Speichern Sie die Datei und laden Sie die Indexseite neu. Sie werden sehen, dass der Link funktioniert perfekt und jetzt generiert den aktualisierten Euro automatisch
23. Der statische Ordner: Es gibt bestimmte Dateien, die nicht von unserem Controller verarbeitet werden müssen, da sie
immer gleich sind . Die meisten davon sind Präsentationszentrierte Dateien wie CSS oder Eifersüchtige Gerichtsdateien, die die Benutzerinteraktion
verbessern. Flask reserviert einen Ordner, der als statisch bezeichnet wird. Und genau wie der Templates-Ordner ist
es ein spezieller Ordner. Wir möchten, dass Dive auf diese Arten von Dateien in diesem Kurs marschiert, aber sagen wir, wir wollen den Text erstellen. Wir haben ein wenig hübscher auf unserer Website. CSS Files ermöglicht es uns, dies zu tun, indem wir Geldmittel und Farbe zu Tags zuweisen, also erstellen Sie einen statischen Ordner auf der APS-Route, genau wie wir es mit Vorlagen getan haben. Jetzt innerhalb des Ordners erstellen Sie eine Datei kalt basierte Punkt CSS und eingegeben die folgenden. Dies wird unsere H eine Steuer Toby Red machen und mit einer verdana Schriftart, speichern Sie die Datei. Und nun lassen Sie uns unseren Index HTML ändern, um die neue Basis-CSS-Datei einzuschließen. Wir können das tun, indem Sie die Datei so ändern, dass sie wie folgt aussieht. Speichern Sie die Datei und laden Sie Ihren Browser neu. Es sollte so aussehen, wenn es aus irgendeinem Grund nicht tut, es ist, weil statische Dateien oft Bargeld durch den Server und den Browser, die Ihr Browser und starten Sie den Flask Server und öffnen Sie den Euro wieder. Auch wenn dies technisch funktioniert, gibt es hier ein potenzielles Problem, genau wie sich die Seiten-URLs ändern können. Der Speicherort des statischen Ordners kann sich ebenfalls ändern. Die Anwendung kann auf ein anderes Verzeichnis innerhalb des Servers oder auf einen anderen Server
verweisen . Für diese Flasche hat eine spezielle Euro-Vier-Methode, die den richtigen Euro für Ihre Anwendung einstellt, so dass Sie sich keine Sorgen darüber machen müssen. So eigener Index html. Ändern Sie die Stylesheet-Linie so, dass sie wie folgt aussieht. Speichern Sie die Datei und laden Sie den Browser neu. Sie sollten die gleiche Ausgabe sehen, aber Ihre Basis sagt, Datei Ihre L ist jetzt dynamisch generiert.
24. Inheritance: Wenn Sie sich noch auf der Indexseite der Anwendung befinden und auf den Hello Link klicken, werden
Sie feststellen, dass sich unser Hello Seiten Titel nicht geändert hat, um wie der auf Index HTML zu lesen. Das liegt daran, dass unsere Hello HTML-Datei die statische CSS-Datei nicht enthält. Jetzt. Wir könnten alle HTML kopieren und einfügen mit getan für die Indexseite, aber Sie können sehen, wie dies problematisch sein könnte und gegen das trockene Prinzip verstößt. Wiederholen Sie sich nicht. Flask weiß dies, und es verfügt über eine so genannte Vorlagenvererbung, die es uns ermöglicht, gemeinsame Vorlagen mit Abschnitten zu erstellen, die von der
aktiven Vorlage überschrieben werden können . Art, wie Klassenvererbung funktioniert. Mal sehen, wie wir das machen. Zuerst werden
wir eine Basis-HTML-Datei definieren, die die grundlegende Vorlage für alle von
den Vorlagen sein wird . Gehen Sie voran und erstellen Sie Grundlagen TML als leere Datei unter Vorlagen Ordner. Jetzt gehen Sie vor und fangen Sie in diesem HTML die ersten 6 Zeilen und die letzten beiden Zeilen, die auf Lee der H auf den H ref Zeilen leben und fügen Sie sie auf Basis html. Jetzt müssen wir Schritte für die Schablone Vererbung Zehe Arbeit zuerst auf Index html. Wir müssen die grundlegende HTML-Vorlage dafür erweitern. Wir fügen die folgende Anweisung in Zeile eins erweitert Basis html Nun, wenn Index HTML
rendern wird , würde
es grundlegende HTML als übergeordnetes Element verwenden. Aber jetzt müssen wir flask sagen, wo der Inhalt aus Index HTML in
Basis-HTML eingefügt wird . Das ist der zweite Schritt, und es hat zwei Teile zuerst in der grundlegenden CML zwischen der Körpersteuer. Fügen Sie den folgenden Blockinhalt en bloc ein. Was diese Zeile besagt, ist, dass Vorlagen, die diese Vorlage erweitern, Inhalt
hier einfügen können , indem sie den Inhalt verwenden. Identifizieren Sie jetzt auf Index HTML. Wir müssen den gesamten Code mit dem gleichen Block umschließen. Erweitert basierend HTML-Blockinhalt H eine Indexseite und jede eine Reise. Ural vier. Hallo Planet entspricht vier Hallo und A und Block speichern alte Dateien und laden Sie die Indexseite neu. Sie sollten genau das gleiche Ergebnis sehen, aber hier ist, wo Sie den Wert davon sehen. Öffnet die Hello HTML-Datei und fügen Sie die Ausdehnungs- und Blockinhaltszeilen oben auf dem Endblock am unteren Rand ein. Speichern Sie die Datei und klicken Sie nun auf den Link Hallo auf der Indexseite im Browser. Sie sollten nun die vier Buchstaben „Hallo“ in rot sehen. Wir können mehr als einen Block in einer Vorlage haben, und wir können auch einen Standardinhalt für diesen Block unter übergeordneter Vorlage festlegen. Das ist immer noch deutlich. Toe fix jede Show, die wir jetzt mit dem Titel-Tag haben. Wenn Sie den Browserstab überprüfen, sehen
Sie, dass sowohl der Index als auch die Hello Seiten die gleiche Titelindexseite haben. Es ist sehr wichtig, dass jede einzelne Seite hat ihren eigenen Titel,
vor allem, wenn Suchmaschinen Kroll unsere Seiten. Attribut ist auf dem Basis-HTML-Titel-Tack festgelegt, also lassen Sie uns dies zur standardmäßigen Toby Index-Seite machen, wenn die erweiterende Vorlage es nicht übergibt ,
sondern etwas anderes, wenn es schnell ist, also ändern Sie diese Zeile DiesesAttribut ist auf dem Basis-HTML-Titel-Tack festgelegt,
also lassen Sie uns dies zur standardmäßigen Toby Index-Seite machen, wenn die erweiterende Vorlage es nicht übergibt,
sondern etwas anderes,
wenn es schnell ist,
also ändern Sie diese Zeile
Folgendes, speichern Sie es und öffnen Sie dann hallo HTML. Und fügen Sie nach der extend-Anweisung Folgendes hinzu. Aber vor dem Blockinhalt speichern Sie die Datei und jetzt werden Sie feststellen, dass jede Seite einen anderen
Titel hat , wie sie
25. Einführung in Formlinien: eine der wichtigsten Funktionalitäten und Anwendung hat, ist die Fähigkeit, Eingaben von
seinen Benutzern zu erhalten . Um dies zu tun, hat das HDP-Partikel, das die Definition der Funktionsweise von Webseiten ist, einen Satz von Befehlen erstellt, die als Burbs definiert sind. Es gibt eine Reihe von http Burbs, die verschiedene Operationen ausführen, aber die, die in dieser Lektion sehen werden, sind get and post sie bekommen. Methode ermöglicht es Ihnen, die Benutzereingaben von der Webseite zurück an Ihre Anwendung mit
dem Euro selbst zu senden , zum Beispiel, wir schreiben ein Formular, das der Benutzer mit seinem Vor- und Nachnamen ausfüllen muss. Sie bekommen Euro für diese Operation könnte in etwa so aussehen. Sehen Sie, wie wir die Rentabilität im Euro sehen können. Die einzige Sache, die Sie sich erinnern müssen, ist, die Liste von Feldwertpaaren oder
Abfrageparametern mit einem Fragezeichen zu starten . Flask kann diese Parameter lesen. Lassen Sie uns versuchen, dass Head over to Hello P y Und lassen Sie uns eine neue Route erstellen, die diese Parameter aus der get Anfrage an den
folgenden Code und die Lügen lesen wird . auf Anfrage die Importliste Speichern Sieauf Anfrage die Importlistedie Datei und geben Sie dann Tage in Ihrem Browser ein. Sie werden sehen, dass die praktikable korrekt in der Anwendung empfangen wurde. Beachten Sie, wie wir den neuen Methodenparameter auf der Route hinzugefügt haben. Dies ist eine Liste von akzeptablen HDP-Methoden, die mit dieser Ansicht interagieren können. Da wir erhalten Parameter lesen wollen,
haben wir hinzugefügt, um Methode hier zu erhalten. Beachten Sie auch, dass wir erwarten, dass beide Werte vorhanden Vorname und Nachname sein da wir die Parameter ohne eine Liste get-Methode verwenden, was bedeutet, dass Sie nicht mit der get-HDB-Methode verwechselt haben. Also, zum Beispiel, wenn Sie nur den Vornamen auf die Parameter im Ural wie folgt übergeben und drücken Sie die Eingabetaste, erhalten
Sie einen 400-Fehler, aber fordern Sie tow an. Vermeiden Sie das. Sie können die folgende Datei speichern, dann den Flash-Server anhalten und neu starten, da der Inhalt der Seite möglicherweise
vom Browser zwischengespeichert wurde . Nun natürlich nicht, erwarten
Sie
natürlich nicht,dass Benutzer ihren Vor- und Nachnamen direkt auf der Eurobar eingeben. Es wäre besser, ein schönes Formular für den Benutzer zu rendern. Wir können das mit HTML tun, so lassen Sie uns eine neue Vorlage auf dem Vorlagenordner Form HTML auf HTML-Formular ist die fünf Mit dem Formular öffnen und schließen Steuer, alles innerhalb der Hirsche wird entweder Teil des Formulars. Fangen Sie also mit starker Form an. Und für mich, als nächstes werden unsere Felder hinzufügen. Dafür verwenden
wir die Vorsteuer. Also lassen Sie uns beim Vornamen und Nachnamen Importe zwischen den Formular-Tags, Eingabe hat einen Typ. In diesem Fall handelt es sich um Textfelder. Es gibt noch andere Typen, die wir im Kurs sehen werden. Sie möchten auch einen Namen hinzufügen, ist
, wie der lebensfähige Name an unsere Anwendung weitergegeben wird. Damit der Benutzer die Daten tatsächlich senden kann, benötigen
wir einen Button. Fügen Sie also folgendes hinzu. Das sieht gut aus, aber wir vermissen etwas Wichtiges. Wir müssen der Form mitteilen, welche Route dies senden soll, wenn der Benutzer Gipfel drückt. Also in der folgenden Zehe, die Form Tack Form Aktion gleich Schrägstrich Form. Aber warte. Denken Sie daran, ich sagte Ihnen, nie harte Gericht irgendwelche Orioles auf Ihre Vorlagen, die die
Formular-Aktionen enthält . Also lassen Sie uns das durch Form ersetzen. Aktion ist gleich Ural vier Form. Unsere ganze Form sieht also so aus. Speichern Sie die Form HTML-Datei und jetzt den Kopf über Hallo P Y und ersetzen Sie die Form Route mit dem folgenden Code. Also, was passiert hier? Zuerst prüfen
wir, ob die Chorparameterliste eine Seife hat, die lebensfähig gemacht wird. Das passiert erst, nachdem wir das von mir gedrückt haben. Aber wenn wir das sehen, dann würde die Abfrageparameter lesen, Vorname und Nachname und gedruckt auf dem Bildschirm. jedoch wirjedoch
das erste Mal auf die Seite klicken, müssen
wir keinen Abfrageparameter einreichen. Also da. Wenn die Bedingung fehlschlägt und wir die Formularvorlage rendern, speichern Sie die Datei und stoppen und starten Sie den Flash-Server nur für den Fall, Ich werde erklären, warum wir dies in ein wenig brauchen. Also, jetzt, wenn Sie den Kopf über lokalen Host Colin 5000 Schrägstrich Forum, Sie werden sehen, das Formular gerendert wird. Geben Sie nun einen Vor- und Nachnamen ein und drücken Sie den Gipfel. Sie werden sehen, dass der lebensfähige Sprint es aus. Die Post-Methode unterscheidet sich von der get-Methode auf ein paar wichtige Wege, da die Daten die Euro-Post-Sense-Daten verwenden, die den Körper der Anfragen verwenden, so dass sie vor
dem Benutzer ausgeblendet ist , was es besser macht, sensible oder private Daten. Es gibt auch eine Begrenzung für die Daten, die Sie gesendet haben. Erhalten Sie Anfragen. Kein Limit für post-get Anfragen werden vom Browser gecacht, nützlich, um einen Zustand der
Verpflichtung darzustellen . Post-Anfragen werden nicht von den Brauen eingelöst. Also lassen Sie uns das Formular ändern, um Post anstelle von get als Vorname und Nachname könnte sensible Informationen zu verwenden. Wir wollen nicht öffentlich unter Europa vorbeigehen. Zuerst hatten
wir einen Methodenparameter für die Formular-Tag-Informanten TML, so dass es so aussieht. Speichern Sie die Datei. Jetzt müssen wir die Route auf hallo p y ändern und eine Post-Methode hinzufügen. Wir verlassen die get-Methode, da das erste Mal, wenn Sie die Seite drücken, um das Formular zu rendern, es tatsächlich eine get-Anfrage ist. Nun, um zu überprüfen, ob die Benutzer von Meta-Daten ändern wir ihre, wenn sie so zu lesen. Wenn die Anforderung, die Methode gleich Posts
ist, ist diese Bedingung nur wahr, wenn der Benutzer in einem Formular, das die post
-Methode verwendet, auf Senden drückt . Schließlich, um zu lesen, werden
die Daten eine andere Anforderungsmethode namens Form verwenden. Vorname entspricht Anfragen, die Formular, die den Vornamen erhalten. Nachname entspricht Anfragen, die Formular, die Nachname gespeichert eine Datei erhalten und starten Sie den
Fleiss-Server neu. Gehen Sie nun auf die für Wandbild und beachten Sie, wie, wenn Sie die Werte einreichen nicht mehr auf dem Euro angezeigt werden. Es gibt 1/3 Möglichkeit, die Werte aus dem Formular zu lesen, und das verwendet die Anforderung, dass Werte. Ändern Sie einfach die beiden praktikablen Zuweisungen, um so zu lesen. Vorname entspricht Anforderungen an diesen Wert. Beginnen Sie den Vornamen zu erhalten. Nachname entspricht Anforderungen Werte starten, erhalten letzte Nacht, speichern Sie die Datei und starten Sie den Server neu. Sie sollten das gleiche Ergebnis erhalten. Die coole Sache an Anforderungswerten ist, dass es sowohl Get als auch Post-Daten liest, so dass Sie nicht unser oder Formular unter Anforderungszuweisung verwenden müssen. Das ist also praktisch, wenn die Operation nach dem Drücken von Submit die Datenbank in irgendeiner Weise verändert . Es ist nicht gut, dem Benutzer zu erlauben, einfach auf dieser Seite neu laden immer und immer wieder zu drücken, da dadurch mehrere identische Datensätze erstellt werden
würden. beispielsweise an, Nehmen wirbeispielsweise an,der Vorname und Nachname im vorherigen Beispiel bestand darin, ein neues
Benutzerkonto zu erstellen . Wenn wir also auf dem Abschnitt landen, in dem wir die Variablen geholt haben und ein Datenbankdatensatz
erstellt wird , kann
ein Benutzer dann treffen, 100 Mal
neu laden und 100 Konten erstellen, also ist es immer eine gute Übung, den Benutzer zu senden Dankeschön Seite nach den Formularen eingereicht. Auf diese Weise kann der Benutzer die Seite neu laden und nichts passiert, so könnten wir
so etwas Under Form Route tun . Diese letzte Zeile wird einen Browser zu einer Route namens Register umleiten. Lassen Sie uns erstellen, dass Wir müssen sowohl Umleitung und Euro für die Datei so online hinzufügen. Eine Anzeige von Kolben Import Kolben. Rendern Vorlage Anfrage umleiten Euro für speichern Sie die Datei und Wärme Schrägstrich Form auf Ihre Brauen, werden
Sie sehen, wie, nachdem Sie Ihre Einnahme toe den neuen Euro einreichen. Vielen Dank. Sie können diese Seite immer wieder neu laden und es werden keine neuen Datensätze erstellt.
26. Cookies und Sitzungen: http wird als zustandsloses Protokoll bezeichnet, da der Server nur jeden einzelnen Seitentreffer
als eigenständige Operation sieht . Es gibt keine Geschichte, wo Sie, Sir, was vorher ist. Ein perfektes Beispiel war der letzte Abschnitt unseres Codes in der vorherigen Lektion. Erinnern Sie sich, wie wir den Benutzer nach dem Absenden des Formulars zur Dankeschöse-Seite geschickt haben? Nehmen wir an, wir wollten die Nachricht wieder anzeigen. Danke, John, auf dieser Seite statt nur danke. Es gibt zwei Möglichkeiten, es zu tun. Die erste besteht darin, den Ural irgendwie aufzubringen, irgendeine Art von Information über die Weiterleitung. Das könnte die Botschaft sein, die wir so zeigen wollen. Oder wenn wir die Verwendung während einer Datenbank gespeichert hatten, nachdem der Post aufgetreten ist, konnten
wir die Benutzer i D.
auf der Datenbank übergeben . Beide Methoden sind etwas unsicher, weil wir Informationen über den Euro enthüllen , die vom Browser eingelöst oder möglicherweise von einem Hacker ausgenutzt werden könnten. Der zweite Weg, der sicherer wäre,
besteht darin, einen Cookie zu verwenden. Also, was ist ein kooky genau? Cookies sind Teil des HTTP-Protokolls, und im Wesentlichen ermöglichen sie Ihnen, Informationen auf dem Computer des Benutzers zu speichern, die von Ihrer Website gelesen
werden können , nachdem sie gesetzt wurden. Zum Beispiel, wenn Sie zu amazon dot com gehen und Sie sich in Amazon-Shops anmelden, ein Cookie mit Ihrem Benutzer i d. Und danach bekommt
jede Seite, die Sie getroffen haben, dass Benutzer ich d zurück diejenigen, die Ihnen erlauben, Ihre Bestellhistorie zu sehen oder kaufen Sie etwas mit Ihrer Kreditkarte. Aber dann, wenn Sie zu Walmart gehen, com diese Website wird nicht das Amazon dot com-Cookie sehen. Es erstellt eine eigene neue lokale Datei für Wal Mart. Lassen Sie uns versuchen, ein Cookie für unsere Dankeschöse-Seite zuerst online zu setzen, eine auf make Antwort am Ende wie folgt, dann ändern Sie den Beitrag Abschnitt so aussehen. Was wir hier tun, ist, die Weiterleitung auf einer tragfähigen namens Antwort zu fangen und dann sagte, dass der Cookie namens Vorname unter Antwort selbst schließlich die ganze Sache an
den Browser zurückgegeben wurde . Dann können
wir auf der Dankeschöse-Seite das Cookie aus der Anfrage auf dem Display zurück lesen. Dies ist etwas, das Sie sich erinnern müssen und dass Sie wahrscheinlich die ersten paar Mal verpassen Cookies
verwenden. Cookies werden auf einer Seite gesetzt und sind auf Lee verfügbar, wenn Sie entweder die Seite neu laden oder
zu einer anderen Seite wechseln Wenn Sie Ihr Cookie zum ersten Mal setzen, können
Sie es nicht auf derselben Seite lesen. Du hast es gesagt. Speichern Sie nun die Datei und checken Sie sie aus. Beachten Sie, dass wir den Namen John nirgendwo im Euro sehen. Es gibt einen Nachteil dieser Methode, und das ist mit Sicherheit verbunden. Wir werden sehen, dass die nächsten Cookies in den lokalen Benutzern gespeichert werden. Festplatte un codiert i e. Wenn wir den Ordner kennen, in dem Ihre Cookies gespeichert sind, würden
Sie feststellen, dass es eine Textdatei gibt, in der Sie lesen können, dass der Vorname Cookie auf
John gesetzt ist . Jetzt ist es schwierig für jemanden, Zugriff auf Ihren Computer zu erhalten, aber nicht unmöglich. Und stell dir vor, wir hätten nicht nur deinen Vornamen, sondern auch deine Kreditkartennummer oder deine
Regierungsnummer. Sie würden auf Ihrer Festplatte liegen. Ungeschützte Sitzungen kommen zur Rettung. Ascension ist im Wesentlichen eine zufällig generierte Zeichenfolge, die als Cookie auf Ihrem lokalen
Computer gespeichert wird. Das verweist auf die tatsächlichen Daten im Webseitenserver. Aber die Daten auf der Website sind auch verschlüsselt, was es wirklich schwer macht zu entschlüsseln, also lassen Sie uns unseren Code ändern, um stattdessen Sitzungen zu verwenden. Ersetzen Sie zuerst make response durch session. Als nächstes müssen
wir einen geheimen Schlüssel hinzufügen. Erinnern Sie sich, wie er erklärt hat, dass die Sitzungsdaten auf der Serverseite verschlüsselt sind? Für diese Arbeit müssen
wir eine zufällig generierte lange Zeichenfolge setzen, wie ein Passwort
, diesen Kolben, und dann eine einzigartige Methode verwenden, um die Daten zu verschlüsseln, die sich von jedem anderen Kolben unterscheiden -Anwendung. Also in der folgenden Zeile, nach Ihrer App-Instanz ist sie ation ap dot secret key gleich meinem geheimen Passwort. Nun, das ist nicht von unserem sicheren Schlüssel, aber es wird für den Moment tun. als Nächstes die Postleitzahl so, Ändern Sieals Nächstes die Postleitzahl so,dass sie wie folgt aussieht. Beachten Sie, wie die Flask-Sitzung ein Wörterbuch ist . Wir können alle Daten speichern, die wir wollen, mit jedem ki wir wollen, an diesem Punkt speichern, Flask wird die Sitzungen entsprechenden Cookie in der lokalen falsch ist des Benutzers erstellen. Schließlich Sie
auf der Dankeseite können
Sie
auf der Dankeseiteden Wert für die Vornamenssitzung abrufen, indem Sie Vorname gleich Sitzung ausführen. Erhalten Sie keinen Vornamen, speichern Sie die Datei und checken Sie sie aus. Funktioniert genau das gleiche, wenn Sie einen sichereren geheimen Schlüssel nur für auf diesem Befehl in Ihrem Terminal per Telefon Dash C Import os Semikolon Drucken os Gedachte Sie zufällig
16. Kopieren Sie dann den Inhalt und fügen Sie ihn zwischen den einzelnen Anstrich ein.
27. Konfigurationsmanagement: Wenn Sie weiterhin Anwendungen erstellen, werden
Sie schnell erfahren, dass die Einstellungen, die für die Entwicklung in Ihrem Laptop erforderlich sind, sich
von denen unterscheiden , die auf dem Server verwendet werden, der Ihre Website tatsächlich der Welt zu Unrecht macht. Typischerweise sind diese verschiedenen Zustände aus unserer kalten Umgebung. In einer einzigen Entwicklung, Workflow, würden
Sie mindestens zwei Umgebungen Entwicklung haben, manchmal als Tod bezeichnet, die die Umgebung, auf der Sie in Ihrem lokalen Computer oder Laptop entwickeln, und eine andere -Umgebung. Kalte Produktion oder Prod. Das ist diejenige, die Ihre öffentliche Anwendung rezitiert. Es ist auch wichtig, dass Ihre Anwendung nachverfolgt, welche Bibliotheken unter
korrekten Versionen benötigt werden . Denken Sie daran, wenn wir Kolben mit Papier früher installiert
haben, spezifizierten wir Version 1.0 Punkt zwei. jedoch Wennjedochein anderer Entwickler Ihren Code installiert, hat er keine Hinweise darauf, dass dies die Versionsnummer aus Flask ist, oder sogar, dass wir Flask benötigen, um es auszuführen. Um die Bibliotheken anzuziehen, verwenden
wir eine Datei kalt Anforderungen txt, die alle Pakete auf Umleitungen auflistet, die wir brauchen. Erstellen Sie also eine Datei namens Requirements. Txt auf dem Stammordner der Anwendung und rechte Flasche gleich 1,0 Punkt zwei speichern Sie die Datei und jetzt, auf dem Terminal. Immer wenn Sie neue Pakete hinzufügen, führen
Sie den folgenden Befehl aus. Bezahlen Sie pro Installation. Das sind unsere Anforderungen. Txt. Aber denken Sie daran, und das ist von entscheidender Bedeutung. Stellen Sie sicher, dass Ihre virtuelle Umgebung aktiviert ist, bevor Sie ausführen, peeping stole, oder Sie installieren diese Pakete in allen Anwendungen. Dieser Befehl sagt Pip zwischen stahl alle Bibliotheken und seine Abhängigkeiten in der
Datei aufgelistet . Dies wird nützlich sein, wenn wir ältere Bibliotheken installieren. Wenn Sie das jetzt ausführen, wird
er nichts tun, da Wohnungen zuvor installiert wurden. Aber jetzt haben wir die Informationen auf unserer Codebasis. Wenn unsere Anwendung es von jemand anderem Flask Version verwendet wird, hat kein Punkt eine neue
Möglichkeit eingeführt , die Umgebung besser zu handhaben. Zustände, die eine Bibliothek namens python dot m mit python DRM verwenden, wenn wir alle
Umgebungseinstellungen, die wir benötigen, in einer einzelnen Datei speichern können , so dass wir uns keine Sorgen darüber machen müssen sie zu unserer Codebasis
hinzuzufügen. Typischerweise werden
diese Umgebungsdateien außerhalb über Git-Repository gehalten, wobei ein Punkt ignoriert wird und wie üblich zwischen den verschiedenen Umgebungen variieren
würde. Wir machen es anders in Windows oder Mac und Python überall, also überspringen Sie zu dem Video, das für Sie sinnvoll ist
28. Python Dot Env für Windows und Mac: Also zuerst müssen wir Bison Dash Punkt m so zu den Anforderungen hinzugefügt installieren. Txt-Datei per Telefon, dass Stern EV gleich 0,8 Punkt zwei ist. Speichern Sie die Datei. Gehen Sie zu Ihrem Terminal, stellen Sie sicher, dass Ihre virtuelle Umgebung aktiviert ist, und machen Sie eine guckende Stola, Piepen gestohlen Bindestrich. Unsere Anforderungen txt neben einer Savings B Y-Datei auf der Route APP Verzeichnis,
das so aussieht . Dies ermöglicht es uns, die Umgebungsvariablen zu lesen. Das Python-Bindestrich Punkt M wird von der Enddatei auf das Betriebssystem schieben, speichern Sie die Datei und als nächstes öffnen Sie die Hallo p y Datei und änderte Zeile vier, um ap dot com
fick dot von Unterstrich P Frau Dateieinstellungen zu lesen Vorsicht. Dies wird Flashed sagen, dass wir unsere Anwendungseinstellungen von der Einstellung Stop
ey Datei laden möchten , speichern Sie die Datei und schließlich erstellen Sie eine Dot Flask m Datei im gleichen Verzeichnis, das wie
dieser Hinweis aussieht . Wir übergeben den Kolben auf der Punkte-APP. Umwelt lebensfähig. Wir mussten vorher manuell einrichten, sowie einen neuen Kolben auf der Partitur. Em lebensfähig. Dies sagt Kolben Wenn wir in einer Entwicklungs- oder Produktionsumgebung sind, Wenn es sich um eine Entwicklungsumgebung, es schaltet automatisch den Rindenmodus für uns ein. Es ist in Ordnung, den eigentlichen geheimen Schlüssel hier zu setzen. Denken Sie daran, dass diese Punktflasche und Datei nicht auf anderen Computern gespeichert oder in das
Repository übertragen werden. Speichern Sie die Datei. Jetzt bestreiten Sie, dass alles funktioniert, indem Sie das Terminal vollständig schließen und es
wieder öffnen . Wechseln Sie zum einfachen Flask App-Verzeichnis. Aktivieren Sie Ihre virtuelle Umgebung und Typ flask Bringte die Anwendung von Läufen im
Fehlermodus , ohne eine Umgebung einstellen zu müssen. Virals cool, was?
29. Python Dot Env für Dot: so zuerst, als er twittert, stahl Python Dash DRM so zu den Anforderungen hinzugefügt. Txt-Datei Python Bindestrich Punkt m gleich 0,8 Punkt zwei. Speichern Sie die Datei, öffnen
Sie dann eine Bash, stellen Sie sicher, dass Ihre virtuelle Umgebung aktiviert ist, und machen Sie einen Peep. Installieren Sie als Nächstes bei einem Einstellungsbeginn. B y Foul auf der Route APP-Verzeichnis, das wie folgt aussieht. Dies ermöglicht es uns, die Umgebungsvariablen zu lesen, die Python Touch DRM aus
der Enddatei drücken wird , toe das Betriebssystem, speichern Sie die Datei und als nächstes öffnete die Hello p y Datei und änderte Zeile vier auf ap dot config Punkt von Unterstrich p y Dateieinstellungen B Y Dies wird Flash sagen, dass wir unsere Anwendungseinstellungen von den Einstellungen laden möchten, starten Sie das WiFi, speichern Sie die Datei und schließlich erstellen Sie eine Dart Kolben m Datei im gleichen Verzeichnis, das aussieht das hier. Es ist in Ordnung, den eigentlichen geheimen Schlüssel hier zu setzen. Denken Sie daran, diese Punktflask m Datei wird nicht in anderen Computern gespeichert werden, um das
Repository übergeben werden . Speichern Sie die Datei. Wir brauchen einen letzten Schritt, und das ist Python Dash DRM toe die Whiskey-Datei hinzuzufügen, so dass in dieser Zeile eins und direkt vor der APP-Importanzeige auf dem Punktepunkt m immer Pfad geladen wird. Join Bad Punkt Flasche in speichern Sie die Datei, laden Sie das Web und navigieren Sie Fuß die Schrägstrich Form und versucht, die Daten zu senden. Es sollte genau wie vorher funktionieren.
30. Eine Einführung in Datenbanken: wie wir in unserer Lektion über Cookies und Sessions gesehen haben. Http ist ein zustandsloses Partikel, das nichts zwischen speichert. Sitzungen mit Cookies waren in der Lage, einen Zeiger auf einen bestimmten Benutzer zu halten, aber es gibt eine Grenze, wie viele Informationen wir in ihnen speichern können. Da kommen Datenbanken. Platzdatenbanken sind große Silos, in denen Sie Millionen von Datensätzen speichern können. Diese Datensätze werden häufig in logische Silas unterteilt, die miteinander verwandt sind. In meiner Fortsetzung werden
die Datenbank, die wir die Silos verwenden, Tabellen genannt. Tabellen haben eine bestimmte Struktur, auch als Schema bezeichnet. Wie sieht das Schema aus, das ich aussah? Es ähnelt einer Liste von Spalten, die Dinge wie den Namentyp und die Länge
jeder Spalte beschreiben . Zum Beispiel, wir an, wir haben einen Kunden Datensätze stabil. Das Schema für diese Tabelle könnte wie folgt aussehen. Die verschiedenen Spalten haben einen Namen wie Vorname und E-Mail, einen Typ wie String oder Integer und eine Länge in Klammern. Sobald Sie bei Datensätzen, sieht
die Tabelle vertrauter aus. Ähnliche Zehe eine Tabellenkalkulation? Nein, es ist die erste Spalte, in der ich D oder identifiziere. Dies wird in der Regel automatisch von der Datenbank hinzugefügt, so dass wir jederzeit auf einen bestimmten Datensatz verweisen können. Sobald sich die Daten in einer Tabelle befinden, können
Sie Abfragen durchführen. Was sind Abfragen? Sie sind im Wesentlichen Datenoperationen, um entweder einen Datensatz oder eine Gruppe von Datensätzen
abzurufen ,
die einem Kriterien entsprechen zum Beispiel ,
zum Beispiel, wir suchen nach den Daten aus dem Benutzer oder Benutzer, deren E-Mail jane ist dot com. Wir würden so etwas tun. Die Datenbank würde dann von oben beginnen und beginnen, die erste E-Mail mit Jane am
Beispiel dot com zu vergleichen , dann die zweite E-Mail als die 30 mil alt weg bis zum Ende und E-Mails, die mit ihr
übereinstimmen, würden zu den Ergebnissen hinzufügen. Das und am Ende, geben Sie uns die Aufzeichnungen in dieser Beispieldatenbank. Es würde nur Bruder Nummer zwei zurückgeben, oder? Aber wenn es bei der Abfrage darum ging, alle Benutzer zu erhalten, deren Nachname Smith ist, können
Sie sehen, dass die Ergebnisse besagten Datensätze eins und zwei haben würden. Wenn wir sicher sind, dass jeder Kunde seine eigene E-Mail hat, können
wir das Schema wie folgt ändern. Siehe die E-Mail-Spalte Jetzt sagt es seine einzigartig,
was bedeutet, dass die Datenbank weiß, sobald sie das Ergebnis gefunden hat, das sie benötigt. Es kann es dir zurückgeben. Aber es gab schon ein einzigartiges Feld, ohne dass wir es wussten. Kannst du es erkennen? Ja, die Spalte I D muss standardmäßig eindeutig sein. Jetzt stellen Sie sich vor. Wir hatten Zehntausende von Datensätzen, und wir suchten nach dem einzigen Benutzer mit der E-Mail Jane am Beispiel dot com. Es wäre eine Zeitverschwendung, die Toby herumwartet, während die Datenbank die ganze
Tabelle durchsah , um nach diesem Datensatz zu suchen. Kannst du dir einen Weg vorstellen, der das beschleunigen könnte? Eine Möglichkeit wäre, die Daten per E-Mail zu sortieren, so dass, wenn wir die E-Mail finden, die wir wollen, können
wir aufhören zu suchen. Aber es gibt ein Tool, das Datenbanken anbieten, um uns dabei zu helfen, dies oder Amerika zu tun. Indizierung ermöglicht es uns, bestimmte Spalten zu definieren, die am meisten gesucht werden. Auf einmal definieren wir eine Spalte Toby indiziert, erstellt
die Datenbank eine kleinere Version der Tabelle mit nur dem I. D. auf dem Feld. Wir indizieren
zum Beispiel, zum Beispiel, dass wir einen E-Mail-Index erstellen, weil wir wissen, dass wir Benutzer oft per E-Mail suchen werden. Der E-Mail-Index würde auf diese Weise etwa so aussehen. Es ist viel schneller, nach einem Kunden zu suchen, da wir nicht alle
Datensätze betrachten müssen . Aber nicht nur das. Beachten Sie, wie die E-Mails auch sortiert werden, dass eine Basis die Indizes normalerweise so sortiert, dass
sie, sobald sie die gesuchten Datensätze gefunden haben, nicht weiter suchen muss. Ein anderes Konzept, das Sie viel über Datenbanken hören werden, sind die Crowd-Operationen Cross-Stände für Create, Read update Löschen In meiner Fortsetzung können
wir jede dieser Operationen auf jedem Datensatz tun, indem Sie einen bestimmten Befehl wie folgt verwenden. Erstellen, Einfügen, Lesen, Aktualisieren Aktualisieren. Sie führen die Liga an. Wir werden uns jede dieser Operationen in den nächsten Lektionen ansehen.
31. MySQL installieren: es ist Zeit, meine Fortsetzung wie gewohnt zu installieren. Wenn Sie mit einem Wurf irgendwo verwenden, ist
der Fluss ein wenig anders. Gehen also zu der Lektion, die für Sie gilt.
32. MySQL auf Mac mit Homebrew installieren: dank Homebrew Installation meiner Fortsetzung auf dem Mac. Es ist ziemlich einfach, nur bis zum folgenden Brewing Stall. Deswegen meine Fortsetzung. Wenn Sie möchten, dass meine Fortsetzung zum Mittagessen automatisch, wenn Sie Ihren Mac einschalten, können
Sie tun brauen Dienste starten meine Fortsetzung. Das kann ich wirklich nicht empfehlen. Stattdessen können
Sie es manuell starten, wenn Sie es brauchen, indem Sie meinen Fortsetzungspunkt-Server starten und mit meinem Fortsetzungspunkt-Server stoppen Sie den zweiten. Meine Fortsetzung funktioniert. Starten Sie den Server, indem Sie meine Fortsetzung, diesen Server starten und sich dann mit meiner Fortsetzung anmelden, Dash You Root Exit mit Semi Colon beenden. Sichere nun die Installation, indem du meine Fortsetzung auf der Partitur machst. Sicher auf der Score-Installation. Meine Fortsetzung bietet ein Validierungs-Passwort Plugging, aber wir werden nicht verwenden, dass einfach N eingeben und dann ein Passwort eingeben. Ich werde Route Pass als mein root-Passwort verwenden. Ich werde auch entfernen Sie den anonymen Benutzer und entfernen Sie die Möglichkeit, Remote-Route Gepäck. Ich werde auch die Testdatenbank entfernen und die Privilegien neu laden. Es ist eine gute Praxis, um die Datenbank mit einem bestimmten Benutzer und Passwort zu erstellen und nicht den Root-Benutzer aus der Anwendung in Der nächste Abschnitt wird eine
Besucherzähleranwendung erstellen , so dass wir einen Datenbank-Kaltzähler erstellen. Wir werden auf die Datenbank mit dem Benutzerzähler auf der Partitur, App und dem Passwort zugreifen. Mein Passwort. So protokollieren Sie meine Fortsetzung mit Ihrem Routenbenutzer und Passwort. Meine Fortsetzung tut es, sie hat geschrieben. Dash P Route Pass. Erstellen Sie die Datenbank,
erstellen Sie, dass gehorcht Zähler und jetzt erstellen Sie den Benutzer und Passwort erstellt Benutzer Zitat Zähler auf der Punkte-App, Ende Zitat an Star Coat Prozentsatz Zeichen vor Gericht durch Zitat meinen Pass identifiziert. Beenden Sie das Zitat halb nennen Sie es. Erlauben Sie dem Benutzer vollständige Achsen für die Datenbank. Gewähren Sie auch alle Privilegien auf Counter dot star. Starten Sie den Angebotszähler bei Ausschuss- und Angebotsbeginn bei offenen Anführungsprozentsatz Semikolon und laden Sie die Privilegien neu. Flush Privilegien, sagte Michael. Beenden Sie nun mit Control D und versuchen Sie, sich mit dem neuen Täter zu melden. Meine Fortsetzung Dash, Sie kontern auf diesen Mist. Das ist mein Passwort. Wenn Sie sich jetzt in guter Form einloggen können,
versuchen Sie, die Zählertabelle zu verwenden. Verwenden Sie das Zähler-Semikolon. Wenn Sie keinen Fehler bekommen, sind
wir gut. Jetzt schauen Sie mit Exit Semikolon
33. MySQL auf Windows mit Chocolatey installieren: dank jonggle lady Installation meiner Fortsetzung unter Windows ist ziemlich einfach. Wir werden das Maria DB-Paket installieren, das genau wie meine Fortsetzung funktioniert. Öffnen Sie eine Power-Shell als Administrator und geben Sie Shoko Install Maria DB ein. Schließen Sie nun eine Power-Shell-Anwendung vollständig eine offene und neue reguläre Sitzung. Lassen Sie uns überprüfen, ob mein Geheimnis funktioniert und
protokolliert mit meiner Fortsetzung, dass Sie Root-Exit mit Exit-Semikolon verwenden. Sichern Sie die Installation, indem Sie ein Root-Kennwort erstellen. Ich werde Route Pass Typ verwenden. Meine Fortsetzung, Admin, dass Versteck Benutzer gleich Route,
Passwort, Passwort, Zitat, Route, Pass und drücken Sie Enter Jetzt versuchen Sie mit meiner Fortsetzung, die Sie root Dutch Be Brew Pass . Wenn man hineinschaut, bedeutet das, dass alles funktioniert. Beenden Sie das Steuerelement. Sehen Sie, es ist eine gute Praxis, um die Datenbank mit einem bestimmten Benutzer und Reisepass zu erstellen und nicht
den Root-Benutzer aus der Anwendung verwenden Im nächsten Abschnitt wird eine
Besucherzähleranwendung erstellen, so dass wir eine -Datenbank namens Counter. Wir werden auf diese Datenbank mit einem Benutzerzähler auf der Punktzahl und dem Passwort zugreifen. Mein Passwort. Also schaut auf meine Fortsetzung mit deinem Routenbenutzer und Passwort. Erstellen Sie die Datenbank, erstellen Sie Datenbankzähler und erstellen Sie jetzt den Benutzer und das Kennwort. Erstellen Sie Yusor Counter App mit Prozentzeichen, das durch mein Passwort identifiziert wird. Erlauben Sie dem Benutzer vollen Zugriff auf die Datenbank, gewähren Sie allen Privilegien für konterterte out Stern, um in der Punkte-App mit Prozentzeichen zu Zähler und laden Sie die Berechtigungen neu. Flush Privilegien Jetzt ist das Beenden unter Kontrolle. Sehen und versuchen, sich mit dem neuen APP-Benutzer anmelden meine Fortsetzung, die Sie kontern auf der Punktzahl nach oben. Das ist mein Passwort. Wenn Sie sich jetzt in guter Form einloggen können,
versuchen Sie, die Zählertabelle zu verwenden. Verwenden Sie Zähler, wenn Sie keinen Fehler bekommen, wäre jetzt gut niedrige Gicht mit exit.
34. MySQL auf PythonAnywhere einrichten: wenn Sie Biss überall verwenden. Meine Fortsetzung ist bereits eingebaut, so dass Sie sie nicht manuell installieren müssen. Gehen Sie einfach zum Dashboard und klicken Sie auf Datenbanken in der Navigationsleiste. Sie werden sehen, dass Sie bereits einen Benutzernamen für Sie festgelegt haben, der normalerweise den gleichen Namen wie Ihr Python überall Benutzer hat. jedoch, Ich empfehle Ihnenjedoch,ein neues Kennwort für den Datenbankbenutzer festzulegen. Gehen Sie also zum Abschnitt „Mein Nachfolgepasswort“ und geben Sie ein neues Passwort ein. Ich werde meinen Reisepass verwenden, aber fühle mich frei, einen sichereren zu erstellen. Im nächsten Abschnitt werden
wir eine Besucherzähleranwendung erstellen So erstellen wir eine Datenbank namens Counter auf einen Datenbankabschnitt Typ Zähler auf dem Datenbanknamen zu erstellen. Dadurch wird die Datenbank für Sie erstellt. jedoch, Beachten Siejedoch,dass der tatsächliche Datenbankname Ihr Benutzername plus ein Dollarzeichen plus einen Ihnen eingegebenen Datenbanknamen ist. Kampf auf überall erlaubt nicht die Erstellung von einem bestimmten Benutzer, so müssen Sie ihre meine Fortsetzung Benutzer für Sie zugewiesen verwenden, um es aus der
Anwendung zu verwenden , um sicherzustellen, dass wir mit der Datenbank verbinden können. Öffnen Sie eine bash, console und geben Sie Folgendes ein, indem Sie es durch Ihren Benutzernamen, Ihr Passwort und Ihre Datenbank-Host-Adresse ersetzen. Wenn Sie auf meine Fortsetzung bekommen Prompt waren gut. Geben Sie das Exit Semikolon ein, um es zu beenden.
35. MVC und der Object Relationale Mapper: Bevor wir anfangen, unsere erste datenbankgesteuerte Anwendung zu bauen, wollte
ich Ihnen das Konzept aus dem Objekt vorstellen Relational Mapper oder O. R M. In der Theorie könnten
wir Database Square ist direkt von unserer Anwendung Code jedes Mal, wenn wir Daten wollen . wir zum Beispiel an, Nehmenwir
zum Beispiel an,
wir sind auf einer Route, die zumindest von den Benutzern entfernt werden muss. Wir könnten einfach eine Verbindung mit der Datenbank herstellen, rechts die Abfrage, um alle Benutzer aus der Datenbank auszuwählen und vielleicht andere Operationen auf der Datenbank durchzuführen und sie zu schließen. Aber sagen wir, wir hatten eine neue Struktur in der Datenbank, vielleicht ein Live-Feld, weil einige Benutzer ausgesetzt werden könnten, um schlechte Inhalte zu posten. Oder sagen wir, wir entscheiden uns, zu einem neuen Sequel Datenbankserver wie Post Chris zu wechseln. Wir müssten all diese Anfragen durchlaufen und sie ändern. Aus diesem Grund haben wir das Modell M V C für Anwendungen verwendet. Weißt du noch, als ich das Botschaftsmodell erwähnte? Als wir die Vorlagen eingeführt haben, sagten
wir, dass Vorlagen, wo die Ansichten Und jetzt, wo wir eine Datenbank zur Verfügung haben, werden
wir das Modell Toby haben, eine Datei, die sich mit allem beschäftigt, was mit der Datenbank zu sprechen. Diese Modelldatei wird etwas als ein oder in dem im Wesentlichen konvertiert Daten
stieg in Objekte zu nutzen , so dass, wenn wir auf Benutzer in dieser Route zugreifen möchten, würden
wir eine Liste von Objekten aus der moralischen anfordern, nicht einen Fortsetzungsbefehl ausgeben. Auf diese Weise, wenn sich etwas mit der Datenbankstruktur ändert oder wir Sequel-Server geändert
haben, müssen wir nur die Modelldatei ändern und sich nicht um den Rest der Anwendung kümmern. Dies wird deutlicher, sobald wir unsere erste NBC-Anwendung erstellt haben, also lassen Sie uns damit fortfahren.
36. Unsere erste Data: Wir werden einen großen Schritt in unserer Entwicklung machen,
schrieb, schrieb, unsere erste datenbankgesteuerte Kolbenanwendung zu
schaffen. Die Anwendung ist ein Besucherzähler Art von dem, was Sie in diesen alten Schulen
Websites in der Fußzeile sehen würden . Das würde zählen, wie viele Leute die Website wie gewohnt besucht haben. Wir haben verschiedene Einrichtungsanweisungen, abhängig von Ihrem Entwicklungssystem, also entkommen, um die richtige für Sie, und wir werden alle über einige zusammen auf der anderen Seite.
37. Erste Anwendungseinstellung auf Mac und Windows: Wir werden ein brandneues Verzeichnis für unsere Besucherzähleranwendung erstellen, und dieser Prozess wird Ihnen zeigen, wie Sie eine Marke der Flask Anwendung mit allem, was wir
jetzt wissen,einrichten jetzt wissen, Beginnen wir mit der Erstellung unseres Anwendungsverzeichnisses in Schrägstrich OPD. Wechseln Sie nun in dieses Verzeichnis. Lassen Sie uns unsere virtuelle Umgebung einrichten und aktiviert. Jetzt müssen wir unsere Anforderungen aufstellen. TXT-Datei. Also öffnen Sie Adam auf diesem Ordner, indem Sie Adam dot tun oder indem Sie Adam öffnen und dann den Schrägstrich
Hoppity Schrägstrich Mr Dash Zähler Ordner öffnen. Jetzt werden wir die Anforderungen zu schaffen. TXT-Datei. Die Kernpakete, die wir installieren werden, sind die folgenden. Sie könnten diese Zeilen in die Anforderung-TXT-Datei einfügen, Jedoch, da kleine Unterschiede zwischen Versionen und Paketen, habe
ich erlebt, dass Studenten manchmal Probleme mit den Bibliotheken haben, die ich in den Kurs im Vergleich zu dem, was sie installiert werden. Also, wenn Sie extra sicher sein wollen, kopieren und fügen Sie die Anforderung 60 unten, speichern Sie die Datei und installieren Sie die Pakete, indem Sie peeping stahl, dass unsere Anforderungen txt. Sobald das erledigt ist, können
wir mit dem Schreiben der Anwendung beginnen
38. Erste Anwendungseinstellung auf PythonAnywhere: Wir werden ein brandneues Verzeichnis für unsere Besucherzähleranwendung erstellen, und dieser Prozess wird Ihnen zeigen, wie Sie eine brandneue Flats Komplikation mit allem,
was wir jetzt wissen,einrichten was wir jetzt wissen, Beginnen wir mit der Erstellung unseres Pflichtverzeichnisses in Ihren Benutzern Schrägstrich o p t Ordner. Wechseln Sie in dieses Verzeichnis. Jetzt müssen wir unsere virtuelle Umgebung einrichten und aktiviert. Jetzt werden wir die Anforderungen txt-Datei zu erstellen. Das Paket ist, dass wir installieren werden sind die folgenden Sie könnten diese Zeilen in die
Anforderungen txt-Datei setzen . Jedoch, wegen der kleinen Unterschiede zwischen Versionen und Paketen, haben erlebt, dass Studenten manchmal Probleme mit den Bibliotheken, die ich in den Kurs setzen im Vergleich zu dem, was sie installiert werden. Also, wenn Sie extra sicher sein wollen, kopieren und fügen Sie ihre Anforderungen txt Datei unten, speichern Sie die Datei und installierte Pakete, indem Sie Peeping Stola Strich unsere Anforderungen Txt. Wir müssen jetzt die Web-Einstellungen aus unserer App aktualisieren. Also gehen Sie zum Web-Dashboard zuerst auf dem Codeabschnitt änderte den Quellcode Verzeichnis zwei. Geben Sie Ihren Benutzernamen ein. Oh, Petey Rezidor Armaturenbrett-Zähler. Als nächstes ändern Sie die Whiskey-Datei und aktualisieren Sie Zeile fünf mit dem neuen Verzeichnis und ändern Sie die Zeile. 11 Toe das folgende Speichern in Datei. schließlich Aktualisieren Sieschließlichden virtuellen IWF die im Besucherzähler. Klicken Sie einfach auf den Link und Time Visitor Dash-Zähler und es wird automatisch füllen Reloaded
Web-Anwendung mit dem grünen Knopf. Sobald das erledigt ist, können
wir mit dem Schreiben der Anwendung beginnen.
39. Unsere Application: Also lasst uns die Anforderungen übergehen. Txt Bibliotheken, um ein besseres Verständnis zu bekommen, was wir einschließen und warum flask und durch Donner M. Sie hatten schon vorher gesehen. Flask ist das, wo Framework und Python DRM es uns ermöglicht, Umgebungsvariablen mit einer
einfachen Datei zu verwenden , indem meine Fortsetzung eine Connector-Bibliothek genannt wird, und es ermöglicht unsere Kolbenanwendung, mit einer Fahrraddatenbank Fortsetzung zu sprechen. Alchemy wird unsere Datenbank sein oder in Remember, wenn wir über die Verwendung von Datenbank-Datensätzen als
Objekte gesprochen , die die Low-Level-Fortsetzung Steinbrüche von unserer Anwendung Sequel Alchemy trennt, ermöglicht es uns, das zu tun. Schließlich ermöglicht
Flask Migrate uns, Änderungen zu verfolgen, die wir vorgenommen haben, nahm das Datenbankschema, so dass alle anderen Teammitglieder, die zusammen mit Ihnen oder anderen Installationen der Anwendung arbeiten können mit diesen Änderungen auf dem neuesten Stand gehalten werden.
40. Die Umgebungseinstellungen: Jetzt müssen wir an der Umwelt arbeiten, unter Berufung auf bisher Anwendung. Also lassen Sie uns unsere Punktflask m Datei erstellen und erklären, was sie sind. Erstellen Sie also die Datei und legen Sie die folgenden Virale in sie per Telefon überall. Stellen Sie sicher, dass Sie den Hostbenutzer und den Datenbanknamen verwenden, der Ihnen in Ihren Datenbanken zugewiesen ist . Stechen Sie so für die Python überall, die Einstellungen oben gehorchen. Ich habe den folgenden Punkt flachen Betrug verwendet. Speichern Sie die Datei und lassen Sie uns die Vibe überprüfen. ALS eins nach dem anderen die 1. 3 wir zuvor gesehen haben, Flask App sagt Kolben, die mit dem Kolben oder auf Befehl Nordeas Bericht verwaltet Arzt ey hier laufen eingereicht, was noch nicht existiert. Wir werden erklären, dass in der nächsten Lektion Flasche auf der Partitur, em sagt Flasche, dass dies eine Entwicklungsumgebung ist, so dass es das automatische Nachladen
auf unseren Fenstern und max Setups aktiviert . Sorry, Python überall unterstützt das Nachladen sowie das Einschalten des Debug-Boots nicht. Schließlich brauchen
wir einen geheimen Schlüssel, um Sessions verwenden zu können. Der Rest der Datei findet, dass die X Benutzername,
Passwort und Namen haben wir in unserem vorherigen Abschnitt erstellt nun die Einstellungen B Y-Datei auf
dem Anwendungsordner, die wie folgt aussieht Fortsetzung Alchemy braucht nur die Fortsetzung Alchemie. Datenbank Ihre Augeneinstellung. Aber auf diese Weise können Sie die Komponenten von der DB wirklich Ihre Augenkomponente erzählen. Speichern Sie die Datei. Als nächstes schauen
wir uns unsere Hauptanwendungsfabrik an.
41. Die Application: in unserer hallo Welt-Anwendung sind hallo dot p y Datei hatte alles darin enthalten. Die Anwendung richtete die Routen ein und er wurde erwartet, dass er von selbst in der Nähe sein wird. In der realen Welt jedoch nach Modulen organisiert, werden
Anwendungen
jedoch nach Modulen organisiert,wobei das Modul etwas anderes macht, was dazu beiträgt, Ordnung zu erhalten und neue Funktionen einfacher zu erstellen. Beispielsweise in einer Buchhaltungsanwendung können
in einer Buchhaltungsanwendung
alle benutzerbezogenen Routen und Sitten in einem Benutzerverzeichnis und allen Transaktionen im
Zusammenhang mit der Zehe verbleiben . Diese Benutzer lebten getrennt in einem Transaktionsverzeichnis. Um Dysfunktionalität besser unterstützen zu können, werden wir eine Anwendung Punkt B Y-Datei erstellen, die die Erstellung von Instanzen
aus der APP auf einer separaten verwalten B Y-Datei ermöglicht , die von Flask ausgeführt wird, die tatsächlich laichen. Eine Instanz. Da der Anwendungspunkt B y Instanzen aus der APP erzeugt, nennen
wir diese Methode eine Factory, und sie folgt dem Factory-Entwurfsmuster. Also lassen Sie uns zuerst die Anwendung DePuy Datei überprüfen, so erstellen Sie eine Anwendung up ey Datei und legen Sie den folgenden Code hinein. Die ersten 3 Zeilen importieren die verschiedenen Bibliotheken. Wir brauchen Kolben Sequel Alchemie und Flachs migrieren so weit, so gut. Als nächstes richten
wir ein praktikables namens DB ein, das eine Instanz aus sequel Alchemy erstellt. Dies wird die Verbindung mit ihrer Datenbank unter Verwendung der Fläschchen Punkt m Viralen aufbauen. Dann haben wir die APP-Funktion erstellen definiert, die mit mehr oder weniger dem beginnt, was wir in Hello hatten. Seien Sie nicht was, erstellen Sie eine Instanz aus der Flask-Klasse und richten Sie dann die Konfiguration aus der Einstellung Stop ey Datei. Die nächsten beiden Zeilen haben die Datenbank tatsächlich initialisiert und beginnen, die Änderungen daran zu verfolgen . Und schließlich kehrten wir die App-Instanz an wen zurück, der Dysfunktion aufruft. Das mag alles nach viel klingen, aber nach ein paar Malen wird es zur zweiten Natur. Speichern einer Datei, die schließlich erstellt wurde. Verwaltet Ihre y Datei mit den folgenden Zeilen. Dies wird nur importieren, um APP-Funktion von Anwendung B Y zu erstellen und dann eine beliebige Instanz aus der APP zu erstellen. Speichern Sie die Datei in der nächsten Lektion wird unser erstes Modul erstellen, das Zählermodul
42. Baumodule mit Blueprints: Wir werden jetzt sehen, wie wir unsere Anwendung auf modulare Weise weiterentwickeln, und zwar durch die Verwendung von Kolben. Blaupausen. Also, was sind Blaupausen? Betrachten Sie sie als die Bausteine Ihrer Anwendung, die sich auf einen bestimmten
Bereich konzentrieren . zum Beispiel an, Nehmen wirzum Beispiel an,wir haben eine soziale Plattform wie Twitter aufgebaut. Wir könnten ein Benutzermodul haben, das sich mit der Protokollierungsregistrierung befassen würde. In der Profilbearbeitung. Wir könnten ein Feeds-Modul haben, das mit dem Posten der Nachrichten Toe Wassernutzer und ein anderes Beziehungsmodul befassen würde, das sich mit den folgenden und anderen Benutzern befassen würde. Jedes dieser Module hätte einen entsprechenden Model-Controller und Ansichten in Kolben. Ich verwende View stop ey für den Controller und Vorlagen für die Ansichten. Also nannte ich dies die MTV-Mustermodellvorlagenansicht. Sie haben auch ihre eigenen Tests, die nur die Funktionalität testen, die zu diesem Modul gehört. Ich rufe auch jedes der Module und die App auf, weil sie eine Art von vielen Anwendungen ihrer eigenen sind, dauerte ein bisschen einfach. Wir werden nur ein Modul für die Zähleranwendung haben, so dass Sie den Hang davon bekommen, also bauen wir unsere erste Counter-App
43. Unser erster Blauer Aufsatz: Lassen Sie uns also unser erstes Blueprint-Modul bauen. Dieses Modul stellt sicher, dass wir jedes Mal, wenn
wir die Seite laden, den Zähler in der Datenbank um eins erhöhen. Also beginnen wir mit der Erstellung unseres Modulverzeichnisses. also in Ihrem Stammverzeichnis Erstellen Siealso in Ihrem Stammverzeichniseinen Ordner Cold Counter. Da dies ein Python-Modell sein wird, aus dem
wir Dinge importieren werden, müssen wir darin eine b y-Datei hinzufügen. Erstellen Sie das also innerhalb des Zählerverzeichnisses. Als nächstes wird unsere Botschaft Controller für diese Zähler-App parade, die Ansichten B y aufruft. Erstellen Sie diese Datei innerhalb des Dateityps die folgende die erste Zeile importiert die
Blueprint-Klasse aus flask und die zweite Zeile erstellt tatsächlich eine Blueprint-Instanz unter Umgehung des Namens aus dem Modul, das Zähler-App und den magischen Namen lebensfähig aufruft, der das
Dateimodul enthält . Lassen Sie uns nun die erste Route von diesem Modul erstellen, die der Root-Euro sein wird. Beachten Sie, wie der Dekorateur nicht mehr bei AP sagt. Jetzt verwenden wir den Blueprints Namen, speichern die Datei, und öffnen nun die Anwendung dop ey und fügen Sie diese Zeilen direkt vor der Rückkehr bei. Also zuerst importieren wir den Zähler bei Blueprint aus der Views B y Datei. Und dann haben wir diesen Blueprint mit unserer globalen Flask-Anwendung registriert. Gespeicherte eine Datei, und jetzt werden wir die Website in unserem Browser für Windows und Mac überprüfen. Gehen Sie zum Terminal und stellen Sie sicher, dass Ihr virtueller IMF aktiviert ist und geben Sie den Kolben ein. Führen Sie aus und gehen Sie dann zum lokalen Host 5000 in Ihrem Browser. Dieser lokale Host ist der gleiche wie der 1 27,0 Punkt 0.1, den wir überall auf bison verwendet haben. Stellen Sie sicher, dass Sie den Server neu gestartet haben und gehen Sie zu Ihrer Seite. Euro. Sie sollten die Zähler-App auf der Seite sehen. Wenn irgendetwas nicht funktioniert, überprüfen Sie die Luftnachrichten im Browser oder im Terminal überall telefonisch. Verfügt auch über einen Link zum Fehlerprotokoll im Abschnitt „Dateien sperren“ auf der Registerkarte „Web“. Jetzt, da wir den Routersatz kennen, bauen
wir unser Modell
44. Das Counter: Jetzt müssen wir unser Counter-APS Modell bauen, wo wir dieses Modell definieren werden. Schema des Modells kann mehrere verwandte Klassen für jede Klasse haben, stellt eine Tabelle in der Datenbank dar. Wir machen unsere erste Anwendung wirklich einfach, damit Sie verstehen, wie alles funktioniert. Also brauchen wir nur eine Klasse der Zählermodellklasse. Erstellen Sie also eine neue Datei im Zählerverzeichnis namens Models B Y und lassen Sie uns anfangen,
zuerst zu bauen , müssen
wir die Fortsetzung Alchemy Database importieren. Instanz. Zehe das Modell aus dem Anwendungsimport als nächstes wird die
Zählerklassenzähler Devi Done Modell definieren . Wir definieren die Zählerklasse als Erweiterung aus der Fortsetzung Alchemy Model Class. Innerhalb der Klasse definiert zwei Felder I D und Count. Die erste ist unsere I D, die die erforderliche Identifikation gefüllt ist. Dies ist eine Zahl, die automatisch von eins auf Inkrementen beginnt, und wir sagen Sequel AKA Me dies, indem wir sie als db dot integer definieren und es zu unserem
Primärschlüssel machen . Wir könnten dieses Feld etwas anderes nennen, aber es ist Standard, es i d zu nennen. Das zweite Feld ist Count, das eine Zahl von Treffern hält, die die Seite erhalten hat. Für den Moment brauchen
wir nur eine Nummer. Also haben wir dies nur als Ganzzahl definiert. Okay, so weit so gut. Jetzt müssen wir die innit-Methode für die Klasse definieren. Die endete Methode ist, was aufgerufen wird, wenn wir das Objekt zum ersten Mal erstellen. Also in der gleichen Klasse, tun Sie den folgenden Tod in ihm selbst kämmen Konto Selbst. Diese Zählung entspricht dem Lager. Sie werden dies in Aktion sehen, wenn wir das Objekt erstellen. Schließlich sollten
alte Klassen eine Reproduktionsmethode haben, die ist, wie sie in Terminal gedruckt werden, wenn wir den Datensatz sehen. Also nur zu taub r e pr selbst zurückkehren f zählen selbst nicht. Die ganze Datei sieht also so aus. Speichern Sie die Datei. Und jetzt lassen Sie uns die Datenbank initialisieren und in das Konzept von Migrationen eingeführt werden.
45. Einführung in Migrationen: Wenn sich unsere Anwendung weiterentwickelt, werden uns
die Datenbankmodelle gut wachsen. Aber so wie wir die Geschichte unseres Codes aufzeichnen und die Fähigkeit haben,
Dinge rückgängig zu machen , wenn wir Migrationen durcheinander gebracht haben, ist das gleiche Konzept, das auf unsere Datenmodelle angewendet wird. Wir werden dafür die Flask Migrate Bibliothek verwenden, und es gibt vier wichtige Kommentare, die man sich merken muss. Darin. Wir haben verwendet, ist das erste Mal, dass wir unsere Migrationen starten, meine großen Schecks, alle Änderungen in den Modellen der Anwendung und Stores. Die Änderungen in einem Upgrade der Migrationsdatei wenden die neueste Migrationsdatei an. Änderungen am Datenbank-Downgrade werden vom letzten Migrations-Tee zurückgesetzt, dem zuvor in der Datenbank. Am Anfang werden
Sie über die Reihenfolge aus Operationen verwirrt sein und ging zu tun, was. Aber glaub mir, es wird zur zweiten Natur, nachdem du es mehrmals getan hast. Denken Sie daran, dass Migrate nur die Änderungen im Migrationsordner erstellt, Datenbank
jedoch nicht ändert. Das ist es, was Upgrade bewirkt. Bevor wir
jedochetwas tun, jedoch müssen
wir einen wichtigen Schritt machen, an den Sie sich beim Erstellen neuer Modelle erinnern müssen, die Sie den Migrationen hinzufügen
möchten. Bitte schreiben Sie das auf, da es sehr wichtig ist. Sie müssen in der Lage sein, das Modell aus Ihrer Anwendung zu sehen. P Y sehen Sie die Art und Weise, wie meine großen entdeckt ihre Modelle geleert sind, ist über sie
migrieren gleich migrieren App Komma db Zeile in der Anwendung. P Y. Wenn Sie den Rest der Datei folgen, werden
Sie sehen, dass wir jetzt Zähler importieren, die Ansichten online. 19. Ok, so offen konterte unsere Ansichten. Irgendwas fehlt? Ja, es gibt keine Erwähnungen von den Modellen. Sei warum überall hier. Wenn wir die Migration jetzt durchführen, Migrate keine Modelle überall sehen und keine Migration so online generieren. Drei. Fügen Sie den folgenden Befehl aus konterten, dass Modelle importieren Leistungsindikator. Jetzt Flash My great wird durch Anwendungen B Y gehen. Dann gehen Sie über, um die Ansichten zu kontern und die Modelle zu sehen und in der Lage zu wissen, dass es einige
Datenbankdefinitionen in dieser Anwendung gibt . Jetzt gehen Sie vor und speichern Sie die Datei. Denken Sie daran, diese
Regel zu beachten, da dies 80% der Probleme bei nicht erstellten Migrationen entspricht. Also lassen Sie uns initialisieren Migrationen Ordner. Gehen Sie zu Ihrem Terminal oder öffnen Sie eine eingehackte per Telefon überall. Stellen Sie sicher, dass Ihr virtuelles F aktiviert ist und tun Flask db Darin werden
Sie einige Nachrichten über die Erstellung eines Verzeichnisses namens Migrations sehen. nun Wenn Sienunin Ihrem Code-Editor schauen, werden
Sie den Verzeichnishinweis sehen, dass wir,
ah,
Versions-Verzeichnis im Inneren haben ah, , das leer ist. Wenn wir unsere erste Migration durchführen, werden
wir eine Datei sehen, die dort erstellt wurde. An diesem Punkt ist also nichts passiert. Plus, mein großartiges initialisieren-Verzeichnis, in dem die Versionen gespeichert werden, wird jetzt die erste Migration durchführen. Also Flachmann. Sie werden migriert. Wenn Ihre Datenbankverbindung ordnungsgemäß funktioniert, sehen
Sie die erste Versionsdatei, die in Ihrem Verzeichnis erstellt wurde. Wenn Sie einige Fehler sehen,
überprüfen Sie, ob Ihr Mike Sequel Server läuft und dass Sieüber die Zähler-App, den
Benutzernamen und das Passwort eine Verbindung vom
Terminalherstellen können über die Zähler-App, den
Benutzernamen und das Passwort eine Verbindung vom
Terminal . Öffnen Sie nun die Umleitungsdatei. Es würde wie eine Zeichenfolge mit Zahlen und Buchstaben aussehen, die mit unterstrichenem Punkt B.
Y enden . Sie werden sehen, dass es eine Revision gibt. Identifizieren Sie unseren Abschnitt und dann zwei Funktionen Upgrade und Downgrade Upgrade zeigt die Befehle aus dem vorherigen Zustand zu bewegen. In diesem Fall, da dies unsere 1. 1 ist, sagt es, dass es die Zählertabelle erstellt und zwei Spalten I D und Count Downgrade nur sagt, dass es die Tabelle löschen oder löschen wird, die uns
effektiv in den vorherigen Zustand zurückbringen würde , wenn wir keine Thekentisch. Es ist immer eine gute Idee, sich die neueste Version anzusehen, die meine große generiert,
und zu überprüfen, ob die Aktionen in ihren Aktionen mit den Änderungen übereinstimmen, die Sie tun möchten. Wenn dies aus irgendeinem Grund nicht der Fall ist, können
Sie es sicher löschen, bevor Sie etwas anderes tun. Suchen Sie nach fehlenden Dingen in Ihrem Modell und generieren Sie dann erneut. Sobald die Dinge gut aussehen, können
Sie den Prozess abschließen, indem Sie ein Upgrade durchführen, das tatsächlich die Änderungen an der Datenbank vornimmt. Bei diesem ersten Mal wird
es tatsächlich die Tabelle für uns erstellen. Also gehen Sie voran und tun Flachmann db Upgrade. Beachten Sie die Meldung Laufendes Upgrade. Leere Nachricht. So können Sie feststellen, dass die Änderungen in der Datenbank tatsächlich implementiert wurden. Wenn Sie sich von einem Vers im Schlepptau bewegen. Eine andere, Sie werden sehen, dass zwei Version ich ds da drin. Dies ist vorerst gut genug, da wir unsere Anwendung weiterentwickeln und weitere Tabellen
und Felder hinzufügen , um den Migrationsworkflow besser kennenzulernen
46. Datenbankoperationen aus der Shell: eines der Dinge, die ich gerne tun würde, bevor ich Code schreibe, der Objekte in der
Anwendung liest oder schreibt , besteht darin, sie auf der Python-Flask-Shell zu testen, wie Sie spawnen können. Ein Python-Shell-Flask ermöglicht es Ihnen, eine Shell zu öffnen, auf der Ihre Anwendung geladen ist. Also lassen Sie uns versuchen, diese Art Kolbenschale. Sie werden die bekannten drei abgewinkelten Pfeile sehen, aber jetzt können wir Dinge aus unserer Verpflichtung importieren und testen. , Erinnern Sie sich daran,dass die Menschenoperationen, über die wir zuvor gesprochen haben, alle in dieser Lektion erledigen werden. Also erste Lektion schlecht die Gegenklasse von Gegenmodellen von Gegenmeilen in schlechtem Zähler. Wir müssen auch diese DB Sequel Alchemy Object aus unserer Anwendungsdatei aus Application Import DB importieren. Im Moment ist die Zählertabelle leer, da wir sie gerade importiert haben. Also lassen Sie uns überprüfen, dass Typ Zähler Punkt Abfrage, dass alle. Ob Sie es glauben oder nicht, wir haben gerade eine Abfrage auf der Datenbank durch die Fortsetzung Alchemy ausgeführt oder, ähm, wir hatten eine leere Liste, was Sinn macht. Also hier wurden Zähler als Repräsentation der Zählertabelle verwendet. Wir verwenden immer die Abfragemethode, um Abfragen auf der Datenbank auszuführen, und alle nur Mittel bekommen mir alle Datensätze. Also lasst uns versuchen, unseren ersten Datensatz unter Datenbank zu schreiben. Zuerst tun Zähler gleich Zählerzahl gleich eins. jedoch wurdejedoch
nichts eingelesen. Ich stütze mich gerade noch. Sequel Alchemy hat das Konzept der Rezession. Sie können überprüfen, ob das Zählerobjekt nicht geschrieben wurde. Toe die Datenbank, indem Sie ihren i d Zähler Punkt i d überprüfen. Da es nicht geschrieben wurde, hat
die Datenbank es nicht auf i d zugewiesen. Jetzt werden wir die Zähleroperation der Sitzung hinzufügen, indem wir db diese Sitzung tun. Fügen Sie keinen Zähler hinzu. Stellen Sie sich also eine Sitzung als eine Reihe von Datenbankoperationen vor, die miteinander verwandt sind , dass wir, sobald
wir alle notwendigen haben, die Datenbank begehen. Dies hat zwei Vorteile. Eins. Sie müssen nicht viele Operationen einzeln schreiben, sondern können alle mit einem Aufruf ausführen,
was es für die Datenbank einfacher macht, weniger Rechte zu haben. Und zwei, Wenn etwas schief geht mit einem dieser Operationen, wir können sie alle leicht zurückrollen. In unserem Fall wollen
wir nur unser Gegenobjekt in die Datenbank schreiben. Also, um die B, die Sitzung, die jetzt begeht, überprüfen Sie den Zähler Punkt i d Erfolg. Wir haben jetzt eine rollende Datenbank, die so aussieht, und das war das Meer in der Menge. Lassen Sie uns ein R machen. Also, wie können wir den Wert von diesem Datensatz abrufen? Es gibt zwei Möglichkeiten. Zuerst wird seine i D. Also, wenn wir die Idee der Platte kennen, können
wir den folgenden Zähler auf dieser Partitur tun. Eins ist gleich. Zählern Sie diesen Abfragepunkt Holen Sie sich einen. Sie können nun den Objektzähler drucken. Unterstreichen Sie einen Hinweis Das Format aus dem Objekt folgt dem, was wir für die
Ripple-Methode aus der Zählerklasse erstellt haben . Wir können auch den Wert aus Zählzähler auf ihre Punktzahl ein Punktanzahl bekommen. Die andere Möglichkeit besteht darin, eine Listentypabfrage zu machen, zum Beispiel haben wir diese früher gesehen. Zähler auf der Partiturliste gleich Zähler, die Abfrage, dass alle Jetzt, wenn Sie die Zählerliste drucken, erhalten
Sie die heiligen Gegenstände in der Zählertabelle, um das erste Ergebnis bei der Zuweisung von
Zeh zu erhalten , ein lebensfähiges wir tun Zähler auf der Partitur. Zwei gleich Zähler auf der Partitur, damit nicht von Null. Und wenn Sie Zähler auf dem Partitur-Tool drucken, werden
Sie sehen, dass es der gleiche Datensatz ist. Es gibt auch eine praktische Methode, um die Klammer Null-Last-Operation zu überspringen. Wenn Sie wissen, dass die Abfrage in nur einem Objekt in der Liste führt oder das erste Ergebnis das ist, das Sie immer wollen, können Sie tun, Counter unterstrichen zwei gleich. Zähle dieser Abfrage, die zuerst, die oft nützlich sein wird. Okay, wie wär's mit dem U in geknackt? Lassen Sie uns den Datensatz aktualisieren. Also holen wir es zuerst, nur für den Fall, dass wir es verloren haben. Zähler gleich Zähler eine Abfrage, die von einem bekommen und bringen den Wert der count counter dot com. Lasst uns auf zwei zählen. So tun Sie Zähler. Diese Zählung ist gleich zwei. Wenn wir Aktualisierungen durchführen, müssen
wir der Datenbanksitzung nicht hinzufügen. Seit der Fortsetzung hat
Alchemy ein i. D. für die Aufzeichnung, also um unser Update zu schreiben, nur um sie dieses Sitzungsdokument zu sein und das war's. Versuchen Sie, den Datensatz mit einem anderen praktikablen abzurufen, und überprüfen Sie, ob der Zählwert aktualisiert wurde. Schließlich können
wir tun, dass D aus der Menge der beleuchteten Zehe, löschen Sie diesen Datensatz. Sie können es zuerst abrufen und dann die löschende Methode aus der Sitzung aufrufen. Zähler ist gleich Zähler, dass Abfrage, die von einem bekommen. Sie sind, dass die Sitzung, die die Elite-Zähler wirklich löschen Sie es in der Datenbank müssen Sie einen Kometen zu tun, sie sein, dass Sitzung dot com es. Und jetzt, wenn Sie versuchen, irgendwelche Datensätze zu bekommen, sehen
Sie die Tabelle. Es ist wieder leer. Gegenüber der Abfrage, die alle Okay, das ist alles, was wir brauchen, um unsere Zähleranwendung zu bauen.
47. Die Seitenaufrufe Counter: Die erste Generation unserer Anwendung wird nur sein, um zu messen, wie oft die
Homepage geladen wurde. Öffnen Sie also Ihren Adam Editor oder navigato Python beliebigen Dateieditor, und öffnen Sie die Zähleransichten B y und fügen Sie den folgenden Code zu unserer innit Methode hinzu. Wir beginnen mit dem Abrufen des ersten Zählerobjekts. Zähler ist gleich Zähler. Fragen Sie diese erste Benachrichtigung nicht ab. Wir müssen die all-Methode nicht damit übergeben. Früher wollen
wir in diesem Fall nur die erste Rekordzeit. Wenn das Land nein ist, bedeutet
dies, dass dies das erste Mal ist, dass wir die Anwendung ausführen und wir sollten den
Datensatz erstellen , so dass wir tun können, wenn nicht Zähler Zähler gleich Zähler aus einer db dieser Sitzung. Dieser Anzeigenzähler, es ist die Sitzung, die begeht. Sehen Sie, wie Winston sie das Gegenobjekt hier gegessen hat. Wir mussten das Argument count Schlüsselwort nicht übergeben, da es sich um ein Positionsargument auf dem Zähler in der Methode handelt. Wir fügen dann den Zähler der Sitzung hinzu und schließlich in die Datenbank übernommen. Was passiert nun, wenn wir einen Gegenrekord finden? Wir tun dies auf dem sonst els Zähler Punktanzahl Glas gleich einer db dieses Sitzungsdokument hier . Wir sind nur an einem Zeh der Zähler, der zählt und die Sitzung begeht. Schließlich können
wir dies auf der Seite setzen. Es gibt noch eine Sache, bevor wir die App ausführen, müssen wir das DB-Objekt aus der
Anwendung importieren , da wir auf die B-Punkt-Sitzung zugreifen. Also oben in der Datei, nachdem die Modelle direkt aus der Anwendung importieren, importieren Sie das B, speichern Sie die Datei und führen Sie jetzt Ihre Flask-Anwendung aus. Gehen Sie zu einem lokalen Gastgeber. Rufen Sie 5000 das erste Mal die Seite wird sagen, der Zähler ist eine echte Debatten und Sie werden den Zähler inkrementell
sehen, obwohl es auf der Seite sehr einfach aussieht, haben
Sie jetzt Diagramme einige ziemlich grundlegende Konzepte über Website Entwicklung, ohne es
zu wissen.
48. Errichtung unserer Testinfrastruktur: professionelle Entwickler integrieren Tests frühzeitig in ihren Entwicklungsfluss, und meine Absicht ist es, Ihnen beizubringen, wie ein professioneller Entwickler funktioniert. Also lasst uns eine Testsuite für diese Anwendung schreiben. Wenn Sie Python irgendwo verwenden, müssen
Sie eine Testdatenbank manuell erstellen. Da wir keinen Root-Zugriff auf ihren meinen Sequel-Server haben, lasse
ich Sie wissen, wann Sie das tun müssen. Das erste, was wir tun müssen, ist die Anwendungspersonen zu ändern, die ich einreichte, so dass wir die Einstellvirale aus dem Test
überschreiben können . Also auf der Create-APP-Methode im folgenden ermöglicht es uns, beliebige
Schlüsselwortargumente an die Funktion zu übergeben , ohne sie ziemlich zu finden. Dann, nach dem Laden der CONFIG-Zeile im folgenden, ermöglicht es uns
diese Update-Methode, die Einstellungen zu überschreiben, die ursprünglich aus der
Einstellungsdatei geladen wurden . Speichern Sie die Datei. Als nächstes müssen
wir in meiner Fortsetzung Root-Passwort die Punkt-Flats Datei und die Savings B
Y-Datei handeln , so dass das Testskript in der Lage ist, die Testdatenbank zu erstellen und zu zerstören. Warum brauchen wir eine separate Testdatenbank für Tests? Nun, die Idee ist, dass Sie die vorhandenen Daten in Ihrer Hauptdatenbank nicht vermasseln. Wir wollen auch sicherstellen, dass alle Codewörter mit neuen Daten jedes Mal, wenn wir die
Tests ausführen . Andernfalls könnten übrige Daten
vorhanden sein, die die Gültigkeit der Tests vermasseln könnten. So auf dot flask em an der meine Fortsetzung Root Password Viable und setzen Sie Ihren Road Passport für PC oder Mac. Wenn Sie irgendwo auf Python sind, lassen Sie es so aussehen. Speichern Sie die Datei. Als nächstes müssen
wir die meine Fortsetzung Root-Passwort zu Einstellungen B Y hinzufügen, während Sie dabei sind. Lassen Sie uns auch diese benutzerdefinierte Fortsetzung Alchemie hinzufügen, Einstellung für Spuränderungen. Andernfalls, wenn Sie die Testsequel ausführen, wird sich
Alchemy darüber beschweren, es nicht zu finden. Speichern Sie die Datei. Als nächstes werden
wir ein Dienstprogramm hinzufügen, um eine Testdatenbank zu erstellen und zu zerstören. Ich habe mich dafür entschieden, dieses Dienstprogramm auf einen neuen Ordner für Sie zu platzieren. Die Idee mit diesem Dienstprogramm ist, dass wir den gleichen Code nicht immer und immer wieder in jedem
der Tests wiederholen , und es wird auch anmutig verwalten. Wenn es kein root-Passwort gibt, setzen Sie vier Fälle wie die Python überall Benutzer. Also gehen Sie vor und erstellen Sie einen Sie tills Ordner und fügen Sie eine darin, dass B y Datei darin, so dass wir es als Modul importieren
können. Als Nächstes großartig. Eine Datei namens test auf der Punktzahl db Punkt b y und legte den folgenden Inhalt darauf. Die Klasse ist mehr oder weniger selbsterklärend auf der innit-Methode, wir sagten, das lebensfähige für die seiner Verbindung. Je nachdem, ob das root-Passwort vorhanden ist oder nicht,
beachten Sie, dass der Name der Testdatenbank unabhängig von dem Namen der Hauptdatenbank ist,
und am Endewird und am Ende er auf dem Punkte-Test markiert. Also, wenn Sie, dass seines Namens ist Zähler, dann wird die Testdatenbank, die erstellt wird, Zähler auf der Punkte-Test sein. Dann haben wir eine erstellen auf der Partitur Devi Methode, die die Testdatenbank erstellt und die endgültige Verbindungszeichenfolge an den Aufrufer
zurückgibt . Schließlich haben
wir eine Drop-DB-Methode, die die Testdatenbank zerstören wird. Beachten Sie, dass beide Methoden nur die Testdatenbank erstellen und zerstören, wenn das root-Passwort zurückgesetzt wird. Ok. das aus dem Weg ist, lassen Sie uns unseren ersten Test erstellen. Ich lege immer jeden APP-Test in den APP-Ordner selbst auf diese Weise. Ältere Tests, die sich auf seine Funktionalität beziehen, befinden sich direkt darin. Erstellen Sie also einen Test, seien Sie im Zählerordner und lassen Sie es mit den Importen im ersten Abschnitt beginnen. Wir importieren die Hauptmethode der Anwendung Factory und ändern ihren Namen, um
APP-Basis zu erstellen , da wir unsere eigene Create-App-Methode haben werden. Im Test importieren
wir auch Komponententest, dem es sich um die eingebaute Testbibliothek von Python handelt. In der nächsten Abhängigkeit müssen
wir die Gedankenkolben M Sichtungen manuell importieren, wobei das DRM der Bibliothek verwendet wird, da diese Datei direkt von Python und nicht von Kolben ausgeführt wird. Die letzten drei Zeilen importieren unsere Modelle und das Dienstprogramm, das wir gerade für die Erstellung der
Testdatenbank erstellt haben. Als nächstes definieren
wir unsere erste Testklasse. Diese Dateien sind nach Klassen und entsprechenden Tests organisiert, und Sie können mehr als eine Klasse für eine einzelne Datei haben. Stellen Sie sich eine Testklasse als eine Gruppe Off bezogene Tests vor, da unsere Anwendung so einfach ist, wird nur eine Klasse namens Countertest haben. Also beginnen wir mit dem folgenden. Konzentrieren wir uns auf die Einrichtungs- und Abreißmethoden. Dies sind keine erforderlichen Methoden. Beachten Sie die seltsamen Namen der Kamelfall-Methode, aber so müssen Sie sie schreiben. Die Einrichtungsmethode wird am Anfang des Tests bis nach unten am Ende jedes Tests ausgeführt. Die Idee ist, dass Sie mit einer neuen Version der APP für jeden Test beginnen. Also beim Einrichten der ersten Instanz aß sie unser handliches, testete das Dienstprogramm und holte die Datenbankverbindung daraus. Als nächstes erstellen
wir eine Instanz über eine Flask-App und auf APP Factory geschrieben. Beachten Sie jedoch, dass dies geschieht, indem Sie diese App-Methode für den Test erstellen, der gerade zurückgibt. Eine Instanz unserer App glaubt, dass die Einsparungen außer Kraft setzen. Dies sind flache Einstellungen und Sie haben sie alle außer Tests gesehen. Wenn Sie eine Flasche Toby im Testmodus definieren, deaktiviert
Flask den Fehlerfang während der Anforderungsbehandlung, so dass Sie bessere
Fehlerberichte erhalten können , wenn Tests durchgeführt werden. Anfragen gegen die Anwendung. Beachten Sie, dass wir die Fortsetzung Alchemy setzen, die Ihr I auf die DVD raten, die ich
von unserem Test das B-Dienstprogramm zurückgekehrt bin . Sobald wir die Up-Fabrik haben, können
wir nicht das wichtigste Stück für Tests erstellen. Der Test-Client. Also nennen wir diese App und es erlaubt, Anfragen an unsere verschiedenen Ural zu senden und die APP wird genau
reagieren, wie normale Anwendung tut. Schließlich müssen
wir alle Anwendungstabellen zu erstellen getestet werden Dienstprogramm erstellt eine Datenbank, aber nicht die Tabellen darin. Bis jetzt haben wir das mit Migrationen gemacht. Aber Fortsetzung Alchemie bietet eine Methode kalt. Erstellen Sie alle, die alle Tabellen erstellen können, die Modelle benötigen. Die Abreißmethode ist das Gegenteil. Es fällt zuerst alle Tische. Und dann haben wir unser Test-DB-Dienstprogramm aufgerufen, um die Testdatenbank zu zerstören. Aber was ist dieser APP-Kontext? Business Bei beiden Methoden ermöglicht es uns
diese APP-Kontextmethode, alles innerhalb des mit Block zu simulieren, als ob wir es von der Flasche aus ausführen würden. Führen Sie Kräuter aus. Denk daran, dass ich dir gesagt habe, dass diese Akte von Typhon und nicht von Kolben geleitet wird. Also, wenn wir db dot erstellt alles, was wir fühlten den Kontext. Wir werden einen Fehler erhalten, weil das DB-Objekt erstellt wird, sobald wir flask ausführen, wie wenn wir
Flats tun . Run-Kontext ist eines der Dinge, an die Sie sich mehr gewöhnen, wenn Sie es mehr verwenden. Moment, Denken Sie imMoment,wenn wir irgendwelche Operationen ausführen müssen, die normalerweise innerhalb einer Ansicht ausgeführt werden würden,
müssen Sie ausführen. Den Kontext zu verwenden, den ich kenne, fühlt sich an wie viel los, oder? Mach dir keine Sorgen. Es ist schwer, wenn du das erste Mal siehst, aber jedes Testfeuer, du wirst diesen ganzen Code zuerst brauchen. Dies ist eine jener Zeiten, die Sie kopieren und einfügen können und sich nicht schlecht fühlen. Damit können
wir endlich unseren ersten Test erstellen.
49. Unser erster Test: bisher haben wir gerade eingerichtet sind Testklasse und wir lehren, unseren ersten Test zu schreiben. Also lasst es uns tun. Es ist Test muss mit dem Wort Test auf der Partitur beginnen, so dass die Komponententestbibliothek weiß, dass sie das Setup vor und das Abreißen danach ausführen muss. Also, das ist richtig der erste Teil. Okay, also der erste Test heißt es Test auf dem Punktezähler. Zuerst führen wir eine Anfrage an uns selbst Punkt-App aus, indem wir den Index Euro treffen. Das ist, was die Slashing ihre ISS. , bedeutet es auch in die Methode
zu gelangen, bedeutet es aucheine Get-Anfrage. Die Ausgabe dieses Vorgangs wird in der RV lebensfähig gespeichert, und es wird eine Reihe von HTML sein, was Sie bekommen würden, wenn Sie eine Ansichtsquelle aus der tatsächlichen Anwendung machen würden. Als nächstes möchten
wir behaupten, dass sich die Zeichenfolge irgendwo im HTML befindet. Wir wissen, dass, wenn die Anwendung korrekt ausgeführt wird und es das erste Mal ist, wir den Zeichenfolgenzähler Semikolon eins auf der Ausgabe erhalten werden, richtig? Dies ist, was Tests durchlaufen, um zu behaupten oder sicherzustellen, dass etwas, das wir erwarten passiert, wenn das Ergebnis aus, das seine Stürze behaupten. Der Test wird gesagt, Toby, nicht bestanden. Speichern Sie die Datei. Okay, bevor wir den Test ausführen, brauchen
wir einen Testläufer im Stammordner. Erstellen Sie also einen Test der P Y-Datei auf dem Besucherzähler Ordner und legen Sie die folgende Schicht. Das Snippet erkennt automatisch alle Tests in allen Apsis in Ihrer Anwendung und führt sie aus. Eine Datei wurde gespeichert. Wenn Sie Python irgendwo verwenden, müssen
Sie die Testdatenbank manuell erstellen. Also gehen Sie in Ihre Datenbanken Abschnitt und erstellen Sie die Gegen-Test-Therapien. Wenn Sie Windows oder Mac verwenden, können wir loslegen. Also öffne dein Terminal. Stellen Sie sicher, dass Ihr virtuelles M aktiviert ist und tippen Sie per Telefontests ein. Abgeordneter. Sie sehen einen kleinen Punkt, und dann hat die Nachricht einen Test in X Sekunden ausgeführt. Dieser kleine Punkt stellt den Test Gegentest dar. Wenn Sie in die Luft kommen, versuchen Sie zu sehen, was die Luft produziert und überprüfen Sie. Der Code ist gut. Sie können hier die gesamte Codebasis überprüfen, also fügen wir eine weitere Assert-Zehe hinzu. Unser erster Test. Wir wissen, dass, wenn wir die Seite zum ersten Mal laden wir den Message-Zähler Doppelpunkt eins. Aber was passiert, wenn wir wieder geladen haben? Richtig? Wir sollten Zähler Doppelpunkt zu bekommen, damit wir die neue Assert in der Test-Zähler-Test direkt nach der 1. 1 Also im folgenden speichern Sie die Datei und führen Sie den Test, um zu sehen, was passiert. Großartig. Die Tests sind vorbei. Hättest du einen brandneuen Test erstellt und behauptet, was denkst du wäre passiert? Versuchen Sie, laut zu sagen, ich warte. Der Test wäre fehlgeschlagen, denn wenn Sie einen neuen Test erstellen, wird
die Datenbank durch die Funktionsgruppe zurückgesetzt. Unter Zähler wird wieder eins sein. Gehen Sie weiter und versuchen Sie es. Wie Sie sehen können, sieht ein fehlgeschlagener Test aus. Vergessen Sie nicht, Ihren Code so zurückzusetzen, wie er waas. Und damit können
wir unsere neuen Anwendungen erstellen,
eine, die nützlicher, aber auch komplexer sein wird. Ein persönlicher Block
50. Flogger, ein Simple a: Wir werden jetzt eine persönliche Blogging-Anwendung erstellen, in der wir viele
Konzepte lernen, die ein professioneller Entwickler verwenden würde. Der Block ermöglicht es Ihnen, ihr einen Autor und Protokollierung als dieser Autor angehoben. Nachdem wir unseren Autor erstellt
haben, können wir neue Beiträge mit Bildern, Kategorien und Tags erstellen. Wir können auch Artikel nach ihren Kategorien und nach Tags mit vollständigen Paginierungsfunktionen sehen . Schließlich, werden in der Lage, Schleppen, Bearbeiten oder Löschen von Beiträgen. In der Oberfläche sieht
es mehr oder weniger einfach aus, aber der Code dahinter wird eine gute Herausforderung sein, was Sie bisher gelernt haben, und es wird Ihnen neue Perspektiven geben, wohin Sie als nächstes gehen sollten. Lassen Sie uns also anfangen, die Anwendung einzurichten. Wie immer. Wir haben überall Anweisungen für Mac und Windows oder Python, also überspringen Sie die Lektion, die für Sie richtig ist.
51. Erste Anwendungseinstellung auf Mac und Windows: Wir erstellen ein brandneues Verzeichnis für unsere Blogging-Anwendung. So tun Sie folgendes in Windows. Machen Angst c Schrägstrich opt Schrägstrich Blogger in Mac machen lieber Schrägstrich Off Slice länger Jetzt zu
diesem Verzeichnis ändern . Nun lassen Sie uns unsere virtuelle Umgebung einrichten und aktiviert. Jetzt müssen wir unsere Anforderungen aufstellen. Txt Datei So öffnen Sie Adam in diesem Ordner, indem Sie Adam dot tun oder indem Sie Adam öffnen und dann
den O P.
T Flow Ger Ordner öffnen den O P. . Jetzt werden wir die Anforderungen txt-Datei erstellen. Die Kernpakete, die wir installieren werden, sind die folgenden Ihre tatsächlichen Anforderungen. TXT-Datei sollte so aussehen. Speichern Sie die Datei und installierte sie Pakete, indem Sie Papierinstallation durchführen. Das sind unsere Anforderungen Txt.
52. Erste Anwendungseinstellung auf PythonAnywhere: erstellen wir ein brandneues Verzeichnis für unsere Blogging-Anwendung. Gehen Sie also zu Ihrer Bash-Konsole und geben Sie Folgendes ein. Machen Sie lieber bis der Schrägstrich r p t Schrägstrich zu diesem Verzeichnis CD bis d Schrägstrich
umkreist Schrägstrich Blogger Jetzt müssen wir unsere virtuelle Umgebung einrichten, machen kleine Lymphe Bindestrich B von 3.6 flattern und aktivierte Arbeit auf Pfleuger. Jetzt werden wir die Anforderungen txt-Datei zu erstellen. Die Pakete waren Will install sind die folgenden Ihre tatsächlichen Anforderungen txt-Datei. Sie wird so aussehen, speichern Sie die Datei und installierte die Pakete, indem Sie Peeping Stola unsere Anforderungen streicheln die ausgestorbenen Wir müssen jetzt die Web-Einstellungen aus unserer App aktualisieren. Also gehen Sie zum Web Dashboard zuerst auf dem Codeabschnitt änderte den Quellcode Directory zu Startseite Ihr Benutzername. Oh, hübscher Fluckiger. Als nächstes ändern Sie die Whiskey-Datei und aktualisieren Zeile fünf mit dem neuen Verzeichnis Gespeichert eine Datei. schließlich Aktualisieren Sieschließlichdas Ritual und die Zehe das im Flattern. Klicken Sie einfach auf den Link und geben Sie Pfleuger ein und es wird automatisch befüllt. Laden Sie die Webanwendung mit der grünen Schaltfläche
53. Unsere Application: noch einmal, lassen Sie uns über die Anforderungen gehen. Txt-Lieferungen, um ein besseres Verständnis davon zu erhalten, was wir einschließen und warum es sich um alte
Bibliotheken handelt , die Sie zuvor gesehen haben. Dazu gehören Flask Python, Durham für die Umgebung, Variablenbehandlung auf der Meine Fortsetzung oder M auf Migrationsbibliotheken. WTI Forms ist eine sehr beliebte Python-Bibliothek zu verwalten. HTML-Formulare einfach und effizient statt uns Formulare manuell eingeben und ihre
Eingabe wt Formulare validieren . Hat es für uns eine neugierige Debatte über die Bibliothek. Es soll die Abkürzung aus sein. Was die Formulare und nicht die andere WTF, die wir über Markdown wissen, ist ein Texteingabe-Standard , der es uns erlaubt, Inhalte mit einem kleinen Satz von Codes zu formatieren, so dass wir fett
kursiv,
Hyperlinks und andere Formatierungsfunktionen auf unseren Block anwenden können kursiv, Post Slog. Wenn ich ein kleines Dienstprogramm ist, das es uns ermöglicht, standardkonforme Ural aus Texteingaben zu erzeugen , werden
wir dies verwenden, um die Blockbeiträge zu generieren. Ural. Schließlich ist
Pillow ein Wrapper um P I. L, der für
die Python Imaging Library steht. Es ermöglicht uns, die Größe zu ändern und Bilder für unsere Blockbeiträge zu konvertieren, und das war's. Gehen wir nun zur Kernanwendung Factory
54. Kernanwendung: Lassen Sie uns die Kernanwendung schnell einrichten. Wenn Sie nicht alle Tage eingeben möchten, können
Sie eine Sit-Datei aus diesem Zweig aus dem Floater-Repository herunterladen. Als nächstes wird unser Kolben m wieder wie folgt aufgestellt. Einige dieser Dinge, die Sie gesehen haben, werden eine Datenbank namens Pfleuger mit der Verwendung von menschlichem
Pass erstellen und das root-Passwort für unsere Tests enthalten. Wenn Sie Python irgendwo verwenden,
denken Sie daran, den DB-Host für den Host in Ihrem Datenbank-Dashboard zu ändern. Die letzten beiden Viralen Blocknamen und gebloggte Post Bilder Pfad seit dem Namen des blawg und der Pfad in unserem Server, wo wir den Block Post Bilder hochladen, wenn Sie Windows verwenden, sagte der Pfad Windows-Formatierung per Telefon überall aussehen sollte das hier. Denken Sie daran, Ihren eigenen Benutzernamen oben neben Will door settings B y Mit den
Umgebungsvariablen, die wir gerade eingegeben haben, eingeben. Wir erstellen jetzt unser Manage Me Warum, so? Erstellen Sie nun die Anwendung P y. mit dem folgenden Code. Nichts, was du vorher noch nicht gesehen
hast, oder? Wir können jetzt unseren ersten Blueprint erstellen. Die Blawg-App. Erstellen Sie zuerst einen Blockordner, erstellen Sie eine leere darin B Y-Datei innen und schreiben Sie dann die folgenden Interviews B y Datei. Da wir noch keine Datenbankoperationen haben, gehen Sie vor und geben Sie flask ein, führen Sie aus und geben Sie die Anwendung, die war. Stellen Sie sicher, dass Ihr virtuelles M aktiviert ist. Wenn Sie zu Ihrem lokalen Host navigieren, sollten
Sie die Titelblock-Startseite sehen. Nun lassen Sie uns die Datenbank einrichten.
55. Aufstellung der Datenbank: Wie Sie wahrscheinlich erwarten. Wir haben zwei Flows, um die Datenbank einzurichten, wenn für Windows und Mac und die andere für Python irgendwo, da wir dies vorher getan haben, werde
ich schnell für beide durchgehen. Betrachten Sie meine Fortsetzung mit Ihrer Route, Benutzer und Passwort, erstellen Sie die Pfleuger-Datenbank und erstellen Sie jetzt den Benutzer und das Passwort. Erlauben Sie dem Benutzer vollen Zugriff auf die Datenbank und laden Sie die Berechtigungen neu. Beenden Sie nun mit exit und versuchen Sie, sich mit dem neuen APP-Benutzer zu melden. Wenn Sie jetzt in Ihrer guten Form aussehen können,
versuchen Sie, den Schwimmer zu benutzen, der gehorcht. Wenn Sie keinen Fehler bekommen, sind
wir jetzt gut niedrige Gicht. Mit exit, werden
wir eine Datenbank namens Pfleuger auf dem Schöpfer erstellen, die Abschnittstyp
pfleuger unter Datenbanknamen basieren . Dadurch wird die Datenbank für Sie erstellt. jedoch Denken Siejedochdaran, dass diese basieren. Name ist Ihr Benutzername, plus ein Dollarzeichen. Plus es, dass Sie den Namen verblüffen eingegeben Um sicherzustellen, dass wir eine Verbindung mit der Datenbank herstellen können, öffnen Sie eine Bash-Konsole und geben Sie Folgendes ein, ersetzen Sie es mit Ihrem Benutzernamen, Passwort und Datenbank-Host-Adresse. Versuchen Sie nun, die Floater-Datenbank zu verwenden. Wenn du nicht drauf bist, gab es gut. Melden Sie sich jetzt mit exit ab
56. So erstellst du die Author: Also das erste, was angehen wird, ist die Erstellung aus dem Authentifizierungsfluss für den
Autor des Blogs ? Wir gehen davon aus, dass sich jeder als Autor für unseren Block registrieren kann, da ich die Anwendung nicht erschweren möchte,
zumindest in diesem Stadium für uns zu marschieren . Also gehen Sie weiter und erstellen Sie den Autorenordner auf der Anwendungsroute, dann erstellen Sie eine NDP-y-Dateieinsicht, so dass wir von woanders importieren können. Schließlich lassen Sie uns die Ansichten B y Datei erstellen und den folgenden Hinweis hinzufügen. Wir setzen hier sowohl „get“ als auch „post“ -Methoden. Wir werden die Post-Methode verwenden, wenn wir die Registrierung erstellen. Als nächstes fügen
wir das neue Autorenmodul bis zur Anwendung p y hinzu. also im Import-Blueprint-Abschnitt die Autoren-App
hinzu. Speichern Sie beide Dateien in einem Flask-Lauf. Wenn Sie den lokalen Host 5000 Schrägstrich Register besuchen, sollten
Sie die Autorenregistrierungsseite sehen
57. Das Author: Beginnen wir mit der Arbeit an dem Autorenmodell, Erstellen Sie eine Models B Y-Datei auf dem Autorenordner und lassen Sie uns im folgenden. Wir werden ein Autorenobjekt mit einem vollständigen Namen,
E-Mail und Passwort haben . Da alle diese Felder Strings sind, verwenden
wir den String-Typ und übergeben die Länge von diesem Feld. Beachten Sie, dass wir die E-Mail eindeutig machen. Umgehung der eindeutigen entspricht true flag. Das bedeutet, dass keine zwei Autoren die gleiche E-Mail haben können und dass die Tabelle einen E-Mail-Index erstellt, um Autoren schneller
per E-Mail zu suchen . Als nächstes wird die Bildmethode aus der Autorenklasse erstellt, um so aussehen zu können. Dies wird aufgerufen, wenn wir einen neuen Autor erstellen schließlich eine Reproduktionsmethode erstellen, um unsere Autorenobjekte auf dem Regal
anzuzeigen. Wir sind fertig mit der Akte. Lassen Sie uns nun die tatsächlichen meine Sicheltabellen erstellen, indem Sie eine Migration
58. Die Author: erinnere dich daran, was ich dir über Migrationen und den Pfad zu Modellen im vorherigen Abschnitt erzählt habe. Moment gibt es keinen Weg zu den Models. B y aus der Anwendung p y. Da es keine Erwähnung von Autorenmodellen in unseren Autorenansichten gibt, werden, wenn ihre Migrationen die Datei nicht sehen, wenn ihre Migrationen die Datei nicht sehen,
nicht die richtigen Migrationen erstellt. Also auf Autorenansichten in der folgenden Zeile. nach dem Blueprint Importieren und speichern Sie die Dateinach dem Blueprint. Gehen Sie nun zu Ihrem Terminal, stellen Sie sicher, dass Ihre virtuelle Lampe aktiviert ist und geben Sie flask baby. Darin sehen
Sie den Migrationsordner, der erstellt wird. Mit seinen Anfangseinstellungen können
wir jetzt den Migrationsvorgang durchführen, bei dem die Datenbankoperationsdatei oder das Snap Shirt
erstellt wird . Also flask das B migrieren. Wenn Sie hier einen Fehler erhalten, stellen Sie sicher, dass mein Fortsetzungsserver ist auf und dass Ihre Anmeldeinformationen auf dem Kolben m r korrekt. Es ist eine gute Praxis, die Datei zu überprüfen, die generiert wurde, bevor wir Operationen in der Datenbank durchführen. Gehen Sie also zum Ordner Migrationen und
öffnen Sie im Unterordner Versions die Datei. Im Inneren werden
Sie sehen, dass die Upgrade-Methode die Autorentabelle erstellt und dann die Spalten hinzufügt. Wir haben auf dem Model. Die Downgrade-Methode löscht die Autorentabelle, was Sinn macht, wenn wir diesen Vorgang endgültig zurückrollen wollten, um ihre Migrationen auf die Datenbank anzuwenden und ein Update zu erstellen, die Tabellen tun flask db upgrade.
59. Testen des Author in der Shell: nach dem Anwenden der Migration. Es empfiehlt sich, zu testen, ob der Tisch in der Show richtig eingerichtet wurde. Lassen Sie uns also eine Kolbenschale öffnen und versuchen, einige grundlegende Operationen am Autorenmodell durchzuführen. Also zwei flasks shell importieren jetzt das Autorenmodell aus Autor Punktmodelle importieren Autor, und das ist erstellen Sie einen Autor, indem Sie Autor gleich Autor tun. Vollständiger Name entspricht John Smith. E-Mail entspricht J. Smith am Beispiel dot com Letztes Wort. Mein Passwort. Denken Sie daran, dass wir
an dieser Stelle nichts in der Datenbank gespeichert haben. Wir müssen das Objekt dem einer Sitzung zuerst hinzufügen, die B-Sitzung beim Autor. Was ist passiert? Nun, die Dinge, die das Importieren des Modells nicht automatisch die Fortsetzung Alchemy importieren. Das B-Objekt. Also lassen Sie uns es aus der Anwendung importieren p y Datei und versuchen Sie es aus dem Anwendungsimport db Devi Sitzung hinzufügen Autor. Das ist eher so. Jetzt wird das Objekt der Sitzung hinzugefügt, wurde aber noch nicht ganz geschrieben. Zehe, dass eine Basis, es ist auf Standby-Art sprechen. Eine Möglichkeit zu überprüfen, ob der Datensatz gespeichert wurde, besteht darin, zu überprüfen, ob er ein i d hat. Also lassen Sie uns das Objekt auf das ich basiere, indem ich die Sitzung übernehme und jetzt überprüft, ob es ein i d Perfect
hat. Das ist das kleine, was Sie suchen, damit wir einen sauberen Start für unsere nächste Lektion haben können.
60. Das Author: werden wir nun unser allererstes Formular erstellen, das es unseren Autoren ermöglicht, sich zu registrieren. Historisch gesehen war das
Erstellen von Formularen ein Schmerz für Entwickler, weil alle beteiligten Operationen, die das Rendern des Formulars auf der Seite Validierung der Daten Neuladen Felder mit
Daten, die vom Benutzer eingegeben wurden, beinhalteten , wenn etwas nicht Übergabe der Validierung und Verwendung des gleichen Formulars für die Bearbeitung. Danke, toa Erstaunliche Open-Source-Bibliotheken wie WT-Formulare. Dieser Prozess ist jetzt viel rationeller und wir werden sehen, wie wir diese
Funktionalität implementieren können. Formulare für ein Nickerchen sollten sich im selben Ordner befinden, also erstelle ich normalerweise nur eine Form, die b y Datei innerhalb des Moduls. Also machen Sie weiter und erstellen Sie einen für den Autorenordner. Die erste formale Erstellung ist das Anmeldeformular. Geben Sie also folgendes ein. Wir beginnen, eine Register-Formularklasse zu deklarieren. Wie Sie sehen können, ist
es eine Unterklasse aus der letzten Form, die die Flasche WTI-Form Hauptklasse ist, die uns eine Menge von der Funktionalität geben wird, die wir brauchen . Im Inneren definieren
wir eine vollständige Namenseigenschaft. Es wird ein Stringfield oder, in HTML,
Kontext, Kontext, ein Texteingabefeld innerhalb des Feldes geben. Wir haben übergeben, was das Label oder Titel neben dem Feld sein wird, in diesem Fall den
vollständigen Namen, und schließlich haben
wir eine Liste von den Validatoren, die wir brauchen. In diesem Fall sagen
wir nur WT-Formular, dass dieses Feld erforderlich ist. Er kann nicht leer gelassen werden. Dann haben wir die E-Mail-Eigenschaft, die ein E-Mail-Feld ist, das in HTML eine etwas andere Manipulation hat. Dann hat ein Nur-Text-Feld eine Beschriftung aus der E-Mail-Adresse, und es ist auch erforderlich, muss aber gegen ein E-Mail-Format validiert werden. Die Passwort-Eigenschaft ist, wie erwartet, ein Passfeld, das in HTML-Formularen Sie uns kleine Punkte oder Sterne anstelle des tatsächlichen Inhalts sehen, und dieses ist auch erforderlich, hat aber auch ein Minimum und Maximum übrig. Wir wollen keine Passwörter von weniger als vier Zeichen. Schließlich haben
wir eine bestätigte Eigenschaft, die auch ein Passwortfeld ist, und es erlaubt uns, den Benutzer das Passwort erneut eingeben zu lassen. Stellen Sie
also sicher, dass er es richtig eingibt. Um dies zu durchsetzen. Wir haben eine spezielle Art von Validierung genannt gleich wo Sie das Feld übergeben, um zu vergleichen , in unserem Fall das Passwort-Feld darüber und was ihre Nachricht dem Benutzer zu zeigen, wenn es nicht übereinstimmt. Wie Sie sehen können, sind
Formulare und Modelle getrennte Dinge, und manchmal haben wir Felder im Formular, die nicht im Modell angezeigt werden. Also, jetzt lasst uns die Importe machen. Die erste Zeile importiert Kolben WTF. Die zweite Zeile importiert die Fülltypen, die wir unter Validatorfunktion benötigen. Und schließlich importieren wir das E-Mail-Feld aus einer separaten HTML Five WT Forms Library, die eine bessere Handhabung auf der HTML-Seite für moderne Browser bietet. Speichern Sie die Datei, und damit, lassen Sie uns sehen, wie wir das Formular in einer Vorlage rendern.
61. Das Author: werden wir nun sehen, wie wir das Formular, das wir gerade erstellt haben, in eine
Autoren-Register-Vorlage zu rendern . Die Register-Formularklasse ermöglicht es uns, eine WTI-Formularinstanz zu erstellen, die wir direkt
an eine Vorlage übergeben können . Also gehen Sie voran und öffnen Sie die Autoransichten Datei und lassen Sie uns die Register-Funktion mit dem
folgenden ersetzen , hier erstellen wir eine neue Instanz aus unserem Register fremd und
zuweisen müssen die Form lebensfähig. Wir haben dann die Formularinstanz übergeben, die die von dem Autor registrierte Vorlage als nächstes erstellt wird, bevor die Datei
gespeichert wird. Wir müssen die Render-Template-Funktion sowohl für die Ansicht als auch für die
Register-Formularklasse ausschöpfen . Also modifizieren Sie diese Linien auf der oberen Zehe so aussehen. Beachten Sie, wie ich die Python-Bibliotheken oben belasse und ein Leerzeichen zwischen ihnen und unseren eigenen Bibliotheksimporten einfüge. Nachdem dies eine gute Regel für die Lesbarkeit ist, speichern Sie die Datei. Also müssen wir jetzt den Template-Ordner für unsere Anwendung erstellen, wie wir in ihrer ersten
Hallo Welt Verpflichtung gesehen haben . Der Vorlagenordner befindet sich in der Stammebene, und im Inneren wird der Autoren-APS-Vorlagenordner erstellt. Machen Sie also voran und erstellen Sie die Vorlagen. Autor Ordner einmal vereinbart, dass Creative kalte Register dot html Jetzt setzen Sie den folgenden HTML auf die Datei. Also lasst uns diesen Code im Detail durchgehen. Zuerst erstellen
wir das Formular. Mit der Post-Methode und zeigen die Aktion Toe sind Register Funktion Hinweis wir
Punktregister hier verwendet . Dies bezieht sich auf die Autoren-Blueprints registrierte Funktion. Aber da wir diese Vorlage auf Lee von den Autoransichten aufrufen, müssen
wir nicht die vollständige Blueprint-Sache übergeben, Wenn wir sie
jedoch von einem anderen Blueprint mit Notwendigkeit verwenden möchten, Autor in der Partitur-App zu verwenden, die in der Ural Funktion registrieren. Keine Sorge, Flask wird Sie wissen lassen, wenn es den vollen Blasdruck benötigt. Als nächstes werden
Sie feststellen, dass wir eine seltsame Form haben, die intakt ist. Lebensfähig. Der Bestand fügt einen C-SRF-Token ein. CSR F steht für standortübergreifende Anfrage Fälschung, und es ist ein Sicherheitsfeature, das WT Formular bietet. Im Wesentlichen schützt
ein CSF-Token Sie vor unbekannten
Benutzerformularen, indem Sie jedes Mal ein zufälliges Token generieren, wenn das Formular gerendert wird, gleich nachdem Sie vier Leben mit dem Formularobjekt auf jedem der Felder sehen. Zuerst zeigen
wir die Beschriftung und dann das eigentliche Feld an. Speichern Sie die Datei. Gehen Sie nun weiter und führen Sie den Kolbenserver mit Kolben aus. Führen Sie aus und navigieren Sie zur Registrierung. Sie sehen das Formular mit den vier Feldern. Versuchen Sie nun, den Quellcode zu sehen, so dass Sie sehen können, was Flask in den Browser setzen Nur links, wie auf der Seite und wählen Sie Ansicht Seite Quelle. Sie werden sehen, dass die WTI-Form einen Großteil der schweren Heben für uns macht, die das Feld herausbringt . Ich DS-Namen und andere Eigenschaften bemerkten auch die CSR des Token-Werts oben. Wenn Sie die Seite aktualisieren, während Sie die Quelle betrachten, werden
Sie sehen, dass sich der Wert jedes Mal ändert. Die andere nette Sache ist, dass ein Teil der Formularvalidierung für uns in der
Browserebene durchgeführt wird . Wenn Sie
beispielsweise einen HTML Five-kompatiblen Browser haben , wenn Sie den vollständigen Namen nicht spüren und versuchen, zu übermitteln, wird sich
der Browser darüber beschweren. Sie sehen eine Art Dialog neben dem Feld. Das Gleiche, wenn Sie keine gültige E-Mail in das E-Mail-Adressfeld setzen oder wenn Sie
das Passwort-Feld nicht fühlen , aber wir wollen auch wt Form toe Wert eine auf der Serverseite verformte, und dafür müssen wir unsere Ansicht ändern und die Fehler im Formular ausdrucken. Lassen Sie uns überprüfen, wie das geht.
62. Autor:innen Validierung von Formularen: Wenn Sie das Formular absenden, stellt das
WT-Formular eine Methode namens Validate on Submit zur Verfügung, die im Formular nach oben verfügbar ist. Es ist an diesem Zeh. Der Autor von You file auf der Register-Methode unter der folgenden Datei Speichern Sie die Datei. Führen Sie nun den Flash-Server und geben Sie alle Felder ein und drücken Sie Um, es werden Sie den Patriot frisch auf dem Display die Wörter validiert sehen. Das bedeutet, dass WT Formular alle Felder überprüft und fand sie gültig. So übergibt es die Anfrage an den kalten Abschnitt innerhalb der if. Gehen Sie nun zurück und versuchen Sie, ein Passwort aus drei Buchstaben in beiden Passwortfeldern einzugeben. Wenn Sie sich erinnern, ein Register Schaum Klasse, es fragt nach Passwort mindestens vier Zeichen sein, Dann senden Sie das Formular. Sie sehen nun, dass das Formular erneut angezeigt wird, was bedeutet, dass der if-Abschnitt ungültig ist und die Anforderungen an die
Rendervorlage unten zurückgegeben werden. jedoch Wir sehenjedochkeine Fehler im Formular selbst. Das liegt daran, dass die Fehler in der Vorlage nicht angezeigt werden. Lasst uns das reparieren. Es ist Feld hat eine Luftliste, aber lassen Sie uns einfach das Passwort zuerst tun, um zu überprüfen, wie es funktioniert. Also auf dem Register-HTML-Formular unter dem folgenden Code am Passworttag, Speichern Sie die Datei und jetzt laufen Sie die Flaschen Server und versuchen Sie, ein Drei-Zeichen-Passwort beeindruckt Summit. Sie sehen die Luft neben dem Feld wie folgt. Aber wie Sie bereits sehen, wenn wir in das, was die Luftmeldungen für alle Felder gingen, wird
es zu einer Menge von sich wiederholenden Code führen. Richtig? Erinnere dich an das trockene Prinzip. Also werden wir eine Funktionalität aus der Ingwer-Template ING Engine namens Makro nutzen . Ein Makro ermöglicht es uns, wiederverwendbaren,
extremen Code zu erstellen , der als Funktion arbeiten kann, wo wir Parameter übergeben und etwas zurückgegeben wird . Basierend auf diesen Parametern habe ich normalerweise Makrovorlagendateien mit einem Unterstrich vorbereitet, so dass ich mich daran erinnere, dass diese Dateien nicht von selbst verwendet werden sollen Erstellen Sie
also das Unterstrichformular. Helpers HTML-Datei auf dem Template-Stammordner und geben Sie die folgende Anmerkung ein. Ich nannte es Formhelfer. Das liegt daran, dass ich mehr als ein Mikro pro Datei speichern kann, also heißt das erste Makro in diesem feild Renderfeld. Ich brauche eine Funktion, die ich ein WT-Formularfeldobjekt übergeben werde und Sie werden einige wichtige
Eigenschaften dieses Objekts ausgeben . Zuerst wird die Beschriftung „Felder“ angezeigt, die nach dem Titel des Feldes ist. Dann geben wir die Felder mit irgendwelchen Schlüsselwortargumenten aus, die ich übergeben möchte, und von Ort und Stelle mit dem sicheren Ingwer-Filter aus, da dies kein Benutzercode ist, und daher möchte ich nicht, dass das Makro html es entkommt. Welche Art von Schlüsselwortargumenten können wir übergeben? Nun, wir können eine Klasse übergeben, um das Feld oder andere Kostümparameter zu stylen. Wir werden das später sehen, wenn wir stylen würden, um zu bilden. Schließlich drucken
wir automatisch und Fehler dieses Feld hat mit, dass Sie l oder auf Bestellliste HTML-Tag . Also sehen wir die Fehler in einer Kugel, zumindest für mich. Speichern Sie die Datei und gehen Sie jetzt zurück zum Rennen für HTML-Datei und ändern Sie es so, dass es wie
folgt aussieht . Das sieht viel sauberer aus, nicht wahr? Jetzt müssen Sie nur das Makro zu jeder Vorlage hinzufügen und dann die Renderfeldfunktion
für jedes Feld verwenden . Speichern Sie die Datei und stellen Sie sicher, dass Sie den Flash-Server ausführen und erneut registrieren. Sie werden das gleiche Formular sehen, aber jetzt fühlen sich alle haben die Fehlerprüfung für Feld diesmal versucht, zwei verschiedene
Passwörter mehr als vier Zeichen einzugeben . Drücke, ähm, und du solltest folgendes in der nächsten Lektion sehen. Wir werden die Anwendung mit dem Bootstrap-Framework besser aussehen lassen.
63. Eine bessere Looking: in dieser Lektion wird eine etwas besser aussehende Feldspitze setzen. Unsere
Anwendung, die das Bootstrap-Auslösen verwendet, wird auch eine Basis-HTML-Vorlage einrichten, die die Mastervorlage für alle
Seiten in unserer Verpflichtung sein wird . Also lassen Sie uns die grundlegende Dampf l Datei unter der Route aus dem Templates Ordner mit den folgenden Inhalten hier definieren Vorarbeiter Bereiche Toby, gefüllt von Vorlagen, die von dieser Basisvorlage erben, einem Titel, einer Navigation -Leiste und den Hauptinhaltsbereich. Wir injizieren auch das Bootstrap CSS Online nine und das Bootstrap JavaScript auf den Zeilen 29 bis 31. Beachten Sie auch, wie wir in der Fußzeile den Blocknamen mit dem, was im Block gespeichert ist Name kommen Füße lebensfähig. Speichern Sie die Datei und öffnen Sie nun den Autor registrieren HTML-Datei unter Machen Sie es wie folgt
hier aussehen . Wir machen diese Vorlage jetzt von grundlegendem HTML erben. Wir haben einen Titel gesagt und unseren Hauptinhalt auf den Inhaltsblock gelegt. Wir haben auch ein paar Daves Zeh hinzugefügt. Bessere Anzeige des Formulars mit dem Bootstrap großartigen System. Schließlich bemerken wir, wie wir jetzt die Schlüsselwortargumente aus unserem Renderfeld-Makro verwenden, indem wir ein Bootstrap-Glas auf allen unseren Feldern umgangen haben, hat auch eine Formularrolle auf die
Formularöffnungs-Tack hinzugefügt . Obwohl dieser Kurs nicht ins Detail geht, wie man Bootstrap benutzt, ist
es wirklich einfach, einen Nachmittag damit zu verbringen, die Bibliothek zu lernen. Es ist nicht zu kompliziert. Speichern Sie die Datei. Und bevor wir unsere flasks Server laufen, müssen
wir einige Änderungen unter Renderfeld Makro wie folgt tun. Wir haben ein Formular Gruppe Klasse Toe, die Felder Dave sowie eine Text-Gefahrenklasse Toe hinzugefügt. Die Fehler speichern die Datei. Jetzt sind wir auf dem Flask-Server und gehen zur Registrierung. Sieht viel schöner aus, oder? Versuchen Sie, ein Passwort mit drei Zeichen einzugeben und drücken Sie die Registriertaste. wird ein schöner roter Fehler mit Aufzählungszeichen angezeigt. Ok, genug Eye Candy. Lassen Sie uns jetzt sehen, wie wir tatsächlich die Autoreninformationen richtig unter Datenbank speichern.
64. Verarbeiten des the: Also lassen Sie uns sehen, wie wir tatsächlich den Autor Datensatz in der Datenbank mit den Informationen erstellen wir unter Register für So geöffnet,
der Autor Views Datei eingeben . Und lassen Sie uns das Folgende auf dem Abschnitt „Validate on submit“ hinzufügen. Okay, lass uns das Schritt für Schritt machen. Das erste, was Sie bemerken werden, ist, dass seltsame Passwort-Hash-Funktion generieren. Was ist das? Eine allgemeine Regel der Sicherheit, die leider einige Entwickler stehlen, Beachten
Sie nicht, dass wir nie,
jemals, immer, immer sicher Passwörter genau wie der Benutzer es eingegeben. Wenn ein Hacker Zugang zu Atabay gewinnen würde, würde er
irgendwie für alle unsere Nutzer überspielen. Die beste Vorgehensweise besteht also darin, das Passwort zu codieren. Verwenden einer Methode namens Hashing. Hashing generiert eine zufällige Zeichenkette mit einer anderen zufälligen Basiszeichenfolge namens Assault. Auf diese Weise, selbst wenn das gleiche Passwort Probleme in einer anderen Website, ist
das Hash-Passwort anders, weil aus dem Salz, die coole Sache ist, dass nicht einmal uns ein Entwickler weiß, was das Passwort ist. Es ist wirklich schwer, diesen Passwort-Hash auf einen einfachen Text zu drehen, auch wenn Sie das Salz kennen. Das einzige, was Sie tun können, ist, diesen Passwort-Hash mit dem Hash aus dem gleichen Passwort zu vergleichen und vom Benutzer erneut zu schalten. Wir werden sehen, wie das auf der Protokollierungsmethode zu tun wird in Kürze schreiben. Sobald wir den Hash erstellt
haben, erstellen wir dann einen neuen Autor oder eine Instanz mit einem vollständigen Namen, einer E-Mail und einem Hash-Passwort. Dann fügen wir das Autorenobjekt zu dem einer Sitzung hinzu und schließlich festgeschrieben, so dass es in der Datenbank gespeichert wird, den Autor i d auf dem Bildschirm ausdruckt, um sicherzustellen, dass der Datensatz
daran war . Bevor wir dies testen, müssen
wir das Hash-Passwort hinzufügen. Ich burrito die Datei, also geben Sie
auch das folgende online ein. Und da wir tun, dass seiner Operationen an der DB-Instanz online für speichern Sie die Datei und gehen Sie vor und führen Sie den Flask-Server und geben Sie einige Autoreninformationen in Form und drücken Sie hob sie, sollten
Sie diese Ausgabe auf dem Bildschirm sehen. Mach dir keine Sorgen, wenn die Nummer nicht eins ist, solange du dort eine Nummer hast. Wenn Sie einen Fehler erhalten, stellen Sie sicher, dass Sie meinen Fortsetzungsserver ordnungsgemäß ausführen, dass Sie mit dem Anwendungsbenutzer und dem Kennwort oder anderen Problemen mit
dem Code selbst darauf zugreifen können.
65. Überprüfen der Datensatzerstellung in der Datenbank: können wir schnell den Datensatz in der Datenbank mit Hilfe der Kolbenschale überprüfen. Gehen Sie weiter und stoppen Sie den Flachs. Nie und geben Sie auf der Anschlusskolben-Show. Wenn Sie irgendwo einladen, denken Sie
daran, Ihre Veto-Lampe auf dem Shellentyp von Autor Doug Models,
Import-Autor,
Autor,
Aquarium aktiviert Import-Autor,
Autor, Autor, zu haben. sollten Sie Ihren neu erstellten Datensatz sehen. Wenn Sie alle Felder aus dem Datensatz sehen
möchten, ist Autor gleich Autor? Diese Abfrage, dass der erste Autor dot dick, die zwei ist unterstreicht das Wort
gesteckt, und zwei weitere unterstrichen mit Ausnahme der Fortsetzung Alchemy, Instant State. Während die anderen Eigenschaften das sind, was Sie in der Datenbank haben, können
wir uns auch in der Datenbank anmelden, um den Datensatz zu sehen, die Flask-Shell mit exit verlassen und jetzt meine Fortsetzung mit Ihren Anmeldeinformationen eingeben, wie ich sie zuvor in der Einrichtung
beschrieben habe . Wählen Sie nun die Floater, die ich Basis, indem Sie Fluckiger verwenden, zeigen Sie die Tabellen mit Show-Tabellen . Sie werden ihre Migrationstabelle, eine lambic Version und die Autorentabelle sehen. Wählen Sie nun Stern vom Autor aus. Sie werden Ihren vollständigen Datensatz sehen, überprüfen Sie das Passwort-Feld und beachten Sie. Es ist nicht die gleiche Zeichenfolge, die Sie verwendet haben, aber ich habe ziemlich lange Siris von zufälligen Zeichen. Das ist der Passwort-Hash-Exit mit exit
66. PDB verwenden: Wenn Sie sich in Windows,
Mac oder Lennox befinden , können
Sie auch eine andere Methode verwenden, um zu überprüfen, ob der Datensatz in der Datenbank gespeichert wird oder ob Fehler vorliegen. Und das verwendet den Python-Debunker oder PDB. Leider funktioniert
dies nirgendwo auf Python, da kein Flask-Terminal verfügbar ist. Aber bleib nur so, dass du siehst, wie das funktioniert. Also gleich nach oben das Hash-Passwort in der folgenden Zeile praktikabel. PDB importieren. Also sagte mein Doppelpunkt BDB Tabletts. Ich weiß, dass es seltsam ist. Schreiben Sie das irgendwo auf, weil Sie es immer und immer wieder vergessen werden. Ich denke, ich erinnere mich daran, nachdem ich es benutzt habe. Fünf Jahre lang führte
Python 37 die Breakpoint-Funktion ein, aber ab diesem Schreiben wurden Python 3.6 verwendet. Das wird also nicht funktionieren. Führen Sie nun den Flachsserver aus und geben Sie die Informationen auf dem Formular ein und drücken Sie die
Register-Taste . Sie werden feststellen, dass der Browser hängt, aber werfen Sie einen Blick auf das Terminal. Sie werden sehen, dass Sie eine Aufforderung haben, die von Fundy Bugger ist. Die Eingabeaufforderung sagt uns, wo online. 15 aus dem Autor von Use file. Der kleine Pfeil bedeutet, dass der gehashte Passwort-Befehl als nächstes ausgeführt wird, aber er wurde nicht ausgeführt. Das Skript ist in der Zeit eingefroren und
wartet darauf, dass Sie etwas tun. Wir können sehen, zum Beispiel, die Werte auf dem Formular Instanz. Geben Sie einfach auf der Eingabeaufforderung Formular Punkt Vollständiger Name Datum. Sie sehen den Namen, den er gerade eingegeben hat, oder Formular Punkt per E-Mail oder Daten, um die E-Mail zu sehen, um
das Skript voranzubringen . Geben Sie den Buchstaben n ein, der für den nächsten steht. Nun wurde das Skript in Zeile 16 verschoben. Das bedeutet, dass das Hash-Passwort gesetzt ist, also versuchen Sie es mit Hash-Basswort auszudrucken. Da wir einen Block mit mehreren Zeilen eingeben, geben Sie end ein und drücken Sie die Eingabetaste. Jeder Trick ist, dass PDB sich den letzten Befehl merkt. Also, wenn Sie einfach die Eingabetaste drücken, wird
er genau wie wenn Sie Typ haben und so drücken Sie die Eingabetaste, bis Sie die D.
V-Sitzung in der Autorenzeile sehen . Aber halt genau da auf. Okay, An dieser Stelle haben
wir den Autor Fortsetzung Alchemy Objekttyp Autor erstellt, um es auszuchecken. Geben Sie jetzt Autor dot i d. Wir bekommen nichts. Warum ist das so? Nun, wir haben kein Commit gemacht, also hat der Datensatz nicht in die Datenbank gelesen. Geben Sie
also die Commit-Zeile ein und drücken Sie die Eingabetaste, um voranzukommen. Eine weitere Zeile geben Sie jetzt Autor Gedanke i d Er sollte jetzt die Datensätze i d in der Datenbank erhalten es sei denn, Sie tippen auf vorhandene E-Mail und Sie erhalten den folgenden Fehler. Was ist das? Nun, Sie erinnern sich vielleicht an das Autorenmodell, dass wir dem E-Mail-Feld eine eindeutige Einschränkung hinzugefügt haben. Das bedeutet, dass Sie sich nicht mit derselben E-Mail bei Autoren registrieren können. Überprüft, wie das als nächstes mit benutzerdefinierten WTI-Formularfeld-Validatoren behoben werden kann.
67. Benutzerdefinierte Form: um dort abzuholen, wo wir aufgehört haben. Wir haben ein potenzielles Problem mit der Autorenregistrierungsfunktion gefunden, um den Fehler auszulösen sie an Autoren mit derselben E-Mail
ausgelöst hat. Die zweite Registrierung löst einen Datenbankfehler aus und hält unsere Verpflichtung fest,
dies zu überprüfen . Bevor wir anfangen. Der doppelte E-Mail-Autor verwendet einen benutzerdefinierten WT-Formularvalidator. WTI-Formular ermöglicht es, benutzerdefinierte Validatoren mit der Validate-Methode zu erstellen. Auf seinen Instanzen können
wir weiße Validierungen machen, was für das Logging-Formular tun wird, aber für die Registrierung wird eine E-Mail-spezifische
Validator tun , so geöffnet Der Autor formular-Datei und innerhalb der Racer-Formularklasse führte die folgenden Code. Diese Methode validiert nur das E-Mail-Feld, so dass wir E-Mail als einzigen Parameter für diese Instanzmethode übergeben. Diese E-Mail lebensfähig wird halten, was auch immer die Verwendung oder in das E-Mail-Feld aus dem Formular eingegeben. Wir suchen dann in der Autorentabelle nach oben, um zu suchen, ob ein Benutzer mit dieser E-Mail zurückgegeben wird . Wenn es einen gibt, lösen
wir einen Validierungsfehler mit einer Meldung aus, die der Ansicht mitteilt, dass das Formular
nicht gültig ist , bevor wir dies in der folgenden Zeile unter den Systemimporten bestreiten. Denken Sie daran, eine leere Zeile darüber zu lassen. Außerdem müssen
wir am Ende Lügen Validierungsfehler hinzufügen, um die Datei zu speichern und Ihren
Flachsserver zu starten . nun, Versuchen Sienun,die gleiche E-Mail zweimal einzugeben. Sie sollten einen schön formatierten Fehler erhalten.
68. Der Autor:in: Jetzt, da wir einen Autor in der Datenbank haben, werden
wir eine Funktionalität erstellen, um sie in das System zu sperren. Beginnen wir mit dem Autor Formular, das in einem Formular wird Login in Form aufrufen. Das ist ziemlich selbsterklärend. Wird eine E-Mail und ein Passwort für den Autor benötigt, um sich anzumelden. Speichern Sie die Datei. Öffnen Sie nun die Autorenansichtsdatei. Und lassen Sie uns eine neue Route für die Protokollierungsmethode erstellen. Vergessen Sie nicht, was die lange in Zeile sechs informieren. Speichern Sie diese Datei. Wir müssen eine Protokollierungs-HTML-Datei auf den Vorlagen Autor Ordner mit dem
folgenden Code erstellen Sieht ziemlich anständig aus, oder? Wir haben mehr oder weniger die gleichen Felder, die wir im Rennen hatten, um Vorlage zu informieren, speichern Sie die Datei und checken Sie es aus, indem Sie die Protokollierung Euro. Geben Sie eine beliebige E-Mail- und Passwort-Kombination ein und drücken Sie die Anmelde-Taste. Sie sollten eine Meldung erhalten, die besagt, dass gesperrt in
69. Überprüfen der the in der Datenbank in der Datenbank: Natürlich, es ist nicht gut. Jeder kann sich bei der Anwendung anmelden, also lassen Sie uns tatsächlich die Anmeldeinformationen in der Datenbank überprüfen. zunächst Gehen Siezunächstzum Autorenformular und fügen Sie den folgenden Validierungscode in der log Inform Klasse hinzu. Diese Validierung unterscheidet sich von der benutzerdefinierten Validierungs-E-Mail-Validator, die bei Lee die E-Mail
überprüft hat. Diese Validierung ist die Wertebewertung der gesamten Form, und deshalb gibt es keine Gefühle, die als Parameter übergeben werden. Das erste, was wir einen globalen Validator tun, ist zu überprüfen, ob das Formular die normale
Validierung besteht . Also zuerst führen wir die Validate-Methode aus und übergeben diese Instanz als sich selbst. Wenn das Formular nicht bestanden wird, gibt die
Validierung Stürze zurück, wodurch das Steuerelement mit einem auf validierten Zustand an das Formular zurückgegeben wird. Dann haben wir versucht, einen Autor Datensatz mit der E-Mail in der Form übergeben, die wir mit Selbstzweifeln E-Mails,
die Daten zugreifen . Wenn wir einen Autor finden, prüfen
wir, ob der in der Datenbank gespeicherte Passwort-Hash mit dem vorherigen
Basswort-Hash übereinstimmt . Wenn sie nicht übereinstimmen, bedeutet dies, dass der Benutzer das falsche Passwort eingeben und wir fügen einen Fehler an das
Passwort-Feld mit dem Text, falsche E-Mail oder Passwort und Rückgabe fällt, was das Formular wieder als ungültig markiert. Sonst kehren
wir zurück. Wahr. Das letzte Mal geht einfach die Luft zurück, weil es keinen Autor mit dieser E-Mail auf dem System gibt. Fügen Sie nun den Check Password Hash Import online für gespeicherte eine Datei mit Ihrem Flask Server läuft versucht, sich mit dem falschen Passwort oder mit einer E-Mail, die nicht existiert, Sie sollten die Luftnachricht unter dem Passwort-Feld erhalten. Versuchen Sie nun, sich mit einer E-Mail und einem Passwort einzuloggen, die Sie tatsächlich gespeichert haben. Wenn du keins hast, erinnerst du dich. Erstellen Sie eine neue auf dem Register. Euro. Sie sollten die Anmeldenachricht erhalten.
70. Autor:innen: Wenn Sie sich bei einer Website oder Anwendung anmelden, müssen
Sie eine Art von Cookie setzen, so dass andere Seiten, die der angemeldete Benutzer lädt die Informationen des Benutzers
erhalten und ihn daran hindern, Seiten zu sehen, die er nicht sein soll, und halten Sie sich aus entsperrte Benutzer. Der sicherste Weg, dies zu tun, ist die Verwendung von Kolben. Sitzungen leiten den Benutzer auch auf die blockierte Homepage um, wenn er sich anmeldet. Also online, eine auf der Weiterleitungssitzung und Euro vier Bibliotheken die Flask Import als nächstes unter dem folgenden Code auf der Protokollierung validieren bei der Einreichung Abschnitt. Also hier schauen wir den Autor nach und speichern zwei verschiedene Sessions. Der Benutzer I d. Unter vollständigem Namen. Schließlich waren
wir direkt Benutzer auf die Blöcke Homepage. Beachten Sie. Wir überprüfen das Passwort hier nicht, weil dies bereits durch die
Formularvalidierungsfunktion getan wird, die wir zuvor geschrieben haben. Speichern Sie die Datei und die Protokollierung. Mithilfe einer gültigen E-Mail und eines gültigen Passworts sollten
Sie auf die Startseite der Blöcke weitergeleitet werden. Wie überprüfen wir also, ob die Sitzung gespeichert wurde? Lassen Sie uns eine schnelle Überprüfung auf der Homepage für die Sitzung durchführen. Öffnen Sie Blockansichten und auf der Indexmethode. Führen Sie die folgenden Schritte in der Sitzung
durch, ziehen Sie die Flasche, importieren Sie online und speichern Sie die Datei. nun Wenn Sienundie Startseite neu laden und Sie angemeldet sind, sehen
Sie die Benutzer im Namen gesperrt. Es gibt einen anderen Weg, um zu überprüfen, ob eine Sitzung, sagte
er. Die meisten modernen Browser verfügen über eine JavaScript-Konsole, in der Sie die Cookies sehen können, die von einer Website
gespeichert wurden . Zum Beispiel, auf Google Chrome Goto, sehen Sie Entwickler, Jaster-Konsole und in der Anwendung, suchen Sie nach Cookies und wählen Sie den lokalen Host 5000. Sie sollten dort eine Sitzungszeichenfolge sehen.
71. Den Autor melden: Wenn wir eine Protokollierungsmethode haben, sollten
wir sicherlich auch eine Lagermethode haben. Es ist ziemlich unkompliziert. Wir müssen nur die Sitzungskoch löschen. Gehen Sie also zum Autor von You File und fügen Sie das folgende hinzu Die Pop-Methode entfernt aus dem Sitzungsobjekt sowohl das I D als auch die vollständigen Name-Elemente. Danach leiten
wir den Benutzer auf die Anmeldeseite um, speichern die Datei und schlagen nun die Low guttural. Sie sollten auf die Anmeldeseite umgeleitet werden. Wenn Sie jetzt zurück zum Home Euro gehen, sollten
Sie sehen, dass die Blawg-Home-Zeichenfolge auf dem Benutzer an dieser Stelle gesperrt wurde.
72. Flash: Das letzte, was in dieser Lektion tun wird, wird sein, die Kommunikation mit dem Benutzer zu verbessern und ihn zu benachrichtigen, dass Maßnahmen, die er ergriffen hat, erfolgreich abgeschlossen wurden und dafür Flaschen
verwenden. Flash-Nachrichten. Flash-Nachrichten sind eine spezielle Art von Benachrichtigung, die es dem Benutzer ermöglicht, sie zu konsumieren und dann automatisch verschwinden. Lassen Sie uns sie in Aktion sehen. Zuerst wird ein Makro Toe Display Nachrichten in einem schönen Wrapper erstellen. Also gehen Sie weiter und erstellen Sie eine Datei im Stammordner Template namens On the Score. Flash-Nachrichten html Mit dem folgenden Inhalt durchläuft
das Makro im Wesentlichen alle Flash-Nachrichten, die wir vom Gebäude erhalten. Holen Sie geblasene Nachrichten Funktion, die Flasche bietet bemerken die mit Anweisung an der Spitze. Dies ist im Wesentlichen ein Block, der mit Ende mit endet, und es macht die lebensfähigen Nachrichten innerhalb des Blocks verfügbar. Also, wenn es Flash-Nachrichten gibt, gehen
wir Zehe vier Schleife und zeigen die Nachrichten mit ein wenig aus. Bootstrap Sie. Ich helfe, die Datei zu speichern. Und nun lassen Sie uns das Makro in die HTML-Vorlage des Autors in Zeile 11 einschließen. Speichern Sie die Datei und öffnen Sie nun die Datei Ansichten des Autors. Ersetzen Sie liegend 22 durch die folgenden Zeilen und fügen Sie dann unter. Melden Sie sich folgendes ab. Vergessen Sie nicht, Flash am Ende des Imports online hinzuzufügen. Eins. Speichern Sie eine Datei und erstellen Sie einen brandneuen Autor. Wenn Sie auf Registrieren klicken, sehen
Sie die Blitzmeldung oben jetzt sperren und dann auf die Abmelderoute klicken. Sie sehen, dass sich der andere Flash-Message-Benutzer abgemeldet hat.
73. Einheitstests der Testing: Wir haben ziemlich viel von der Autoren-App gemacht, und wir wollen nicht weiter unsere Anwendung erstellen, bevor wir für dieses Stück testen . Erstellen Sie immer Features mit ihren entsprechenden Tests und Sie werden von Ihren Bussen auf
Ihrer Kälte gemocht werden . Entwickler zuerst argumentieren Kills Ordner mit dem Test der Dienstprogramm erstellen wir in der
Zähleranwendung verwendet . Kopieren Sie es einfach und kleben Sie es von dort oder von meinem Tor Hope rupose. Achten Sie darauf, eine darin P Y-Datei hinzuzufügen, damit unser Test-DB-Modul aus
anderen Dateien importiert werden kann . Als Nächstes richten
wir unsere Bestellung Discover Testdatei im Stammverzeichnis der APP ein. Speichern Sie die Datei. Lassen Sie uns nun anfangen, die Autorentests-Datei
zu erstellen, Autoren-Punkt-Tests zu erstellen und den folgenden Code zu setzen. Dieser Code sollte Ihnen von der Zähleranwendung vertraut sein. Sie legt die verschiedenen notwendigen Einfuhranlagen fest. Dot m erstellt die Haupt-Autorent-Testklasse mit einer Create-App-Methode, um unsere Test-App zu erstellen. Ein Set, das Hebelwirkungen getestet werden Bibliothek und ein Abreißen, um alles herunterzufahren. Beginnen wir mit dem Hinzufügen einiger Tests, aber zuerst wird eine benutzerdefinierte Methode hinzugefügt, um schnell ein Benutzerwörterbuch zu erstellen, da wir das viel für Tests benötigen. Unser erster Testfall wird also die Benutzerregistrierung sein. Also beginnen wir mit dem folgenden, dieser erste Fall wird unseren John Smith Benutzer registrieren, und dann werden wir überprüfen, ob die Zeichenfolge, die Sie jetzt registriert sind, in den Ergebnissen ist. Wir müssen Umleitungen Flag hier folgen, da die Register-Methode
auf die Anmeldeseite umgeleitet wird , wo die tatsächliche Zeichenfolge als Flash-Nachricht gedruckt wird. Wenn wir keine Follower Directs haben, würde
der Test auf der Registerseite bleiben, ohne eine Möglichkeit zu überprüfen, ob die Zeichenfolge auf
der Ausgabe vorhanden ist , nur um sicherzustellen, dass wir auf dem richtigen Pfad sind, Sicher zu Datei und auf dem Terminal, laufen durch Spaß. Testen Sie, dass B Y. Stellen Sie sicher, dass Ihr virtueller Verstärker aktiviert ist. Großartig. Unser erster Test ist bestanden. Wenn ein Autorendatensatz erstellt wurde, sollten
wir in der Lage sein, ihn in der Datenbank zu überprüfen. Wie machen wir das? In diesem Fall müssen
wir einen Kontext aufbauen, weil dies etwas ist, das wir normalerweise tun würden. Wir denken an dich aus der App, also machen wir hier folgendes. Wir erstellen einen Kontext der App, die wir C nennen, Hit die Homepage und überprüfen, ob die
Autorentabelle einen Benutzer hat. Dieser Benutzer ist derjenige, der im vorherigen registrierten Test erstellt wurde. Denken Sie daran, dass alle Tests innerhalb einer Funktion oder eines Testfalls die Daten in der Datenbank beibehalten werden. Wenn wir einen neuen Testfall starten, sind alle Daten ein Rennen und wir beginnen von Grund auf neu. Warum brauchen wir, um die Homepage zu bekommen? Technisch gesehen konnten
wir jede Seite treffen, aber durch diesen Anruf konnten die Kontext-Zehe starten. Erlauben Sie uns, das zu tun, dass ich Basisbetrieb den Test ausführen, und wir sollten alle gut sein. Lassen Sie uns zwei weitere Tests für den registrierten Testfall machen,
eine, die versucht, ihren anderen Benutzer mit der gleichen E-Mail in der zweiten, die versucht,
sich mit falsch übereinstimmenden Passwörtern zu registrieren. Beachten Sie, dass
wir im zweiten Test nur die E-Mail und die bestätigten Felder vom Benutzer abgedickten Objekt ändern. Dies ermöglicht es Ihnen, wirklich prägnante Tests zu schreiben, die Datei zu
speichern und die Tests auszuführen
74. Login: Jetzt werden wir einige Tests für die Protokollierungsfunktion schreiben wird einen brandneuen
Testfall erstellen , so dass die Datenbank klar ist. Fangen wir mit folgendem an. Stellen Sie sicher, dass Sie dies auf der gleichen Ebene wie der Test, den Sie so registrieren Funktion erfinden. So erstellt die erste Zeile im Testfall den Benutzer mit einem Benutzer dicked. Als nächstes erstellen
wir einen Kontext, weil wir testen werden. Wenn ich Benutzersitzung gesagt
würde, wären wir nicht in der Lage, ohne einen Kontext zu tun. Als nächstes wird die Lookout-Funktionalität testen. Wieder einmal brauchen
wir einen Kontext, weil wir eine Sitzung testen, nicht die Ausgabe auf der Seite. Wenn die Sitzung also keine ist, bedeutet
dies, dass sich der Benutzer abgemeldet hat. Wir werden mit zwei einfachen Anmelden mit dem falschen Passwort beenden und mit einer nicht existierenden E-Mail am 1. 1 erstellen wir einen neuen Benutzer und überschreiben das Passwort eines falschen. Und dann am 2. 1 haben wir gerade eine E-Mail übergeben, die noch nicht erstellt wurde. Speichern Sie die Datei und führen Sie die Tests aus. Fühlt sich gut an, unsere ganze Strömung richtig getestet zu haben, nicht
wahr? Jetzt ist es an der Zeit, mit der Arbeit an dem Block zu beginnen, so dass unser Autor einige Einträge veröffentlichen kann
75. Die Nav-Bar: bevor wir mit der Arbeit an der Blockposting-Funktion beginnen, werden
wir eine Navigationsleiste erstellen, so dass Benutzer leicht zu den verschiedenen Bereichen der App gehen und sich
abmelden oder abmelden können , erstellen Sie eine Datei namens NAFTA html auf der temperierten Brute und auf der folgenden Code. Wir verwenden Bootstrap-Code. Aber beachten Sie, dass, wenn Anweisungen, in denen wir überprüfen,
ob die Sitzung gesetzt ist , wenn es ist, wir zeigen die Verwendung des gleichen und die Abmeldung wie sonst, wir zeigen einen Logging-Link. Speichern Sie die Datei. Wir müssen nun die Nap-Leiste zu den vorhandenen Vorlagen hinzufügen. Öffnen Sie also die Protokollierungsvorlage und
fügen Sie in Zeile fünf die folgende Zeile ein. Speichern Sie die Datei und öffnen Sie jetzt die Registervorlage und tun Sie das gleiche in der gleichen Zeile. Fünf. Die Datei von Safety und starten Sie den Flachsserver neu. Gehen Sie auf die Anmeldeseite und Sie werden die neue genug Leiste oben bemerken. sich nun mit einem gültigen Autoren-Anmeldeinformationen anmelden, werden
Sie auf die Startseite umgeleitet, aber dies ist keine richtige Vorlage, so dass wir die Nap-Leiste nicht sehen. Stattdessen. manuell Gehen Siemanuellzur Anmeldeseite zurück. Sie sehen nun den neuen gesperrten Zustand aus der Noppleiste mit dem Namen des Autors und einem
Abmelde-Link . Klicken Sie auf den Link „Abmelden“ und Sie sollten zurück zum ausgesuchten Zustand gehen, und damit sind
wir nun bereit, mit der Arbeit an der Blawg-Veröffentlichung unter
76. The und die Kategorie: das erste, was in unserer Blutlücke tun wird, ist es, eine temporäre Blockindexvorlage zu erstellen. Und obwohl es keine Beiträge rendert, wird es
zumindest eine richtige Struktur und naff Bar haben. Erstellen Sie also den Block Ordner auf dem Templates Ordner auf der Innenseite. Fügen Sie Folgendes in einen neuen Index ( ext) ein. E-Mail-Datei. Speichern Sie die Datei und jetzt ersetzt die Indexfunktion auf dem Block Missbrauch Toe Die folgenden Denken Sie daran, Rendervorlage in den Importen auf Zeile 1 hinzuzufügen. Speichern Sie die Datei und jetzt gehen Sie heute Indexseite, um sie auszuchecken. Jetzt werden wir unser Blockmodell erstellen wird eine Post-Klasse haben, in der ein Blockpost
gespeichert wird , und wir werden auch Beiträge nach Kategorie organisieren wollen, so dass wir eine Kategorie-Klasse erstellen. Beginnen wir also mit der Erstellung der Blockmodelle. Python Datei Innerhalb der Blaslücke. Wir müssen die B R Fortsetzung Alchemy-Instanz aus der Anwendungsdatei sowie die Tagesbibliothek für
den veröffentlichten Status Off the Post importieren . Jetzt werden wir den Postklassenabschnitt erstellen. Ich schreibe es und erkläre, was wir hier tun. Also hier haben wir die i D. Für den Datensatz den Titel und Körper für den Block Post, einen veröffentlichten Zustand und eine Lebensflagge,
die verwendet wird, um zu markieren, welche Beiträge auf dem Block zu sehen sind. Wenn wir die Löschfunktion machen, wird dieses Leben einstellen. Flag Toe Falls, dass Slug ist, dass Sie eine freundliche Zeichenfolge für die Artikelseiten sind, die mit dem Slog generieren wird. Wenn ich auf diese Weise Bibliothek, wird
jeder Beitrag ein schön aussehendes Wandbild haben, das uns
auch mit Suchmaschinen-Sichtbarkeit helfen wird . Nun werfen Sie einen Blick auf die Kategorie I. D. Es ist ein ganzzahliges Feld und verweist auf einen Fremdschlüssel aus Kalorien-Punkt i d ah, Fremdschlüssel ist eine Möglichkeit, einen Datensatz auf einem Tisch toe, einen
anderen in einer anderen Tabelle zu verbinden . Und was wir wirklich tun die Datenbank ist, dass wir das I D aus einem Datensatz in der
externen Tabelle im internen Tabellendatensatz gespeichert haben, zum Beispiel, sagen
wir, dass wir einen Post-Titel haben. Mets gewinnen die World Series mit einem i D aus 15 in der Post Tabelle. Jetzt auf der Kategorie-Tabelle, haben
wir verschiedene Sportkategorien wie Fußball, Hockey und Baseball. Nehmen wir an, Baseball-Kategorie I d ist drei Wir würden dann die Post Toe die
Baseball-Kategorie zuweisen , indem wir die Nummer drei in der Kategorie I. D Feld hinzufügen. Ebenso haben
wir den Autor I d. Foreign Key die vorhandene Autorentabelle, um wissen zu können, welcher Autor diesen Beitrag geschrieben hat. Wie funktioniert Sequelae Camino mit Table, um diesen Autor i d mit den
Fremdschlüsselparameterreferenzen zu verknüpfen , ist der Name aus der Tabelle. Wenn Sie die Tabelle überprüfen, die von der Autorenklasse erstellt wurde, wird sie als Autor in Kleinbuchstaben und nicht als Autor in Großbuchstaben bezeichnet. Sie werden dies deutlicher sehen, wenn wir anfangen, Datensätze unter Blogged Post stable einfügen. Als nächstes lassen Sie uns die Enid-Methode erstellen, die aufgerufen wird, wenn wir den Datensatz erstellen, Sie folgendermaßen hier haben wir die Felder für den Post-Datensatz einige Dinge gesagt, die ich möchte, dass Sie zuerst
bemerken, da wir Übergabe eines Autorenobjekts und nicht eines Autors, i d integer toe the post. Wir müssen immer noch die ganze Zahl für den Postautor Foreign Key aufzeichnen. Also haben wir aus dem Autor Objekt extrahiert, das auf den Umfang übergeben wurde. Nun, wenn Sie den Kategorieparameter bemerkt sehen, wird
es auch ein Objekt sein. Aber dieses Mal ist es optional, da wir auf keine Standardeinstellung gesetzt haben. Also prüfen wir zuerst, ob es übergeben wird und dann die Objekte zugewiesen,
die ich der Kategorie i d , dzugewiesen habe. Dann haben wir es zur aktuellen Zeit gesagt. Beachten Sie, dass ich eine UTC-Funktion jetzt verwendet habe. Dies ist die koordinierte Weltzeit bei Nullgrad-Längengrad und wird von keiner Sommerzeit beeinflusst. Warum nicht die Ortszeit, in der wir leben, oder die Ortszeit des Nutzers nutzen? Weil andere Benutzer, die den Block betrachten, möglicherweise in einer anderen Zeitzone leben. Und es ist viel einfacher, den Zeitunterschied zwischen UTC für den Benutzer zu berechnen,
der den Beitrag betrachtet . Also immer, immer UTC für alles verwendet, was das Datum und die Uhrzeit in Ihren Modellen speichert. Wir sind fast fertig, aber es gibt noch eine Funktion, die im Modell verwendet wird. Es wird eine Beziehungsmethode genannt, so dass vor dem darin folgenden Typ ermöglicht es uns, den tatsächlichen Autor oder
Kategorieobjekt an den Datensatz angehängt zu haben . Anstatt eine andere Datenbankabfrage durchzuführen. Wenn wir diese Informationen
zum Beispiel abrufen wollen, sagen
wir, wir wollen den Namen des Autors auf dem Essen er auf der spezifischen Beitragseite anzeigen. Da wir nur die Idee des Autors im Postdatensatz speichern, müssten
wir ein weiteres Abfrageinterview durchführen, um es zu erhalten, bevor wir die Seite mit der Fortsetzung
alchemistischen Beziehung rendern . Wir haben bereits einen Beitrag, dass Autor Objekt, das wir durchqueren können, so den Namen der Beiträge Autor zu drucken, würden
wir tun Post, dass Autor diesen vollständigen Namen. Also, wie funktioniert Beziehung in diesem Fall? Sie haben die eigentliche Klasse übergeben, nicht den Tabellennamen. Erstens
haben wir nicht definiert, wie die Rückwärtsreferenz aussieht oder zurück rechts, was uns erlaubt, von der anderen Tabelle zurück zu Beiträgen zu gehen. Es ist also, als würde man zwei Vögel mit einem Stein töten. Jetzt auf dem Autor und Kategorie Objekte wird eine Post-Eigenschaft haben, die uns erlaubt, alle Post und Autor geschrieben oder älter zu bekommen. Posten Sie eine Kategorie enthält. Also, wenn zum Beispiel wir
zum Beispielauf der Autor-Detailseite ohne zusätzliche Abfragen sind, können
wir tun Autor, dass Beiträge und das würde eine Liste von allen Beiträgen haben. Durch dieses Angebot. Diese Art von Datenbankbeziehung wird als eins zu viele bezeichnet, da ein Autor viele Beiträge haben kann und eine Kategorie viele Beiträge haben kann, jedoch
bemerkte, dass ein Beitrag nicht viele Autoren haben kann, zumindest in diesem -Modell mit erstellt. Es gibt also immer eine Richtung in der Eins-zu-Viel-Beziehung. Wir werden die Viele-zu-Viele-Beziehung später sehen, wenn wir das Tag-Feature erstellen. Immer wenn Sie ein Modell erstellen und nicht sicher sind, wo ihre
Beziehungsdefinitionen eingefügt werden sollen , ist
es sinnvoll, sich daran zu erinnern, welche Tabelle die viele Seite ist, und die Beziehungsdefinitionen
auf diese Seite zu setzen . Schließlich übergeben
wir, wie Sie die Liste von verwandten Objekten laden, indem Sie einen dynamischen Typ von Lacey
Loading deklarieren . Ich weiß, das klingt ein bisschen lustig, aber denken Sie daran, wie eifrig Sie sind, die verwandten Objekte im Speicher geladen zu haben, da wir denken, dass wir nicht alle zugehörigen Objekte jedes Mal geladen werden müssen, wenn wir Dynamic verwenden, was nur das übergeordnete Objekt und Onley lädt die zugehörigen Objekte. Wenn wir danach fragen,
zum Beispiel, zum Beispiel, indem Sie diesen Autor diesen vollständigen Namen posten, spart
dies Zeit, um die Daten auf dem Bildschirm zu rendern. Mach dir vorerst keine Sorgen darüber. Wenn Sie bereit sind, können
Sie mehr über andere Arten von Lacey laden lernen. Lassen Sie uns die Blockmodelle beenden, indem Sie das Kategoriemodell erstellen. Es ist ziemlich einfach. Wir gehen nur auf die Geldstrafe und ich d und den Namen und das war's. Schließlich fügen
wir eine Reproduktionsmethode für beide Klassen hinzu, so dass wir die Instanzen richtig
auf der Shell anzeigen können , für die Post-Klasse tun wird und für die Kategorie-Klasse wird die Datei speichern und wird neben dem Block Post Formular -Definition.
77. Das Blog: wir sind jetzt bereit, unser Block-Post-Formular zu starten. Lasst uns die Hauptklasse ansprechen und wir werden einige der neuen Sachen durchgehen. Wir haben einen Titel, der ein Stringfield ist, das erforderlich ist und eine maximale Länge hat. Wir haben dann einen Körper
, der als Textfeld Decks definieren wird. Felder sind die Felder, die Sie in E-Mail-Formularen sehen, die mehrere Zeilen haben. Als nächstes müssen
wir die Kategorien in Angriff nehmen, also müssen wir Felder dafür haben. Zuerst haben
wir einen Drop Down, was wir tun. Mit dem Query Select Field hier trotzen wir eine Abfrage Factory, die eine Funktion war recht kurz, dass die verschiedenen Optionen aus der Datenbank
greift das Auswahlfeld Toby Blank erlauben. Wenn der Benutzer eine neue Kategorie erstellen möchte, dann rufen wir Tage neue Kategorie Feld und gut definiert es als eine nicht erforderliche Zeichenfolge. Also oben wird das die Kategorien Abfrage-Factory-Funktion definieren Da wir es definieren müssen bevor es in der Postformular-Klasse aufgerufen wird, war
das ziemlich einfach. Wurden gerade eine Rollenkategorieabfrage zurückgegeben. Sie könnten einige ausgefallene Abfragen wie Filtern oder Sortieren der Daten durchführen, aber wir werden gehen. Diese USA sind jetzt Lasst uns die Importe hinzufügen und wir sind fertig. Speichern Sie die Datei und wir beginnen mit der Arbeit an unserem Block Post. Erstellen Sie als Nächstes Vorlage.
78. Blog Post und Ansicht erstellen: Wir werden jetzt die Vorlage entwickeln, die es uns ermöglicht, einen neuen Block Post zu veröffentlichen Erstellen Sie
also eine neue Datei namens Post Op X TML innerhalb des Templates Block Ordner und schreiben Sie
diese dann darin. Es ist ziemlich einfach,
und nichts, was Sie noch nicht gesehen haben, wird die Post Methode Interview mit der
Titelkörperkategorie posten . Wählen Sie auf dem Feld, um eine neue Kategorie eingeben, Speichern Sie die Datei und jetzt öffnen Sie den Block für Sie. Datei und geben Sie den folgenden Code ein. Wir möchten sicherstellen, dass das Formular, das es wie vorgesehen gerendert wird, jetzt oben. Lassen Sie uns den folgenden Import machen. Speichern Sie die Datei, bevor Sie sie ausprobieren. Wir müssen die Datenbankmigration durchführen, da wir die neuen Blockmodelle hinzugefügt haben. Also zu flask sie meine große Sie sollten sehen, wie die Migration ausgeführt wird. Wenn Sie Fehler erhalten, überprüfen Sie die Modelldatei. Bei diesem Vorgang wurde die Migrationsversionsdatei generiert. Es ist immer gut, es auszuprobieren, bevor Sie die tatsächlichen Änderungen vornehmen. So sieht meins hier aus. Wir sehen, dass wir Tune deine Tabellenkategorie und Post-Benachrichtigung am Ende des
Beitrags neu erstellen . Richten Sie ein, wie wir die Fremdschlüssel für den Autor in der Kategorie festlegen. Wenn Sie Fehler sehen, können
Sie diese Datei löschen, Probleme am Modell
beheben, und wir führen die Flasche aus. Db Migrationsbefehl. Denken Sie daran, dass zu diesem Zeitpunkt keine Änderungen an der Datenbank vorgenommen wurden. Also lassen Sie uns das eigentliche Upgrade tun, indem Sie Flask tun, werden
sie Upgrade. Großartig. Jetzt sind wir auf dem flachen Server und gehen rüber, um zu posten. Ihr Postformular sollte gerendert werden. An dieser Stelle, wenn Sie auf „Absenden“ drücken, wird
nichts passieren. Es ist jetzt richtig, die eigentliche Datenbankverarbeitung aus dem Formular.
79. Blog: Wir werden jetzt die Autoren nehmen, Post Daten
blockieren und in der Datenbank speichern. Das erste, was wir herausfinden müssen, ist das Kategoriestück. Ist es eine neue Kategorie, die der Autor eingibt, oder wählt er eine aus der Dropdown-Liste aus? Lassen Sie uns diese in beiden Fällen in einem lebensfähigen Willen namens Kategorie speichern, so geben Sie Folgendes unter der Validierung auf Senden ein. Zuerst prüfen
wir, ob das neue Kategoriefeld darin geblieben ist. Wenn ja, wird eine neue Kategorie-Fortsetzung erstellt. Alchemy hat es mit dem Namen darauf gesteigert und zu einer Sitzung hinzugefügt. Nun ist die Sache, wir brauchen diese Sicherheit in der Datenbank, weil wir das I d für das Post-Modell brauchen, erinnerst du dich? Also, wie machen wir das? Es gibt eine spezielle Methode in der Nachfolgealchemie namens Flush, die die Daten nicht auf der Festplatte speichert, aber es tut eine Art Vorsafe, der das Potenzial I D erzeugt, aber immer noch
die Entscheidung für andere Rechte oder Updates offen hält . Sobald wir das Flush machen, erhalten
wir die richtige Kategorie D und weisen sie unserer Kategorie lebensfähig zu. Wenn das neue Kategoriefeld nicht gesetzt ist, haben wir Kategorie toe zugewiesen. Was auch immer die Autoren auf dem Drop-down-Menü gewählt als nächstes wird die tatsächliche, die
Operation Notice basieren zu schreiben . der ersten Zeile erhalten
wir das Autorenobjekt, indem wir den Autor durch den gesperrten Sitzungsbenutzer i d nachschlagen. Dies natürlich
davon aus, dass ein Autor angemeldet ist. Als nächstes erhalten wir den Titel auf dem Körper, indem wir eine Python Streifen-Operation auf beide anwenden, so dass wir alle fortlaufenden oder hinteren Leerzeichen entfernen. Dann erstellen wir die Post Fortsetzung Alchemy Objekt und dann der Sitzung hinzugefügt und übergeben, die alle ausstehenden Operationen zu Schreibtisch, einschließlich. Wenn es eine neue Kategorie gibt, sind
wir fast fertig, aber wir wollen die Blockbeiträge generieren. Wer ist l mit einem Slog aus dem Post-Stil generiert so online zwei beim folgenden Import . Dann nach dem Commit haben wir gerade folgendes geschrieben Hier erzeugen wir die Slug mit der langsam defied Bibliothek, verwenden
wir eine Kombination aus dem Post I D. Auf dem Titel. Also habe ich das I D benutzt, denn wenn wir Recht haben, Post mit dem gleichen Titel zu blockieren, werden
sie immer noch verschiedene Ural haben. Wir haben dann einfach das Post-Objekt geändert, diese Look-Eigenschaft
hinzugefügt und da wir keinen neuen Datensatz hinzufügen, ändern wir ihn
einfach. Wir verpflichten uns dazu, speichern die Datei und stellen sicher, dass Sie gesperrt sind, bevor Sie den ersten Artikel veröffentlichen. Gehen Sie weiter und versuchen Sie, Ihren ersten Blockbeitrag zu buchen, indem Sie eine neue Kategorie mit dem neuen Kategoriefeld erstellen. Wenn Sie den Post-Button drücken, sollten
Sie auf das gleiche Formular mit dem gleichen Inhalt weitergeleitet werden. Wenn Sie irgendwelche Fehler erhalten, überprüfen Sie bitte. Du vermisst nichts. Wie überprüfen wir, ob der Beitrag gespeichert wurde? Sie können sich anmelden, die Datenbank
abschleppen und den Datensatz sehen, indem Sie den folgenden Hinweis tun, wie der Slug gespeichert wird und dass der öffentliche Zustand als UTC-Zeit gespeichert wird. Wir können auch den Datensatz in der Kolbenschale überprüfen. Jetzt wollen wir etwas anderes versuchen. Melden Sie sich mit der naff-Leiste im Browser ab und versuchen Sie, einen neuen Block Post zu erstellen. Beachten Sie, wie auf unserer Kategorie nach unten gezogen, haben
wir jetzt die Kategorie, die wir früher erstellt haben, was eine gute Nachricht ist. Wählen Sie diese Kategorie jetzt aus. Klicken Sie auf die Schaltfläche „Post“. Was passiert? Wir kommen da rein. Wenn Sie den Stapel einchecken, sehen
Sie den Täter. Es gibt keine Sitzung I D. Also wie stellen wir sicher, dass ein Autor eingesperrt ist und dass andere Blockbesucher nicht zu
Ihrem Blut posten können , indem sie etwas verwenden, das als Dekorateur bezeichnet wird, was als nächstes funktioniert?
80. Der Login: wenn wir eine bestimmte Route einschränken wollen, es sei denn, eine bestimmte Bedingung erfüllt ist. Eine nützliche Funktion, die verwendet werden soll, wird Dekorator genannt. Das Wort Dekorator stammt aus dem so 40 signierten Muster, und im Wesentlichen umfasste
es das Umwickeln einer Funktion mit einer anderen Funktion, so dass die innere Funktion in irgendeiner Weise
erweitert wird , ohne ihre interne Struktur zu ändern. Wir haben bereits einen Dekorateur,
den Route Dekorator in unseren Ansichten Dateien verwendet . Dekorateure beginnen mit dem at Schild. Der Route Decorator weist ein bestimmtes Mädchen jeder Funktion zu, die sich darunter befindet, für unsere Anwendung. Es gibt eine perfekte Verwendung für einen anderen Dekorateur zerschlagen. Wir gingen, um leicht bestimmte Routen auf Lee zugänglich zu machen, wenn ein Autor eingeloggt ist und speziell die Post Route. Also lassen Sie uns eine Verriegelung erforderlich Dekorateur bauen. Erstellen Sie eine Datei namens Decorators B Y innerhalb des Autorenordners und legen Sie den folgenden Code
hinein . Wir verwenden eine Python-Bibliothek namens Wraps, die
ironischerweisean
sich ein Dekorator ist ironischerweise . Die Funktion, die wir definieren möchten, befindet sich innerhalb der dekorierten Funktionsdefinition, da wir die Sitzung von Flask online importieren, um Zugriff auf die Sitzung zu haben. Wenn also die Sitzung I D nicht gesagt wird, werden
wir dem Benutzer den Log in Euro schicken. Aber beachten Sie,
dass wir einen nächsten Parameter übergeben, der die aktuelle Anfrage speichert, Earl, Earl,der es uns erlaubt, den Benutzer dorthin zu schicken, wo er war, bevor wir sie umgeleitet haben. Zehe die Anmeldeseite. Da es hier nichts anderes gibt, die Funktion einfach ihren Weg fort. Wenn die Sitzung, die ich d gesetzt habe, was wir wollen, speichern Sie die Datei, wir wollen nun die Anmeldeseite leicht ändern, so dass es den nächsten Parameter lesen kann, wenn Benutzer die geschützte Seite hassen. Also bei dem folgenden Code online, 31 aus dem Autor Ansichten Seite, werden
wir die verweisende Ihre l auf den nächsten Parameter auf Aufstieg übergeben speichern. Lebensfähig. Wir werden auch als nächstes anrufen und dann Zeile 38 durch den folgenden Code ersetzt. Wir überprüfen, ob es eine nächste Sitzung gibt, und wenn es gibt, lesen
wir es die kleine Sitzung und leiten auf diese Seite um. Wir müssen auf Antrag Bibliothek die Importe, die so am Ende Offline eins hinzugefügt wurden. Speichern Sie die Datei. Wir sind endlich bereit, unseren Dekorator zu verwenden Öffnen Sie die Block Views Datei und online acht wird unseren Dekorator
importieren, dann auf 9 17 wird unser Dekorator vor der Post Methode und nach der Route Dekorator hinzufügen, Speichern Sie die Datei. Und jetzt gehen Sie auf die Startseite und stellen Sie sicher, dass Sie sich abmelden. Dann gehen Sie zur Post Euro. Du wirst so etwas sehen. Beachten Sie, dass der Ural den nächsten Parameter im Euro hat, obwohl die Seite ein bisschen lustig aussieht, da es Ihre alle enthalten ist Login mit einem gültigen Autor und sobald Sie wieder sollten Sie zurück auf die Beitrag-Seite gebracht werden. Ziemlich cool, stimmt's?
81. Blog-Artikel und Markdown: Wir möchten jetzt in der Lage sein, Beiträge für unsere Blockbesucher anzuzeigen, und wir tun dies mit einer Artikelansicht und Vorlage. Lassen Sie uns also eine neue Datei namens Article X TML im Block Templates Ordner mit dem folgenden Code erstellen. In dieser Vorlage drucken
wir den Titelkörper Autor und die Kategorie. Wenn wir es haben,
beachten Sie, dass wir einen lustigen Zeilencharakter namens Pipe and Award neben dem
Postkörper markiert haben . Eine Haltung ist ein Modifikator für den Versuch, lebensfähig zu sein. Wir werden Bloggeartikel mit einer Markierungssprache namens You Guessed it nach unten
markiert mit Mark down, Sie passen an Aufzählungszeichen, Titel und Untertitel, Kursiv und Schüsseln Mit Sonderzeichen, Google markiert nach unten für ein wenig mehr Hintergrund auf, was Sie damit tun können. Speichern Sie die Datei. Wir haben Kolbenabzeichen bereits in unseren Anforderungen installiert. Txt. Aber wir müssen es zu unserer Bewerbung für Ihre Frau Ill hinzufügen. Öffnen Sie also die Datei und fügen Sie den folgenden Import online für und die Zeile 22 unter der folgenden Speichern Sie die Datei. Als nächstes wird eine Route auf dem Block Views Datei hinzufügen So alt weg bis zum Ende bei der folgenden Hinweis diese praktische Abfrage Filter kalt zuerst oder für vier. Wenn kein Beitrag seine Rückkehr, es wirft eine für vier, nicht gefunden Fehler für uns. Also, wie sehen wir einen Artikel? Wir haben noch nicht auf der Homepage gearbeitet, aber wir können auf Artikel direkt nach der Erstellung sehen. Also lassen Sie uns den folgenden Code nach der DB-Sitzung hinzufügen. Commit-Zeile auf dem Abschnitt „Validate on submit“ des Beitrags. Stellen Sie sicher, dass Sie Flash hinzufügen, umleiten und Euro für die Zehe der Flasche, Importieren Sie online und speichern Sie in Datei. Versuchen wir nun, einen neuen Block zu erstellen. Bulls Versuchen Sie, einige der Markierungs-Down-Codes zu verwenden, zum Beispiel, indem Sie Sternchen zu fett einige der Wörter hinzufügen oder tun. Untertitel mit Pfund Wenn Sie einreichen, sollten
Sie zur Artikelansicht weitergeleitet werden.
82. Blog: haben wir genug Code geschrieben, damit wir darüber nachdenken können, einige Tests hinzuzufügen. Also lasst uns anfangen, die Blocktests für das zu schreiben, was wir bisher haben. Erstellen Sie einen Test. Sei eine wilde Datei im Blockverzeichnis. Wir beginnen mit der regulären Einrichtung, die Ihnen vertraut aussehen sollte. Wir haben unsere regelmäßigen Importe, aber beachten Sie das Schloss. Wenn ich importiere, dann der Punkt m die Modelle und Dienstprogramme. Und schließlich wird
der Haupttestfall, den wir Post Test mit einem Setup und Rear Down-Methoden aufrufen,
bis Wörterbücher erstellen , die durch die Tests wiederverwendet werden. Ein Benutzer dicked und entgegengesetzt perfekt abgedickt. Im ersten Testfall geht es also darum, Artikel zu posten. Beginnen wir mit dem Versuch, zu posten, ohne eingeloggt zu sein. Wir sollten eine Nachricht erhalten, die uns auffordert, sich einzuloggen Next wird sich registrieren und unsere Spot-Autor protokollieren . Jetzt wollen wir versuchen, den Artikel mit zu posten sind ziemlich in Ordnung. Posting wird behaupten, dass der Artikel veröffentlicht wurde und dass er unter der
Tech-Kategorie abgelegt wurde . Speichern Sie die Datei und lassen Sie uns die Tests perfekt ausführen. Mit unserer Verpflichtung vollständig getestet, lassen Sie uns auf die Erstellung einer richtigen Homepage für einen Block
83. Blog-Seite und Pagination: bevor wir die Block-Startseite starten, lassen Sie uns eine Option hinzufügen, um alle Artikel auf unserer Naff Bar zu veröffentlichen. So geöffnet genug HTML-Datei und fügen Sie den folgenden Artikel online. 12, die den Link zum Erstellen eines neuen Beitrags auf unserer naff-Leiste anzeigen, wenn wir gesperrt sind, und speichern Sie dann die Datei. Okay, also starten wir die Block-Startseite. Beginnen wir mit der Vorlage. So öffnete die blawg Index HTML-Vorlage und ersetzen Sie den Inhalt mit dem folgenden. Werfen wir einen Blick darauf, was hier vor sich geht. Zuerst haben wir alle Beiträge durchgeschaut, die an die Vorlage gesendet werden, wobei jedem der Beitrag lebensfähig
zugeteilt wird. Wir zeigen dann den Titel des Beitrags mit einem Hyperlink-Zehe an. Die Artikeldetailseite. Dann, mit diesem Spiel nur die ersten 220 Zeichen aus der Post. Da dies die Homepage ist, zeigen
wir dann den vollständigen Namen der Autoren und das Datum des Beitrags, den Former mit der
String-F-Zeitfunktion gemacht hat . Beachten Sie, wie, dank der Datenbank Modelle Beziehung Verbindung, können
wir Harfen ersten Beitrag als Autor als sein vollständiger Name tun. Dies ist die Ausschalten von Fremdschlüsseln und Fortsetzung Alchemy Schließlich zeigen
wir die Kategorie. Wenn es eine gibt, speichern Sie die Datei. Als Nächstes. Lassen Sie uns die Ansichten B y für die Homepage im Blockverzeichnis einrichten. So ersetzen Sie die Indexmethode mit dem folgenden Hier wurden alle Blockpost abgerufen, die das Leben
haben, Field sagte zu wahr und Zuweisung zu den Beiträgen lebensfähig. jedoch, Wir möchtenjedoch,dass die neuesten Beiträge oben erscheinen. Also haben wir das Post-Abfrageobjekt ergriffen und die Reihenfolge nach Funktion angewendet, um die Zuweisung eines neuen Lebensfähigen mit kalten Beiträgen Order. Die Reihenfolge nach Funktion ermöglicht es Ihnen, eine Abfrage Salz-Liste zu manipulieren und sie nach einem beliebigen Feld zu sortieren . Wir verwenden eine spezielle Methode aus dem Publish-Zustandsobjekt namens Desk, was bedeutet absteigend i e. was bedeutet absteigend i e. Zuerst haben wir schließlich die Beiträge Order Objekt an die Vorlage übergeben, indem wir ihm die Vorlage Namen Beiträge zuweisen. Allerdings können
wir diesen Code viel kürzer machen, indem wir sequel Al Commies verwenden. Gänseblümchen-Verkettung Im Wesentlichen können wir zwei oder mehr Operationen mit einem dunklen zwischen ihnen kombinieren. Sie haben es vorher verwendet, wenn wir die erste Methode für die Abfragen gemacht haben, aber lassen Sie uns es mit der Reihenfolge tun, also ersetzen Sie den Code wie folgt. Jetzt müssen wir keine separaten Variablen für die beiden Operationen haben und nur die
Ergebnisse auf den lebensfähigen Beiträgen speichern . Solange das Lebensfähige eine Abfrageliste ist und nicht nur eine einfache enge Liste ist, können
wir intern weitere Operationen ausführen. Was passiert ist, dass Fortsetzung Alchemy wartet, bis Sie wirklich die Ergebnisse brauchen und nur aggregieren all diese Operationen, wie das Gericht anweist. Also wirklich, wir tun nur eine Abfrage hier an die Datenbank. Nicht zu, was sehr effizient und schnell ist. Speichern Sie die Datei und starten Sie jetzt den Flask-Server und gehen Sie zur Homepage. Je nachdem, wie viele Beiträge Sie haben, sehen
Sie sie hier in absteigender Reihenfolge aufgelistet. Gehen Sie weiter und erstellen Sie neue Blockbeiträge, so dass Sie sie hier sehen können, wenn wir vier oder fünf
Beiträge oder sogar ein Dutzend haben . Es ist in Ordnung, sie alle auf der Homepage anzuzeigen, wie wir hier haben,
aber was passiert, wenn wir Hunderte von Beiträgen haben? Wir möchten vielleicht ein Konzept namens Imagination einführen, das eine Teilmenge der Ergebnisse anzeigt und eine Art Navigationslinks anzeigt,
um zur nächsten Substanz zu gelangen. Lassen Sie uns diese Lösung implementieren. Aber zuerst
stellen Sie sicher, dass Sie mehr als fünf Beiträge in Ihrem Block haben, damit wir die Paginierung in
Aktion sehen können . Ok, fertig. Zuerst möchten
wir die Blockansichten ändern. Gehen wir folgendes vor. Wir definieren eine Seite Gleichnis, die einen Seitenparameter liest, der an die Route übergeben wird. Wenn es keine gibt, wird
ihm die Nummer eins zugewiesen. Wir werden in der Lage sein zu bestimmen, auf welcher Seite der Ergebnisse mit diesem Parameter waren. Dann gehen wir Zehe Daisy Chain eine andere Funktion am Ende der Beiträge Query genannt paginated. Stellen Sie sich einen Stamm vor Es ist die Ergebnisse in Sätzen oder Seiten auf der Funktion nimmt drei Parameter, auf
welcher Seite wir derzeit sind. Wie viele Ergebnisse für Bates wollen wir? Und schließlich, wenn wir einen 44-Fehler anzeigen möchten, wenn irgendwie gezwungen wurden, wird
eine Seite ohne Ergebnisse diese Zehe falsch setzen. Da ich Tage nicht als eine wirklich Fehlermeldung betrachte, lege ich eine Konstante namens Posts pro Seite online 12 an und setze sie auf fünf. Warum nicht die Konstante in die Indexfunktion legen, die ich normalerweise gerne Konstanten lebe, die
oben in der Datei unter den benutzerdefinierten Importen definiert sind, so dass andere Tiefen Nein, das ist etwas, was sie ändern können und so dass wir es in anderen Routen verwenden können, wo wir den gleichen Wert verwenden möchten. Wir müssen auch die Anforderungsbibliothek von Flask hinzufügen. Also änderte diese Online-ein. Speichern Sie die Datei. Jetzt müssen wir den Block Index Vorlage ändern Zeile 18 auf die folgende ändern. Also, was passiert ist Jetzt haben die Beiträge lebensfähig nicht nur eine Liste, sondern es hat die Teilmenge der Datensätze in der Eigenschaft items. Es hat auch andere Werte, die wir in Kürze verwenden werden. Speichern Sie die Datei und laden Sie die Homepage. Es werden nur die letzten fünf Beiträge angezeigt. Jetzt am Parameter Fragezeichen ph gleich zwei Euro und Sie werden die nächsten
Ergebnisse sehen . Benutzer werden dies nicht manuell unter Ihrer URL eingeben, um zur nächsten Seite Daher fügen wir am unteren Rand der Vorlage ein Bedeutungsnavigationselement hinzu. So, jetzt unsere Beiträge lebensfähig. hat nicht nur die Ergebnisse in seinen Elementeigenschaften, es hat auch ein Anbaufeld, wenn es mehr Beiträge vor oder nach dieser Seite gibt, und auch die Vorschau und die nächste Seitenzahl von der, die wir betrachten. Also, hier überprüfen wir. Wenn Beiträge hat prev ist wahr. Es bedeutet, dass es vor dieser Seite eine Seite gibt, und wir rendern den Link mit der vorherigen Seite als Parameter für die Ansicht. Und ähnlich, wenn Beiträge als nächstes hat, zeigen
wir den Link mit der nächsten Seitenzahl an. Da wir in umgekehrter chronologischer Reihenfolge sind, sagen
wir neuere Beiträge für die vorherige Seite und ältere Beiträge für den nächsten Köder. Speichern Sie die Datei und öffnen Sie nun die Indexseite. Sie werden die Links sehen. Wenn Sie mehr als fünf Beiträge haben, nächste wird unsere Blockbeiträge mit der Möglichkeit, Bilder hinzuzufügen aufpeppen.
84. Bilder hochladen: Damit wir Bilder hochladen können, müssen
wir einige Änderungen an einigen vorhandenen Bereichen außerhalb unseres Codes vornehmen. Wir beginnen mit dem Hinzufügen des Datei-Upload-Feldes in unserer Formulardatei. Öffnen Sie es also und im folgenden Bildfeld auf Post für die WT-Formulardatei. Feld-Renders haben einen Blas-Dialog auf dem Formular, in dem Sie eine Datei von Ihrem
Computer auswählen und senden Sie sie zusammen mit dem Rest der Daten an die Serverdatei. Feld hat einen Validator namens Datei erlaubt, wo wir die Dateitypen definieren können, die wir auf dem
Server zulassen . In diesem Fall erlauben
wir nur J. Peg und PNG Bilddateitypen. Stellen Sie sicher, was das Dateifeld in den Importen
auch online, auch online, und um die Datei erlaubten Validator online zum Speichern der Datei und öffnen Sie nun die Post
HTML-Blockvorlage wird das eigentliche Bildelement am Anfang aus der Feldliste auf der speichern Sie die Datei und gehen Sie nun zu Ihrer blockierten Post Seite, um das Bildelement dort auszuchecken. Natürlich Auswahl eines Bildes hier noch nichts tun, da wir dies auf dem
Datenbankmodell implementieren müssen . Also lasst uns das machen. als Nächstes Öffnen Sieals Nächstesdie Blockmodelldatei direkt unter der Textspalte. Lassen Sie uns folgendes hinzufügen. Was wir tun werden, ist, den Bildnamen und nicht die eigentliche Binärdatei aus dem
Bild in der Datenbank zu speichern . Meine Fortsetzung ermöglicht auch das Speichern von Binärdateien, aber ich fand dies umständlich für das Speichern von Bildern für so etwas wie eine Blockplattform-ID . Stattdessen wurde die Datei selbst auf einem Server gespeichert, der dann das Image statisch bedienen kann, als den Obligationsserver zu
überlasten, um diese aus der Datenbank zu holen. Warum also 36 Zeichen in der Länge? Wir werden einen zufällig generierten Hash mit dieser Bibliothek verwenden, die Sie genannt You I D. Das erzeugt Zeichenfolgen aus 36 Zeichen. Ich erkläre Ihnen noch ein bisschen mehr. Warum in ein bisschen jetzt in der Image-Eigenschaft auf der innit-Methode. Speichern Sie die Datei. Da wir das Datenbankmodell geändert
haben, müssen wir eine Migration durchführen. Sie auf dem Terminal also FührenSie auf dem Terminal alsoden Migrationsbefehl aus. Als Nächstes überprüfen
wir, ob die neue Migrationsdatei in Ordnung ist. Das sieht gut aus für das Upgrade. Es fügt die Bildzeichenfolge Spalte auf der Post Lage, und wenn wir es herabstufen, löscht diese Spalte. Jetzt werden wir diese Änderungen auf die Datenbank anwenden. So zu flask, Baby-Upgrade Perfekte Hoffnung, dass Sie die hängen von Migrationen. Okay,
Zeit, um die eigentliche Bildverarbeitung auf dem Block Views Controller durchzuführen. Also öffnete eine Datei direkt unter der Funktion „Validate on Submit“. Im Folgenden beginnen wir mit der Schaffung eines leeren Bildes, ich d lebensfähig. Wenn der Beitrag kein Bild hat, wird
das Feld als Nein gespeichert. Wir prüfen dann, ob ein Bild über das Formular gesendet wird, indem wir prüfen, ob ein
Bildfeld mit Daten darin vorhanden ist. Wenn der Benutzer dann ein Bild gebildet auferlegt, unser Bild noch vorhanden, aber die Dateneigenschaft wird leer sein. Wir haben dann dem F kaufbaren Zehe den Inhalt aus den Formularbilddaten zugewiesen. Als nächstes generieren
wir ein zufälliges i D für das Bild mit der U. I.D I.D .
Library. Die Slaverei erzeugt eine zufällige Zeichenfolge, die für einzigartige I DS geeignet ist und die immer eine Länge von 36 Zeichen
haben wird , wie ich bereits erwähnt habe. Warum also nicht den Namen der Originaldatei verwenden? Das Problem ist, dass der Dateiname seltsame Zeichen oder Leerzeichen hat, die das
externe Rendering brechen können , und wir erhalten nicht wirklich etwas Wertvolles, indem wir den ursprünglichen Namen aus der Datei speichern, mit dem Code
fortfahren und dann eine Dateiname mit dem Bild I D. Plus die Erweiterung PNG. Da wir alle Bildtypen in das PNG-Format konvertieren, erstellen
wir dann einen Dateipfad, wo wir das Foul speichern, das ist eine Kombination aus dem Block Post Bilder Bad Einstellung wir auf dem Dateinamen hatten. Wir haben das Betriebssystem verwendet, dass während der Bibliothek Pfad, da wir die Kompatibilität mit Windows- und UNIX-basierten Ordnerstrukturen beibehalten wollen. Schließlich mit der Python Image-Bibliothek öffnen
wir
mit der Python Image-Bibliothekdie Dateidaten und speichern sie in dem Pfad, der in das PNG-Format konvertiert wurde. Wir sind fast fertig, aber wir wollen ein weiteres Stück der Bildrust ansprechen. Wenn Benutzer Bilder hochladen, können
sie unterschiedliche Größen und Proportionen haben, und wir möchten die Bilddimensionen etwas vereinheitlichen, damit unser Post-Layout konsistent ist. Dafür habe ich eine Bildrece-Icing-Funktion erstellt, die ich jedes Mal kopiere und füge, wenn ich diese
Funktionalität benötige . Also am Ende der Datei, setzen Sie den folgenden Code. Was Dysfunktion tut, ist, dass es den Bilddateipfad die eindeutige i D erfordert. Die Größenänderung Pixel von der mit Wir wollen auf einer Erweiterung toe die Note. Die unterschiedliche Größe im Dateinamen. Mit ein bisschen Mathematik haben wir Bilder mit erkannt und rezitiert sie dann, indem wir die mit Größe verwenden. Wir wollen die Höhe proportional halten, damit wir den Aspekt des Bildes nicht verformen. Schließlich haben wir eine Datei mit der Erweiterung gespeichert, die an die Funktion übergeben wurde. Mit diesem an Ort und Stelle, gehen Sie voran und im folgenden unter dem Formular Bild bedingte, wir haben früher geschrieben. So speichern wir eine große Version aus dem Bild für die Artikelvorlage und eine kleine Version für die Indexvorlage. Wir müssen das Bildfeld zu dem Modell auf der Oberseite der Datei bei den Importen hinzufügen, die wir
auf dem Block Post Bilder Pfadkonstante von Einstellungen benötigen . Wir sind fertig mit einer Aussicht. Also gehen Sie vor und speichern Sie die Datei, bevor wir unseren ersten Beitrag mit einem Bild erstellen, müssen
wir das Bild zu dem Artikel und die Indexvorlage auf der Artikelvorlage in
der folgenden Zeile 15 hinzufügen . Öffnen Sie nun die Indexvorlage. Und bei dieser online 30 teilen wir im Wesentlichen den Artikel in zwei Spalten auf der linken Seite wird den Artikel haben und das Bild unterschreiben. Wenn wir eine sichere Datei haben, müssen
Sie den lokalen Ordner erstellen, in dem wir die Bilder hochladen Gehen Sie
also weiter und erstellen Sie ihn. In meinem Fall habe ich statische Bilder erstellt. Lädt den Ordner hoch. Jetzt gehen Sie vor und erstellen Sie einen Beitrag mit einem Bild. Wenn Sie auf „Senden“ klicken, sollten
Sie zur Artikelansicht weitergeleitet werden, in der das Bild angezeigt wird, und wenn Sie zur Startseite zurückkehren, sollten
Sie Ihren ersten Beitrag mit einem Bild sehen. Jetzt gehen Sie überprüfen Sie die statische Bilder Uploads Ordner. Sie werden die drei Bilder dort mit ihren
U-I-D-Einreichungen sehen. Eins ist das Originalbild. Auf den anderen beiden sind die rece eised Versionen. Versuchen Sie, ein paar Bilder mit unterschiedlichen Verhältnissen hochzuladen, um zu sehen, wie sie in der Größe geändert werden.
85. Posts bearbeiten: jeder backt mich. Steaks und Blockautoren sind nicht die Ausnahme. Also gingen wir zu welcher Funktionalität Toe unsere Blockbeiträge hinzugefügt hat. Das erste, was wir tun würden, wäre, eine neue Vorlage in unserem Block
Ordner mit dem Namen Edit XML oder Sowas ähnliches zu erstellen . Er würde die gleichen Felder wie unsere Post HTML Bild Titel Körper Kategorie, usw cetera. Aber eine Sache, die ich möchte, dass Sie immer darüber nachdenken, was Anfänger Entwickler von Profis unterscheidet, ist Zeh. Identifizieren Sie immer Bereiche, in denen Sie Code wiederholen, und denken Sie darüber nach, wie Sie diese
Wiederholung vermeiden können. Mit anderen Worten: Trocknen oder wiederholen Sie sich nicht. Also werden wir Code hinzufügen, so dass wir keine andere Vorlage benötigen, sondern die Post extreme El Template verwendet Schleppen beide rechts neue Beiträge und fügte sie so öffnen Post html und wird Bedingung hinzufügen. ALS, basierend auf einer neuen Lebensfähigkeit, wird durch die Vorlage namens Aktion übergeben. Wenn die Aktion neu ist, dann ist es ein neuer Beitrag. Andernfalls bearbeiten
wir einen vorhandenen Beitrag. So ersetzt Online 13 den Titel toe. Die folgende Jetzt, da wir die verschiedenen Routen basierend auf der Aktion posten möchten, wird
viable die vier Methode toe die folgende Notiz auf dem Editierteil der Methode
mit einem Parameter namens slug ändern . Auf diese Weise werden wir feststellen, welcher Artikel bearbeitet wurde. Wird auch die Übergabe des aktuellen Inhalts des Beitrags an die Vorlage mit einem Beitrag lebensfähig nächsten wird die Beiträge Bild anzeigen wollen, so dass der Benutzer es sehen kann und hat eine Option, um eine neue
hochzuladen. Also unter dem Formular versteckte Tack, fügen Sie die folgenden Schließlich, wollen etwas andere Nachrichten für die Senden-Schaltfläche anzeigen, so ändern Sie es in die folgende. Speichern Sie die Datei Jetzt, bevor wir an der neuen Route arbeiten, lassen Sie uns sicherstellen, dass wir neue Beiträge erstellen können. Mit dieser Vorlage. Wir müssen die neue Aktion hinzufügen, die versucht ist, lebensfähig Zehe der Post Route. Also bei der Aktion, lebensfähig online 78. Speichern Sie die Datei und stellen Sie sicher, dass Sie einen neuen Artikel posten können. Lassen Sie uns nun die eigentliche Bearbeitungsroute auf unserer Ansicht direkt nach der Artikelroute machen. Beginnen wir mit dem Rendern aus den vier. Beachten Sie, wie wir eine etwas andere Version von der Postformular-Klasse verwenden, wenn wir einen neuen Beitrag
machen. Wir haben gerade Post Form Klammern verwendet, aber wenn wir einen vorhandenen Datensatz bearbeiten möchten, übergeben
wir ihn an das Formular mit Objekt gleich. Also zuerst holen wir den Beitrag mit dem Abfragefilter und übergeben ihn dann in den Vordergrund, speichern die Datei und gehen jetzt zu einem der vorhandenen Artikel und ersetzen die Beiträge auf dem Ural. Mit edit sehen
Sie den gleichen Artikel jetzt in das Formular geladen. Natürlich wird
keine der Änderungen, die wir hier vornehmen, in einer Datenbank gespeichert, bis wir eine Logik auf die
Ansicht gesetzt haben . Also fügen wir das zuerst hinzu, lassen Sie uns das validieren vollendet hinzufügen. Wir werden das Originalbild und den Titel auf temporären Variablen speichern, da wir überprüfen werden, ob diese später geändert wurden. Aber sieh dir die letzte Zeile dort an. Die beliebte Objektmethode aus dem Formular. Was diese Flasche WT-Formularfunktion tut, ist, den Inhalt des Formulars zu nehmen und Zehe
auf bestehenden Datensatz in diesem Fall Post angewendet , die aus der Datenbank abgerufen wurden, wenn das Formular nach dem Senden empfangen wird. Lassen Sie uns nun das Bild verarbeiten, unter Berücksichtigung, dass der Benutzer es ändern könnte. Dies ist ähnlich wie bei der ursprünglichen Post-Methode,
aber beachten Sie, dass, wenn keine Bilddaten übergeben werden, wir das Post-Bild auf die ursprüngliche Bildvariable setzen, die wir am Anfang verwendet haben. Wenn wir es nicht auf diese Weise tun, wenn wir füllen, Objekt und die Verwendung einer Sackgasse im Bild verwenden, würde
es tatsächlich das Bild aus einem Datensatz löschen. Und das wollen wir nicht tun. Wenn der Benutzer kein Bild auswählt, bedeutet
dies, dass er das ursprüngliche Bild beibehalten möchte. Als nächstes prüfen
wir, ob der Benutzer wieder eine neue Kategorie eingegeben hat, die unserer ursprünglichen Postleitzahl ähnelt. Was passiert also, wenn der Benutzer die Kategorie mit der Dropdown-Liste auf dem Formular ändert? Das beliebte Objekt kümmert sich darum, da es die neue Kategorie im
Postdatensatz ersetzt , der vom Benutzer auf dem Formular ausgewählt wird, muss schließlich unsere Slog aktualisieren, wenn sich der Titel geändert hat, und deshalb haben wir den ursprünglichen Titel auf der ganz oben. Ok, das war's. Wir können nun den bearbeiteten Datensatz in der Datenbank
speichern, die Datei speichern
und nun versuchen, es einige Ihrer Artikel hinzuzufügen, indem Sie sie auswählen und dann in der Post mit Bearbeiten auf den Euro ersetzen. Versuchen Sie auch, die Bilder zu ändern. - Natürlich. Es ist nicht sehr benutzerfreundlich, den Euro weiter zu nutzen. Bearbeiten Sie Hack. Also lassen Sie uns tatsächlich auf einen Editier-Link auf ihren Artikeln. Ich habe den Artikel geöffnet, ext. E-Mail-Vorlage und fügen Sie die folgenden online hinzu. 31 Speichern Sie die Datei und jetzt wird jeder Artikel einen Editier-Link haben.
86. Beiträgen und Verfassen der Bearbeitungstests und Löschen von Tests: zusammen mit der Bearbeitungsfunktion sollten
wir auch die Möglichkeit haben, Beiträge zu löschen. Wir werden das Life Flag auf dem Modell verwenden, da wir nie wirklich etwas löschen wollen, sondern es vor dem Benutzer verstecken wollen. Auf diese Weise können wir Post wiederherstellen, die wir versehentlich gelöscht und erhalten alle Daten , die wirklich billig ist heute mit niedrigen Speicherkosten erstellt wird. Elite-Methode Nach der Bearbeitung. Unblockierte Ansichten Ziemlich unkompliziert. Wir haben gerade den Artikel Slug geholt und das Leben lacto Falls auf der Datenbank aktualisiert. Speichern Sie die Datei. Nun fügen wir die Lead-Funktionalität zum Artikel Template online 33. Fügen Sie einfach Folgendes ein Speichern Sie die Datei und jetzt sollten Sie in der Lage sein, jeden Artikel
aus der Artikelansicht zu löschen . Jetzt, da wir Funktionen zum Bearbeiten und Löschen haben, müssen
wir Tests schreiben, damit wir sicherstellen, dass sie korrekt funktionieren und garantieren, dass kein neuer Code die Logik bricht. Öffnen Sie also die Blocktestdatei und fügen Sie Folgendes hinzu. Zuerst registrieren wir den Benutzer, dann loggen und posten einen Artikel. Wir fahren dann fort, um den Titel in meinen neuen fantastischen Beitrag in Gecheckt zu ändern, dass der Artikel , bearbeitete Nachricht erscheint und dass der Titel auf der Artikelansicht geändert hat. Schließlich drücken
wir die Löschroute und stellen sicher, dass die gelöschte Zeichenfolge des Artikels auf der Seite angezeigt wird, speichern Sie die Datei und führen Sie die Tests aus.
87. Blog-Tags und Tests: Wir werden jetzt eine Funktion implementieren, die eine neue Art von Datenbankbeziehung erfordert. Bis jetzt haben
wir eine Art von Beziehung gesehen, die eine zu vielen, die die Beziehung zwischen Autor und Beiträgen ist, da ein Autor viele Beiträge haben kann. In ähnlicher Weise haben
wir den Beitrag zur Kategorie eins zu vielen Beziehung. Wir können den Beitrag zu einem Autor oder einer Kategorie durchqueren, dank der DB Beziehungen Dekorationen auf dem Postmodell. Aber jetzt wollen wir tagging zu implementieren riss Posts Tags ermöglichen es uns, verwandte Beiträge basierend
auf verschiedenen Stärken zu suchen . Aber das bis jetzt schwierige Ding wird angehen, ist, dass ein Beitrag viele Tags haben kann, und ein Tag hat viele Beiträge. Es ist eine bidirektionale eine zu viele Beziehung, um zu tun, dass eine spezielle Art von Tabelle
erstellt werden muss , die eine Assoziationstabelle genannt wird, wo wir in Spalten speichern, die Beiträge und die Tags und die Beziehung wird jeder sein -Datensatz auf diesem Tisch. Öffnen Sie also die Blutmodelle und fügen Sie das Tag-Modell unten hinzu. Ziemlich einfaches Zeug. Bisher wird
unter dem letzten Import der folgende Code hinzugefügt. Dies ist die Assoziationstabelle und ich mag es, sie X Ref-Tabellen zu nennen, weil es das Tag ist, um die Tabelle zu
posten, wird jetzt die Beziehungsspalte unter Postmodell hinzufügen Bedenken Sie, dies ist nicht wirklich eine Spalte, die der Post-Tabelle hinzugefügt wird. Es ist mehr von unserer Referenz, dass die Fortsetzung Alchemy behalten wird, um zu wissen, wie man die Tags in
Bezug auf den Beitrag bekommt und umgekehrt. Beachten Sie also, dass wir Tags als die Beziehung im Plural definieren, weil wir erwarten, eine Liste hier nächste Benachrichtigung über den sekundären Parameter zu erhalten, wir übergeben das Tag ex Post X ref Tabelle und dass der Spitzen-Parameter Issa Unterabfrage, , die es uns ermöglicht, die Tags gleichzeitig als Teil der ursprünglichen Abfrage zu laden, so dass wir Zeit sparen und weil wir die Tags immer brauchen, wenn wir dagegen sind. Schließlich legen
wir auch die Rückwärtsbeziehung von Tags fest, die Post genannt werden, und diejenigen, die wir Lacey dynamisch laden können, weil wir die Beiträge nicht jedes Mal von einem
bestimmten Tag laden müssen , Speichern Sie die Datei. Und nun fügen wir die Möglichkeit hinzu, Tags in der Beitragsvorlage hinzuzufügen oder zu bearbeiten. Die Art und Weise, wie wir Tage angehen werden, besteht darin, sie außerhalb von WTI-Formularen
zu verwalten, da wir eine benutzerdefinierte Verarbeitung für die Steuer benötigen, die dem Benutzer
erlaubt, sie mit einer durch Komma getrennten Liste von Tags zu übergeben, so dass die Block Views
Datei geöffnet und auf der Postfunktion beginnt, indem Sie das Steuerfeld aus dem Formular einem lebensfähigen Formular zuweisen und es dann der Rendervorlage in Zeile 80 hinzufügen. Lassen Sie uns den Antworthandschuh ein wenig machen. Wechseln Sie zur Beitragsvorlage und fügen Sie das Steuerfeld Formulareingabe online hinzu. 31. Jetzt gehen wir zurück und beenden Theon. Submit Methode, die wir tun werden, um ihre Funktionen zu helfen, Lage
zu sein, zu speichern und niedrige Tags. Sie am Ende der Views-Datei folgendes
hinzu: Diese Funktion erwartet das Post-Objekt und den Tag-Feldinhalt. Zuerst löschen wir die bestehende Steuer, die die Post hat, indem wir die Python Clear Set-Funktion aufrufen. Wir haben dann eine Liste der Steuer durchgeschaut, indem wir das Feld durch das Komma erklären und prüfen, ob die Tags vorhanden sind. Beachten Sie, dass wir slog, wenn ich den Tack-Namen, da wir keine Leerzeichen oder seltsame Zeichen wollen, wenn der Angriff nicht existiert, erstellen
wir ein neues Tack-Objekt und Upended toe die Post Tags Liste. So gehen zurück zu einem validieren auf einreichen online 67. Sie können Folgendes hinzufügen. Wir brauchen nichts anderes zu tun, da wir die Tags bereits gespeichert haben. Zehe den Postdatensatz auf der Helferfunktion. Eine Sache weniger. Lassen Sie uns Angriffsmodell auf den Import online hinzufügen. Acht. Speichern Sie die Datei, bevor wir testen, unseren ersten Artikel mit Tags zu veröffentlichen. Wir müssen eine Datenbankmigration durchführen, um die neuen Tabellen hinzuzufügen. Also lasst uns zum Fläschchen. Baby wandern. Wenn Sie die Migrationsdatei überprüfen, werden
Sie sehen, dass wir beide Angriffe und die X-Referenz-Tabelle erstellen. Okay, das
tat auch eine Seifenqualität-Flasche. Baby Upgrade. Versuchen Sie nun, einen neuen Beitrag mit Tags zu erstellen, durch Kommas
getrennt sind. Sie sollten
jedoch keine Fehler bekommen . Wir können die Tags auf der Post noch nicht sehen. Dazu Öffnet die Artikelvorlage und an der folgenden online. 31. Speichern Sie die Datei und laden Sie die Artikelseite, die Sie zuvor erstellt haben, neu, und Sie sollten die Beitrags-Tags sehen, die wir jetzt benötigen, um sie hinzufügen zu können. Die Steuer auf dem Bearbeitungsformular für das wird eine niedrige Steuerhelfer-Funktion erstellen, so dass wir die Hirsche auf den vier
anzeigen können . Diese Funktion ruft im Wesentlichen das Post-Objekt als Parameter ab und erstellt dann eine Zeichenfolge mit der gesamten Steuer durch Kommas getrennt. Hinweis gibt die Strings ohne die letzten beiden Zeichen zurück, da sie ein Komma im Raum jetzt auf der Bearbeitungsroute in dieser Zeile nach der
Formularinitialisierung sein werden , heißt, wenn wir die Steuer auf die Anfrage sehen, Verwenden Sie das sonst bei den ersten
Ladeteile Angriffe auf die Post Verwenden Sie die
Steuerhelfer-Funktion laden , Fügen Sie das Steuerfeld zu dem Template-Kontext hinzu und lassen Sie uns den Safe Tags Helfer vor
dem Datenbank-Commit hinzufügen . Speichern Sie die Datei und versuchen Sie nun, die Artikel zu bearbeiten. Hirsche. Fügen wir uns mehr geändert Ihre Tests hinzu, so dass wir einige die volle Steuer auf die
Haupt-Post-Generator-Funktion haben und auch die Bearbeitung von Tags auf dem Editiertest testen. Öffnen Sie also die Block-Test-Datei und dass das folgende zum Post Dictionary Online 51 dann Online 78 die Tags auf dem Beitrag an ihm ersetzen wird. Das bedeutet, dass wir die Steuer von der Post ersetzt haben, um nur der Winkel zu sein Also lasst uns testen, dass Flasche ist nicht mehr Angriff in der Post für diese Anzeige online. 84. Die folgenden Speichern Sie die Datei und führen Sie die Tests.
88. Nach der Kategorie oder Tags filmen: Das letzte, was wir tun werden, ist es, Benutzern zu ermöglichen, Artikel zu einer Kategorie oder einem Angriff zu sehen . Wird Hyperlinks