Transkripte
1. Willkommen in Django 101: Hallo und herzlich willkommen bei Django 101. In diesem Kurs werden wir mit Django beginnen, drei Firmen zerkratzt, so dass Sie keine Erfahrung brauchen. Sie werden jedoch ein wenig Python- und Python
Klassen kennen wollen , um das Beste aus diesem Kurs zu machen und das Beste aus Django in diesem Kurs zu machen, können
Sie tatsächlich das Projekt hinter mir sehen. Wir werden ein Projekt zum Hochladen von Bildern erstellen. Es ist sehr ähnlich wie Instagram. Es sieht einfach ein bisschen anders aus und Spaß Tatsache, Instagram wurde mit Django gebaut. Und in diesem Kurs werde ich Ihnen genau beibringen, wie Sie Bilder
wie Instagram hochladen und sie in einer so genannten Detailansicht teilen können. Genau wie Instagram. Hi, ich bin Caleb Toluol. Und ich lese jetzt schon seit einigen Jahren Django. Ich habe Django für alle meine Projekte gehackt. Ich denke, es ist der beste Rahmen da draußen. Ich bin sehr leidenschaftlich für Django, und ich bin wirklich aufgeregt, dir beizubringen, wie man Django schreibt. Django basiert auf Python, das eine der beliebtesten Programmiersprachen der Welt ist. Es ist unglaublich mächtig. Und heute werden wir dieses Projekt aufbauen. Willkommen in meiner Klasse und ich freue mich darauf, Sie drinnen zu sehen.
2. Verwendung einer virtuellen Umgebung: Na gut, willkommen bei Django 101. Vor allem, was wir brauchen, um eine virtuelle Umgebung zu schaffen. Wir tun das immer, wenn wir mit Django oder wirklich jedem Projekt arbeiten. Um Django zu schreiben, müssen
Sie ein wenig Python kennen. Wenn Sie Python nicht kennen, haben
Sie wahrscheinlich keinen Texteditor. Also, vor mir, was Sie hier sehen, ist VS-Code. Das ist mein Texteditor. Auf der linken Seite wird mein Ordner sein, und unten wird mein Terminal sein. Also, wenn ich zu View und dann Terminal gehe, und der Boden wird mein Terminal sein. Und so werden wir eine virtuelle Umgebung und andere schaffen. Eine Fülle von verschiedenen Möglichkeiten, wie wir eine virtuelle Umgebung schaffen können. Wir können Vagrant verwenden, wir können Docker, virtualenv Wrapper, ein Python Vn über Ereignis verwenden, oder wir können Pip env verwenden. Und in diesem Modul werde ich Ihnen zeigen, wie wir es mit Pip Neid machen können. Also zuerst, Sie haben wahrscheinlich bereits Python installiert. Sie sollten in der Lage sein, Python Bindestrich zu machen Ich werde Python 3.8 verwenden. Wenn das für Sie funktioniert, können
Sie dann pip install PIP eingeben. Und jetzt habe ich Pip env bereits installiert. Das wird also wirklich, wirklich schnell sein. Dies könnte ein bisschen langsamer für Sie sein, aber letztendlich sollte das installiert werden. Und dann können wir pip install Django eingeben. Und das wird eine neue PIP-Umgebung für uns schaffen. Und wir geben das nur eine kurze Sekunde, um Django für uns zu installieren. Und das wird Django 3.1 installieren. Wir werden uns die genaue Version in nur einer Sekunde ansehen, wenn dies erledigt ist. Okay, jetzt, da das erledigt ist, können
wir Pip N Shell machen, um in unsere Pippin-Umgebung zu gelangen und Django zu zeigen. Und ich benutze Django-Version 3.1.1 für jetzt, um aus unserer Shell zu kommen,
alles, was wir tun müssen, ist Control D oder Exit zu tippen und das wird für uns ausgehen. Und um wieder rein zu kommen, tippen wir einfach Pip nth Shell. Und wenn wir uns unsere Dateien hier ansehen, ls dash LA, oder wenn Sie auf Windows DIR sind, wird
es uns eine Pip-Datei und eine Pip-Datei dot loc geben. Jetzt zu diesem Zeitpunkt, wenn Sie Git installiert haben, können
Sie git init,
git, add, git commit tun . Nummer eins, Einrichtung eines Pip env. Und wenn wir dann diesen echten ausgefallenen Befehl machen
, der ein schickes Git-Protokoll ist, können
Sie sehen, dass unser erstes Commit hier ein PIP einrichtet und wenn Sie nicht gut verwenden, ist das okay. Sie können diesen Teil dieses Videos einfach ignorieren. Ich werde mit Get vorwärts gehen. Aber wieder, wenn Sie nicht gut verwenden, wenn Sie ein anderes Versionskontrollsystem verwenden, Das ist total cool,
Sie können diesen Teil einfach ignorieren. Im nächsten Video. Lass uns voran gehen und tatsächlich Django-Setup bekommen.
3. Django einrichten: Okay, gehen wir weiter und holen Django-Setup. Das erste, was wir tun müssen, ist, dass wir in unsere virtuellen Umgebungen eindringen müssen. Jetzt verwende ich Pip env. Sie können Venn, Docker, Vagrant, welche Abstraktionsschicht Sie wollen verwenden. Es ist einfach gut, hier eine Art virtuelle Umgebung zu haben. Wenn wir Pip Django zeigen, sollten
wir sehen können, dass wir Django da drin haben. Wenn Sie Django nicht drin haben, können
Sie immer pip installieren. Django ist gleich, gleich 3.1.4 oder was auch immer die neueste Version von Django ist. Und das wird Django für Sie installieren. Als nächstes können wir Django dash admin eingeben , Projekt
starten, und ich werde es meine Website nennen. Und dann tippe ich dot. Und das wird es einfach in diesen genauen Ordner stecken. Sehen wir uns zuerst an, wo wir sind. Ich bin auf meinem Desktop in einem Ordner namens Django 101. Das können wir hier links sehen, Django 101. Und so möchte ich einfach Django Admin eingeben, Projekt meine Website
starten. Und wenn Sie es nicht geben, wird
der Punkt hier einen Unterordner erstellen, der meine Website genannt wird, sein kann oder nicht, was Sie wollen. Das will ich nicht. Ich möchte nur, dass Django ein brandneues Projekt in diesem Verzeichnis erstellt, in dem ich mich befinde. Nun, wenn ich ls dash l a, oder wenn Sie unter Windows sind, Windows können Sie D-I-R dir eingeben. Und wir werden sehen, dass wir jetzt Dot Py und meine Website verwaltet haben. Und wenn wir das links öffnen, haben
wir alle möglichen Sachen hier drin. Wir haben a.py Datei Whisking URLs Einstellungen als e und in init dot pi verwaltet. Nun, was wir hier tun können, ist, dass wir,
wenn ich das einfach auslösche,D JAR, Django-Server
eingeben können wenn ich das einfach auslösche, . So geben wir Python verwalten dot py Run Server auf 0.0.0 Port 8 Tausend. Und das sollte sagen, dass wir noch eine angewandte Migrationen haben. Nun, was eine Migration ist, ist einfach, dass sie eine Verbindung zu einer Datenbank irgendeiner Art herstellt. Also weiß ich, dass es hier eine Verbindung zu einer SQLite drei Datenbank herstellt. Es ist nur eine einfache Datei und es versucht, meine Datenbank bereitzustellen ,
so dass wir Benutzer und Berechtigungen und alle möglichen Dinge einrichten können. Und wann immer Sie dieses rote kleine sehen und es ist nicht wirklich ein Fehler, es ist eher eine Nachricht, die besagt, hey, Sie haben 18 auf angewandte Migrationen. Sie können einfach Python managed up pi migrate eingeben. Und was dies tun wird, ist Python mitzuteilen, welche Version von Python Sie verwenden, um
verwaltet bei pi auszuführen , und sein Parameter oder Argument in der Befehlszeile ist nur die Arbeitsmigration. Und so laufen wir das und wir werden sehen, dass alle diese jetzt laufen. Und dann, um einen Server wieder laufen, Ich habe nur die Abkürzung zu Komma d j, r weil ich, Ich führe diesen Befehl Hunderte von Malen am Tag. So hat Python High Run-Server 0.0.0 Punkt 0 Doppelpunkt 8 Tausend verwaltet. Und das sollten wir sehen. Jetzt zu diesem Zeitpunkt. Wenn Sie dies sehen, können wir jetzt unseren Browser öffnen und wir können über zu localhost Port 8 Tausend. Also geben wir einfach localhost Doppelpunkt achttausend ein. Achttausend Treffer, was wir in unserer Kommandozeile eingegeben haben. Und das sollten wir sehen. Sobald Sie dies sehen, haben
Sie jetzt ein Django-Projekt erfolgreich ausgeführt. Jetzt ist das cool, aber hier ist nichts drin. Also lasst uns voran gehen und den Eintritt überprüfen. Wir können gibt es einen Admin-Link hier unten, Dokumentation, Tutorial, Django-Community. Hier drin ist kein Admin. So können wir direkt gehen, um Slash Admin und wir brauchen einen Benutzernamen und ein Passwort. Also lasst uns weitermachen und einen Benutzernamen und ein Passwort einrichten, zurück zu unserem Terminal hier
getunnelt sind. Und wir können Python verwalteten Punkt py eingeben, Superuser erstellen. Und alles, was ich dort gemacht habe,
als ich den Server betätigte, war, dass ich einfach Control C drückte, um abzubrechen. Also werde ich einen neuen Superuser erstellen. Ich nenne es Caleb. Keine Antwort. Fügen Sie Caleb dot IO hinzu. Ich gebe ihm ein Passwort und habe mein Passwort neu eingegeben. Und cool. Superuser erfolgreich erstellt, das ist unser Admin-Konto. Und dann laufen wir einfach Python verwaltete up.py Run Server ist 0000 Doppelpunkt 8 Tausend wieder. Gehen Sie zurück zu unserem Browser, aktualisieren Sie. Stellen Sie einfach sicher, dass diese Seite tatsächlich so geladen wird, wie wir erwarten, dass sie geladen wird. Geben Sie unseren Benutzernamen und unser Passwort ein. Und voila, wir sind in unserem Django-Admin. Hier werden wir alle unsere Inhalte bearbeiten. Wir können so ziemlich alles hier durch verwalten, solange wir Django sagen, dass es von einem Administrator überschaubar sein soll. Ihre Aufgabe für diese Lektion besteht also darin, Django
in Ihrer virtuellen Umgebung zu installieren und einen Superuser zu erstellen. Und vergessen Sie nicht, Ihre Migrationen durchzuführen. Und sobald Sie diese Seite und auch diese Seite sehen, können Sie mit der nächsten Lektion fortfahren.
4. Erstelle eine neue App: Okay, lass uns weitermachen und unsere erste App erstellen. Und so macht Django diese lustige Sache, wo ich eigentlich nicht weiß, warum sie sie Apps nennen. Es ist irgendwie verwirrend, weil wir keine Handy-App oder mobile App erstellen, aber es ist wie eine kleine Mini-Anwendung innerhalb unserer Django-Anwendung, und so nennen wir sie Apps. Und was wir hier tun können, ist eine brandneue App
mit einem Befehl zu erstellen , den Django uns gibt. Also verwalten wir Python dot Pi, und ich bin nur in meiner virtuellen Umgebung hier. Python verwaltete Dot Py, start-App, und ich werde diesen Feed aufrufen. Und wenn Sie nach links schauen, geben Sie ihm
einfach eine kurze Sekunde. Es erstellt einen Ordner namens Feed. Es hat Migrationen und stricken Admin-Apps Modelle hoch test.py und Ansichten Dot Pi. Nun, was wir tun wollen, ist, das zu aktivieren. Und um dies zu aktivieren, müssen wir auf meine Seite gehen, in unsere settings.js
gehen und uns hier nur ein bisschen kleiner machen. Und was wir suchen, sind installierte Apps. Und hier sehen wir, dass wir Apps installiert haben. Django, im Gegensatz zu Admin-, Auth-Inhaltstypen, Sitzungen ,
Nachrichten und statischen Dateien, das
sind alles Dinge, die gerade mit Django kommen. Wir müssen uns keine Sorgen darüber machen, was sie gerade sind, da dies nur ein Django 101 Kurs ist. Das ist also eine Liste, eine Python Liste, und ich werde einfach den Namen dieses Ordners hier eingeben. Es nennt sich Futter. Und lassen Sie uns weiter gehen und unseren Server noch einmal betreiben. Und wir sehen, dass nichts passiert. Wenn wir sehen, dass nichts passiert, ist das eine gute Nachricht. Dies bedeutet wahrscheinlich, dass Sie Ihren Feed richtig installiert haben. Das ist alles, was es für dieses Video gibt, hoffentlich folgen Sie entlang, vergessen Sie nicht, und Sie müssen Python verwaltete Hochstart-App ausführen, nicht Projekt starten, sondern App starten. Und dann der Name Ihrer App und das wird einen neuen Ordner für Sie erstellen. Und dann gehen Sie zu Ihren Einstellungen, installierten Apps und installieren Sie diese App. Legen Sie es einfach an den unteren Rand Ihrer Liste der installierten Apps.
5. Dein erstes Django Modell: Na gut, lassen Sie uns ein neues Modell erstellen. Und das, was ein Modell tun soll, ist
nicht nur , dass es automatisch eine Tabelle in unserer Datenbank für uns generiert. Django ist also sehr nett in dem Sinne, dass wir unsere Datenbank nicht so ziemlich verwalten müssen. Dies geschieht automatisch durch die Form von Migrationen und Modellen. Und so ist ein Modell einfach eine Möglichkeit, Code in Form einer Python Klasse zu schreiben. Und es wird automatisch einer Datenbank zugeordnet, die wir nicht einmal sehen können. Und dann können wir einige dieser Daten ändern. In dieser Lektion möchte
ich also ein neues Modell in unserem Feed erstellen, das nur Beiträge genannt wird. Dann werden wir es in unserem Django-Admin aktivieren, damit wir es sehen können. Also werde ich aufhören, Django zu leiten. Nicht, dass es nicht so war, dass es schädlich war, während es lief. Es gibt kein Problem, es laufen zu lassen. In der Tat zeige ich Ihnen, dass es weiterlaufen kann, während wir das tun. Also werden wir Feed-Modelle Dot Py öffnen, und es heißt, erstellen Sie Ihre Modelle hier. Lassen Sie uns fortfahren und löschen Sie diesen Kommentar. Und lassen Sie uns Klasse Post Modelle, Punkt-Modell. Und was das automatisch tut, ist, wenn wir Django sagen würden, Hey, suchen Sie nach neuen Änderungen namens Migrations, es wird dann eine Migrationsdatei generieren und dann unsere Datenbank bereitstellen,
damit es eine Tabelle namens Feed-Unterstrich Post hat. Und das erlaubt uns nur, eine einfache Möglichkeit zu schaffen, Daten zu speichern. Jetzt in diesem Beitrag werden wir sehr einfach beginnen. Wir fangen mit einem einfachen Text an. Und so hier sagen wir Text als Eigenschaft ist gleich zwei Modelle, Punkt Zeichen Feld, und das ist nur ein Zeichenfeld. Es dauert eine maximale Länge. Und ich glaube, die maxlength ist normalerweise irgendwo um 256 Zeichen. Aber lassen Sie uns dies wie einen originellen Tweet machen, wie ein 140 Zeichen. Dann sehen Sie oft ein anderes Schlüsselwort, das hier leer genannt wird, das entweder wahr oder falsch sein kann. Standardmäßig ist leer false. Und was das bedeutet, ist, wenn wir ein Formular ausfüllen, muss dieses Feld ausgefüllt werden? Absolut. Ja, es muss ausgefüllt werden. Wir werden sagen, das ist obligatorisch. Und dann haben wir hier eine andere Option namens null. Und null kann wahr sein oder null kann falsch sein. Und wenn null wahr ist, bedeutet
das, dass unsere Datenbank
entweder keinen Wert und eine leere Zeichenfolge oder eine Art String speichern kann . Wir wollen nicht, dass dies null ist, ist gleich wahr, um wahr zu sein. Weil wir immer wollen, dass dies in unserer Datenbank ausgefüllt wird. Es wird also immer Text geben. Es darf nicht leer sein, es darf kein leerer Text sein. Es muss immer da sein. Sagen wir also null ist gleich false. Jetzt gehen wir weiter und speichern das. Und Sie sehen, dass Django automatisch für mich neu gestartet wurde. Was ich jetzt tun kann, ist eine Migration. Also verwalte ich Python dot py, mache Migrationen. Und das wird eine brandneue Datei erstellen. Und Sie können hier sehen, es hat 0001 anfänglichen Punkt py erstellt. Und all dies tut, ist eine Python-Datei zu erstellen, die jetzt ausführbar ist. Und wenn wir Python managed dot py migrate ausführen, hat
es keine Abhängigkeiten. Es ist die erste und es hat einige Operationen hier drin. Es wird ein Modell erstellen oder eine Tabelle in unserer Datenbank namens post erstellen. Und dies sind die Felder, die es eine ID automatisch hat, also eine eindeutige Auto-Feld-ID. Jedes Modell kommt dabei. Und der, den wir ihm gegeben haben, ist Text. Jetzt haben wir eine Tabelle, die wir unserer Datenbank mit zwei Spalten hinzufügen können. Und lassen Sie uns voran gehen und Python managed dot py migrate ausführen. Und das wird diese Migration anwenden. Und jetzt sehen wir nichts, was zu diesem Zeitpunkt passiert. Alles, was wir sehen ist, dass die Anwendung von Feed 001 anfänglich war OK. Das ist alles, was wir wissen müssen. Das ist ungefähr so viel Datenbankmanagement, wie wir in Django 101 einsteigen werden. Also lassen Sie uns ihn erneut ausführen Django-Lauf Server. Und wenn wir hier in unserem Admin zu unserem Browser zurückkehren, werden
wir nichts sehen. Und das liegt daran, dass diese Tabelle standardmäßig existiert. Aber es ist einfach noch nicht überschaubar. Also müssen wir das überschaubar machen. Also haben wir ein Modell erstellt, das einer Tabelle zugeordnet ist. Wir haben sie Migrationen durchgeführt. Wir müssen jetzt in Feed Admin Dot Py gehen, und wir müssen unser Modell hier registrieren. Also lasst uns voran gehen und diesen Kommentar loswerden. Und das wird wie diese Klasse aussehen. Post Admin oder was auch immer Sie es nennen möchten, admin, dot Model. Admin. Und Admin kommt gerade von hier. Wir können einfach passieren. Wir wollen nichts tun. Wir können zusätzliche Parameter, zusätzliche Funktionen geben. Wir können alle möglichen Funktionen aktivieren. Wir werden nichts davon im Moment tun. Wir wollen nur, dass es einfach editierbar ist. Dann sagen wir admin, dot site, DOT registrieren, post und post admin. Und was dies tun wird, ist Post mit Post Admin verbinden. Jetzt Post wird noch nicht importiert. Wir müssen das importieren, damit wir sagen können, und da dies im selben Ordner ist, sind
Admin und Modelle im selben Ordner. Wir können einfach Punktmodelle sagen, Post importieren. Und wenn wir uns hier registrieren, sagt
es Connect post mit diesem post Admin, die alles von admin dot Modell admin erben wird. Lass uns voran gehen und das speichern. Django wird neu gestartet. Und lasst uns unseren Django-Admin hier auffrischen. Und wieder, noch einmal, ich bin nur, dass localhost Port 8 Tausend Schrägstrich Admin. Und jetzt habe ich in meinem Feed-App-Beiträge und wir können voran gehen und einen neuen Beitrag erstellen. Das ist mein erster Beitrag. Speichern. Wenn Sie sich das ansehen, ist
dies Post-Objekt in Django. Jedes Mal, wenn wir auf ein Stück Daten oder eine Zeile in unserer Datenbank zugreifen, wird
es als Objekt bezeichnet. Und so wollen wir diesen Objektnamen ändern, weil er immer nur den Namen des Modellobjekts eins sagt, Objekt zu Objekt drei. Wir wissen nicht, wie wir das identifizieren sollen. Lass uns weitermachen und es identifizierbar machen. Also in unseren Modellen dot pi hier, können
wir sagen def Unterstrich, Unterstrich String. Dies ist eine Klasse würde immer selbst als ersten Parameter nehmen. Und dann werden wir sagen, zurück self.age. Und was auch immer dieser Beitrag sein wird, das ist es, was dieses Objekt jetzt genannt wird. Also wird Django neu gestartet. Lassen Sie uns diese Seite aktualisieren und wir werden sehen, dass dies mit meinem eigentlichen Text hier angezeigt wird. Also haben wir diesem Objekt einen Namen gegeben, und das ist nur gut für den Administrator, wenn Sie Sachen debuggen oder Inhalte über Ihren Administrator hinzufügen. Wir können darauf klicken. Wir können es ändern, aktualisieren, speichern und weiter bearbeiten. Wir könnten es löschen, wenn wir wollten. Lass uns weitermachen. Ja, ich bin sicher, dass es diesen Beitrag löschen. Lass uns noch einen hinzufügen. Dies ist ein neuer Beitrag. Speichern. Nun, hier ist die Sache. Viele Leute denken, dass, nur weil wir
dieses Objekt erstellt haben , dass es auf unserer Seite erscheinen sollte, und das ist einfach nicht wahr. Alles, was wir getan haben, war ein Stück Daten in
unserer Datenbank zu erstellen oder wir haben eine Tabelle in unserer Datenbank bereitgestellt. Wir haben eine Zeile in diese Tabelle eingefügt. Stellen Sie sich das wie eine Tabellenkalkulation vor. Wir haben diese riesige Tabellenkalkulation, und das ist unser neuer Tisch. Und dann haben wir zwei Säulen drin. In unserer kleinen metaphorischen Tabelle hier haben wir zwei Spalten. Wir haben eine namens ID und eine namens Text. Dieses Feld ist ein ganzzahliges Feld. Und das hier ist ein Textfeld oder ein Zeichenfeld, ein Zeichenfeld. Es kann also nicht 10 Tausend Zeichen haben, aber es kann 140 Zeichen haben. Und wir nennen das ein Char-Feld oder ein Zeichenfeld. Aber wo die Leute ein wenig verwirrt werden, taucht es hier nicht auf. Und das ist, weil es einfach nicht weiß, wie wir wollen, dass es auftaucht. Wie möchten wir unsere Website gestalten? Wo wollen wir das Zeug hinlegen? Kein Rahmen auf der Welt kann Ihnen sagen, dass es nicht automatisch wissen wird. Sie müssen ihm explizit sagen, was zu tun ist. Also in unserer nächsten Lektion, gehen
wir weiter und fügen unsere erste Ansicht hinzu und aktualisieren Sie diese ein wenig.
6. Deine erste Ansicht: In Ordnung, wir müssen unsere erste Ansicht hinzufügen, und das ist ein bisschen involviert. Und sobald wir es eingerichtet haben, ist es wirklich schön zu benutzen. Aber zunächst kann es ein bisschen knifflig sein. Also kommt unsere Seite mit dieser Datei, nicht diese, das ist die falsche. Urls dot pi m. Wir können das durchlesen. Ich würde auf jeden Fall empfehlen, das durchzulesen. Ich werde das nicht für dich durchlesen nur weil das offensichtlich eine Verschwendung deiner Zeit ist. Und dann haben wir diese Dinge, die URL-Muster genannt werden. Und URL-Muster werden eine Art Pfad zu einer Art von Logik übereinstimmen. Und für uns, das führt in localhost Port 8 Tausend Schrägstrich Admin. Jetzt können wir diesen Admin ändern, wenn wir wollten, indem wir ihn in meinen Admin oder buchstäblich alles ändern, was wir wollen. Ich werde es als Admin behalten, nur um die Dinge einfach zu halten. Aber jetzt sagen wir, wir wollen eine neue Homepage hinzufügen. Wir müssen die überschreiben, die uns Jangle gegeben hat und Django hat uns diese hier gegeben. Wir wollen das nicht mehr. Es ist schön. Verstehen Sie mich nicht falsch, aber wir wollten etwas anderes sehen. Wir wollen dies zu unserer eigenen Anwendung machen. Nun, unsere Anwendung wird wirklich
hässlich aussehen und dann werden wir es wirklich schön aussehen lassen. Also werden wir zuerst am Backend arbeiten und dann werden
wir das Front-End später hinzufügen. Also müssen wir hier einige URLs hinzufügen. Jetzt spielt es keine Rolle, wo wir anfangen. Wir müssen eine Menge Dinge gleichzeitig machen. Also, was ich tun werde, ist in diesem Ordner hier, ich werde eine neue Datei namens URLs dot py erstellen. Und das wird nur neben meinen Models oben und meinem Admin Dot Py leben. Jetzt hier drin werden wir ein paar verschiedene Dinge tun. Also zuerst, lassen Sie uns voran gehen und sagen von Django, Punkt URLs, importieren Sie einen Pfad. Und wir sahen dies in der vorherigen Datei, Importpfad von
Django-URL, und wir möchten so etwas verwenden. Jetzt werden wir unsere eigenen URL-Muster erstellen, und das ist einfach eine Liste von Pfaden. Lassen Sie uns voran und geben Sie diesem auch einen App-Namen, und dies wird
für den Namensabstand verwendet werden, wird sprechen, welcher Namespace und ein wenig später. Aber jetzt, lasst uns einfach mit ihm gehen. Wir geben diesem einen App-Namen namens Feed. Dann werden wir es geben URL-Muster ist gleich einer Liste. Und das wird einen Weg gehen. Und wir wollen nur die Homepage. Also geben wir ihm einen leeren Weg. Und das wird in nur einer Sekunde Sinn ergeben. Dann muss es eine Ansicht rendern. Und das wird unsere Vorlage sein. Und wir geben ihm einen Namen. Nennen wir diesen Index sind wie unsere Homepage oder so etwas. Wenn es nun darum geht, eine Ansicht zu rendern, benötigen
wir eine Ansicht, die wir in klassenbasierten Ansichten
in diesem Kurs verwenden werden, weil das der richtige Weg ist, Django zu schreiben, zumindest meiner Meinung nach ist es. Wir können funktionsbasierte Ansichten schreiben oder wir können klassenbasierte Ansichten schreiben. Ich werde Ihnen die professionelle Art und Weise in
diesem Kurs beibringen , dass wir klassenbasierte Ansichten verwenden werden. Funktionsbasierte Ansichten sind leicht zu erlernen, aber es ist einfacher, klassenbasierte und dann
Funktionen anstelle von Funktionen und dann klassenbasiert zu lernen . Das muss von irgendwo kommen, und wir müssen eine Art Sichtweise schaffen. Also lasst uns einfach, lasst uns noch nicht retten, aber lasst uns das offen halten und lasst uns zu den Ansichten gehen. Und Sie können sehen, dass es bereits Django-Shortcuts rendern importiert. Wir können das ehrlich gesagt einfach ablegen, weil wir keine funktionsbasierte Ansicht verwenden werden. Wir werden eine klassenbasierte Ansicht verwenden. Also gehen wir zu oder nicht zu BUT Import von Django Dot Views dot generic, importieren Sie eine einfache Template-Ansicht. Und dann werden wir eine Homepage-Ansicht erstellen. Also werden wir sagen Klasse Homepage-Ansicht. Und dies wird die Vorlagenansicht erben. Und wir geben ihm einen Vorlagennamen. Name des Vorlagenunterstrichs ist gleich home.html. Und das sagt, dass Django nach einer Datei namens home.html sucht. Und das ist alles, was wir tun werden. Also werden wir die Datei jetzt speichern. Lassen Sie uns den Kopf zurück zu URLs dot pi. Und wenn wir von tun, weil dies nicht der gleiche Ordner hier ist, sind
alle diese im selben Ordner. Wir können Punktansichten importieren eingeben. Und wie hieß diese Ansicht? Ansicht der Startseite. Und dann können wir sagen, und hier Homepage-Ansicht Punkt als Ansicht. Und das wird unsere Logik für uns machen. Es wird unsere Ansicht tatsächlich funktionieren lassen. Nun, das ist alles gut und gut. Aber Sie haben wahrscheinlich bemerkt, dass Django in letzter Zeit nicht wirklich neu gestartet wurde. Also lassen Sie uns voran gehen und öffnen Sie unsere mysite URLs dot py und fügen Sie neue URL-Muster hier hinzu. Jetzt hier drin können wir unsere Homepage vorfixieren, wenn wir es wollten. Also können wir alles zu meinem website.com Schrägstrich nach Hause gehen lassen als eine Seite, genau wie wir es mit dem Admin getan haben, aber wir wollen das nicht. Wir wollen, dass dies die Homepage ist,
also werden wir diesen Pfad leer lassen. Dann werden wir sagen, gehören und wir werden uns um diese wichtigen nur eine Sekunde kümmern. Fügt URLs ein. Und lassen Sie uns diesem einen Namespace von Feed geben. Feeds URLs und Include sind jetzt noch
nicht vorhanden, zumindest nicht in dieser Datei. Also müssen wir sie existieren lassen. Also lassen Sie uns von Django.com Punkt URLs tun, Import enthalten. Und lassen Sie uns auch unsere Ansichten und unsere Ansichten importieren, aber unsere URL-Muster aus unserem Feed. Lassen Sie uns von Feed-Import-URLs als Feed-URLs tun. Und so ändern wir nur den Namen. Wir importieren URLs als ganzes Modul. Also importieren wir diese ganze Datei hier. Dann benennen wir es in Feeds URLs oder Feed-URLs um. Und dann werden wir einfach sagen, dass alle, lassen Sie uns gehen und speichern Sie das und beobachtete Django Neustart. Und wir werden sehen, dass ich irgendwo in Feed-URLs einen Tippfehler habe. Auf Leitung eins. Es ist keine Django-Punkt-URL, es sind Django-Punkt-URLs. Und gehen wir zurück dorthin, wo hier ein Fehler steht. Und das ist schön. Das ist nur, wir debuggen an diesem Punkt. Und das besagt, dass Pfadfeed-URLs nicht definiert sind. Und das ist, weil wir gesagt, Feeds, URLs. Der Feed ist einzigartig. Okay, cool, Kuckuck, Kuckuck, Kuckuck, Cool. Das funktioniert alles. Lasst uns rüber gehen. Zurück zu unserem Browser und lassen Sie uns aktualisieren. Und wir bekommen diesen Fehler. Vorlage ist nicht vorhanden. Wo legen wir nun diese Vorlage? Django wird an einigen Stellen nach dieser Vorlage suchen. Standardmäßig sucht es hier in meinem Pip env. Und dann wird es in Django Admin Vorlagen nach Hause suchen. Django kontra von Vorlagen nach Hause. Wir haben keinen Zugang dazu. Das sind keine Ordner, die sich in unserem Projekt befinden. Also müssen wir Django sagen, Vorlagen woanders zu verwenden. Und wir werden erstellen, in der nächsten Lektion werden wir einen Ordner namens Templates erstellen, und wir werden Django anweisen, ihn als Ort zu registrieren, um nach unseren Vorlagen zu suchen. Also für jetzt sollten Sie alle diese URLs haben. Dies wird ein wenig knifflig, weil wir URL-Muster in meiner Website verwenden. Wir verwenden auch URL-Muster in der URLS-Datei. Unter unserer Fuß-App. Sie werden beide URLs dot pi genannt. Dies ist eine Namenskonvention. Dies ist, wo es ein wenig schwierig wird, ist Frameworks, wie sie Konventionen benennen. Wir haben eine App namens Feed. Es passt zu unserer App hier oben, die auch in unserem Namespace verwendet wird. Es ist also alles gleich, wir werden ein wenig später
über Namespaces in unseren Vorlagen sprechen . Dann haben wir in unseren Ansichten einfach eine Homepage-Ansicht erstellt und dann diese nette Django-Ansicht überschrieben, um uns einen Fehler zu geben. Und sobald Sie diesen Fehler sehen, sind
Sie bereit, mit der nächsten Lektion fortzufahren.
7. Einrichten von Vorlagen: Alles klar, in der letzten Lektion haben wir diesen Fehler bekommen. Diese Vorlage existiert nicht bei Schrägstrich n sucht nach home.html. Jetzt wissen wir, dass es an Orten sucht, zu denen wir keinen Zugang haben. Und so können wir in diesen Ordner Benutzer Caleb Delian dot Logos teilen Virgil besitzt Django 101,
yada, yada, yada, yada, yada, yada, slash Django, contra off Vorlagen. Ohm, das ist nur ein Albtraum zu bewältigen, und es gibt einen besseren Weg, um dein Leben zu leben. Und so werden wir in dieser Lektion das tun. Wir werden Django sagen,
Hey, es gibt einen besseren Ort, um nach Vorlagen zu suchen. Also, was wir hier tun müssen, ist, dass wir in VS-Code gehen müssen, der das schließt. Das ist in dieser Lektion nicht relevant. Lassen Sie uns die Füße schließen und lassen Sie uns in unsere settings.js und innere Einstellungen dot pi gehen, wir haben diese Sache namens Vorlagen. Wenn wir nach unten scrollen, werden
wir ihm Vorlagen sehen. Und es sucht nach Verzeichnissen. Und was wir hier tun wollen, ist ein Template-Verzeichnis zu erstellen. Also werde ich diesem eine Variable namens Template dire geben. Und das gibt es noch nicht. Wir müssen es existieren lassen. Template Dyer ist gleich. Und zu diesem Zeitpunkt, wenn Sie sich nicht daran erinnern, wenn Sie ein Projekt einrichten, sagen wir, in einem Jahr, Sie können immer nur Google dies, dieser Teil ist über das Internet. Es ist einfach, diese spezielle Möglichkeit zu finden, bestimmte Vorlagenverzeichnisse zu aktivieren. Also machen wir OS dot path, dot join, unsere base dire. Und wir geben ihm einen Ordner namens Templates. Und das sollte eine grundlose Dirre sein. Und mal sehen, ob wir basierend Dirre finden können. Wo bist du? Da ist es ganz oben hier. Und so ist das Suchen nach dem Pfad
dieser bestimmten Datei löst es Eltern, Eltern. Es bewegt sich also nach oben. Und das wird uns unser projektbasiertes geben, das genau hier drin ist. Und dann wird es eine neue Vorlage oder ein neues Verzeichnis namens Templates erstellen. Jetzt haben wir OS verwendet und so müssen wir OS importieren. Also sagen wir, importieren Sie OS am Anfang dieser Datei. Lass uns voran gehen und sehen, worüber Django sich jetzt beschwert. Also bekommen wir den gleichen Fehler, aber Sie bemerken, dass es sagt, dass es ihn nicht finden kann, weil es einen Loader verwendet. Es kann es nicht in Vorlagen, home.html finden. Lassen Sie uns voran und fügen Sie das hinzu. Alles, was wir jetzt tun müssen, ist einen neuen Ordner namens Templates zu erstellen. Und hier können wir eine neue Datei namens home.html erstellen. Lasst uns das leer lassen. Nein, ich habe gelogen. Sagen wir, HelloWorld und machen wir das zu einem H1. Es wird also HTML aktiviert sein. Und lasst uns unsere Seite aktualisieren. Und da steht, hallo Welt. Wenn das nicht für Sie funktioniert und Sie alles richtig gemacht haben, treten Sie Django, brechen Sie einfach Django ab und starten Sie manchmal und nicht oft neu. Aber manchmal müssen Sie Django manuell neu starten, wenn Sie mit Django entwickeln. Und jetzt haben wir etwas hier drin, wir haben etwas, mit dem wir arbeiten können. Aber lassen Sie uns voran und klicken Sie mit der rechten Maustaste und Viewer-Seite Quelle. Das Einzige, was hier drin steht, ist HelloWorld. Und es hat ein H1- und schließendes H1-Tag und das ist in Ordnung. Aber was, wenn wir einen Titel auf unserer Seite haben wollten, gibt es derzeit keinen Titel. Oder was wäre, wenn wir sagen wollten, dass die Sprache Englisch
war oder dass diese Seite standardmäßig reagiert werden sollte. Nun, was wir derzeit tun müssen, ist HTML Doppelpunkt fünf Hit Tab und es baut diese Seite für uns. Hallo Welt, speichern, aktualisieren Sie Ihre Quelle und wir bekommen all das Zeug. Aber was passiert, wenn wir eine andere Ansicht haben? Dann müssen wir das alles kopieren. Wir müssen das ganze Zeug kopieren. Überschreiben Sie den Titel, überschreiben Sie den Körper, behalten Sie alles andere gleich. Und was wäre, wenn wir in Zukunft allen unseren Seiten einen neuen Metatag hinzufügen wollten. Nun, das wollen wir vielleicht immer und immer wieder schreiben. Nun, wenn Ihre Website ist riesig und lassen Sie uns sagen, Sie haben vielleicht eine 100 verschiedene Ansichten. Sie müssen eine 100 verschiedene
Male in 100 verschiedenen Vorlagen kopieren und einfügen . Das ist schmerzhaft, das ist keine Möglichkeit, dein Leben zu leben. Es gibt einen besseren Weg in eine bessere Art und Weise ist, dieses Ding zu verwenden, das eine Basisvorlage genannt wird. Also lasst uns weitermachen und das einfach rückgängig machen. Und eigentlich werde ich das komplett löschen und ich werde hier im Template-Verzeichnis eine neue Datei
erstellen. Und ich werde es Basispunkt-HTML nennen. Und hier drin werde ich es HTML Doppelpunkt fünf Bilder teilen hier drin geben. Und wenn wir zurück zu unserer Seite gehen, sehen
wir nichts. Das ist richtig. Wir wollen nicht, dass es irgendetwas tut. Es versucht, diese home.html,
nicht Basispunkt-HTML zu rendern . Denn wenn wir uns Feed ansehen, sagten
Ansichten, schauen Sie sich die Vorlage namens home.html an. Derzeit weiß es nicht über Basispunkt-HTML. Es ist in unserem Projekt, aber Django ist sich dessen noch nicht bewusst. Und was wir jetzt tun können, ist zu schreiben erweitert, Basispunkt-HTML. Und das muss eine Schnur sein. Und so verwenden wir eine geschweifte Klammer Prozentzeichen, die das Schlüsselwort erweitert. Und dann in hier eine Zeichenfolge namens Basispunkt-HTML, die mit dem Namen unserer Basispunkt-HTML-Datei hier übereinstimmt. Und dann unterzeichnen Prozent geschweifte Klammer. Und das schließt diese Logik. Gehen wir weiter und erfrischen wir uns. Und da steht Zeug hier drin. Und wenn ich zurück zur Quelle gehe, ist alles hier drin. Jetzt. Das ist cool und alles. Aber wenn wir eigentlich etwas zu Hause ändern wollten, sagen
wir, das ist meine neue Homepage. Das wird einfach nicht auftauchen. Es tut einfach nicht, es weiß nicht, was damit zu tun ist. Und so werden
wir in der nächsten Lektion über Blöcke sprechen und wie wir im Grunde ein wenig
Code in unsere Basispunkt-HTML-Datei schreiben und einfach Dinge in sie injizieren können . Und so denken Sie, Sie können sich vorstellen, als hätten Sie ein Stück Papier, und Sie haben ein Loch darin geschnitten, und es ist nur ein Kreis. Und dann haben Sie ein anderes, sicherlich ein anderes Stück Papier, aber es ist in der Form eines Kreises geschnitten. Und so steckst du das ein Stück Papier in ein anderes Stück Papier. Als wir Kinder waren, spielten
wir mit Blöcken und versuchen, den Platz und den Platz zu passen, und wir versuchen, das Dreieck und das Dreieck zu passen. Das ist genau das, was das tut. Und das werden wir in der nächsten Lektion erfahren.
8. Schablone verwenden: In der letzten Lektion haben wir darüber gesprochen, wie Formen in Formen passen, und, wissen
Sie, zu versuchen, das Zeug hier zu ersetzen, haben wir eine Basispunkt-HTML-Datei. Und zu Hause erstreckt sich dann von Basispunkt-HTML. Aber es tut eigentlich nichts anderes, als das
ganze Zeug einzuziehen, und wir wollen in der Lage sein, etwas davon zu ersetzen. Lassen Sie uns also über diese Vorstellung von Blöcken sprechen. Und so sieht ein Block so aus. Es ist ein geschweifter Prozentzeichenblock und dann ein Name. Und wir geben dem einen Namen Leiche. Manchmal sieht man den Namenstext, manchmal sieht man den Namen. Inhalt. spielt keine Rolle, wie Sie es nennen,
solange es in Ihrer Anwendung konsistent ist. Und dann sagen wir Ende Block. Und das ist alles, was wir in unserem Basispunkt-HTML tun werden. Lassen Sie uns Ansichten schließen, lassen Sie uns Einstellungen schließen. Wir brauchen diese nicht und in unserer home.html machen wir das Gleiche. Block, Körpermaterial hier aus home.html und Block,
und schauen Sie sich diese interessante Syntax an. Django-Templates verwenden zwei Formen der Symptsyntax. Die Verwendung einer geschweiften Klammer und eines Prozentzeichens. Und das sagt im Grunde, führt eine fortschrittlichere Logik aus. Oder wenn wir wirklich nur Sachen drucken wollen, benutzen
wir, was ich einen doppelten Schnurrbart nenne und wir benutzen zwei geschweifte Klammern nebeneinander und schließen sie dann mit den entgegengesetzten geschweiften Klammern, werden darüber in ein wenig sprechen. Aber vorerst, lasst uns unsere Seite aktualisieren und wir sehen, dass es Zeug hier aus home.html sagt. Lassen Sie uns unseren Quellcode aktualisieren. Und es hat all dieses Zeug jetzt drin, plus unseren Inhalt von home.html. Nun, was daran schön ist, ist in unserer home.html und unserer Homepage. Wir müssen diesen ganzen Müll nicht schreiben. Alles, was wir tun müssen, ist, hey zu sagen, Django. Wenn Sie diese Vorlage rendern, greifen Sie Basispunkt HTML, lesen Sie es für uns. Und dann sagt Django, okay, ja, ja, das habe ich verstanden. Ich habe dich. Ich lese Basispunkt-HTML, aber hey, nebenbei bemerkt, es gibt eine blockiert Ihren kalten Körper. Und wenn du willst, kann
ich ein paar zusätzliche Sachen für dich reinlegen. Und wir sagen cool, Kuckuck, Cool. Ja, das tun wir eigentlich. Wir haben ein paar zusätzliche Sachen. Wir wollen Ihren leeren Körperblock durch ein paar unserer eigenen Sachen ersetzen. Und das ist buchstäblich alles, was wir getan haben. Das ist unsere Homepage. Und wenn ich aktualisiere, sagt dies ist unsere Homepage in unserem Quellcode, kommen Sie zurück hierher, und das ist unsere Homepage. Also jetzt arbeiten wir tatsächlich mit ein paar verschiedenen Vorlagen. Das Schöne daran ist, dass wir eine Sache in unserem Basispunkt-HTML ändern können. Und wenn wir einfach sagen, erweitert Basispunkt-HTML von zu Hause oder eine andere Vorlage in der Zukunft. Jede Vorlage erbt diesen Code. Daher müssen wir uns nicht mehr darum kümmern, jedes Mal denselben Grabstein oder dieselbe HTML-Deklaration
oder das HTML-Tag zu schreiben . Wir müssen uns darum keine Sorgen machen. Wir können es nur einmal tun. nun als ein weiteres Beispiel Lassen Sie unsnun als ein weiteres Beispielvoran gehen und schreiben Sie hier einen Block, Block, Titel und Block. Und wir werden sehen, dass unser Titel verschwindet. Da wird irgendetwas drin sein, genauso wie der Localhost-Port 8 Tausend. Und in unserem Haus, lasst uns Blocktitel, Homepage und Block machen, und nennen wir es eigentlich etwas viel besser. Maurice, super tolle Homepage. Aktualisieren. Und da steht meine super tolle Homepage. Und wieder, alles, was sie getan haben, war zu sagen ,
Hey, es gibt hier einen Blocktitel. Wir erstrecken uns von Basispunkt-HTML. Hier gibt es einen Blocktitel. Alles, was wir wirklich getan haben, war zu sagen, hey, schnappen Sie sich diesen Code und es ist, als würde COP ihn hier kopieren und einfügen. So ist es. Jetzt werde ich das einfach rückgängig machen. Und noch eine Sache, die wir tun können, ist, dass wir hier Standardinhalte geben können. Also Standardtitel, falls ich jemals vergessen habe, den Blocktitel in einer Vorlage hinzuzufügen. Sagen wir, whoops, caled hat vergessen, das da drin hinzuzufügen. Lassen Sie uns unsere Seite aktualisieren und es sagt Standardtitel. Also, wenn wir es nicht überschreiben, haben
wir jetzt eine Basis hier, einen Standard. Wenn wir es überschreiben, wird
es dann verwenden, was wir stattdessen verwendet haben, so
dass es diese Aktualisierung speichert und es sagt meine super tolle Homepage. Und so verwenden wir Blöcke. Das ist buchstäblich alles, was es zu einem Block gibt. Es ist einfach wie die Metapher, die ich in der letzten Lektion gemacht habe. Als wir Kinder waren und wir diese kleine Spielzeugzone hatten. Es war wie, hier ist ein Kreis, der in den Kreis passt, oder hier ist ein Quadrat oder ein Würfel, der in die Form passt, die wie ein Quadrat oder ein Dreieck aussieht. Das ist buchstäblich alles, was das ist. Das ist R-Würfel. Das ist r quadriert. Wir passen nur eine Form in eine andere.
9. Benutzerdefinierter page: Okay, lassen Sie uns darüber reden,
etwas benutzerdefinierten Kontext zu unserer Seite hinzuzufügen , denn gerade jetzt ist unsere Homepage cool, aber ehrlich gesagt ist es hart codiert. Es gibt überhaupt keine Variablen. Es gibt keine Möglichkeit, diesem Ding eine benutzerdefinierte Logik hinzuzufügen. Und so zu diesem Zeitpunkt, wo wir wirklich nur eine wirklich ausgefallene statische Website haben. Es verwendet Python, es verwendet Django, aber es ist statisch. Es gibt keine dynamischen Inhalte. Also lasst uns voran gehen und über dieses Ding reden, das Kontext genannt wird. Also lassen Sie uns unseren Basispunkt-HTML schließen, weil wir das nicht mehr brauchen. Und lassen Sie uns unsere Ansichten öffnen und Dot Py. Und in unserer Homepage-Ansicht können
wir hier eine Methode namens GetContext haben. Es ist eine Methode für eine Klasse, also nimmt es immer selbst als ersten Parameter, und dann nimmt es Schlüsselwortargs. Und dann arbeiten wir im Grunde mit diesem Ding namens Kontext. Und zu welchem Kontext
ist, können wir hier Daten aus Python-benutzerdefinierter Python-Logik hinzufügen. Und dann können wir das in unseren Zitat unquote Kontext werfen und es innerhalb unserer Seite verwenden. Also werden wir hier schnell ein kleines Beispiel durchblättern und dann werde ich Ihnen genau
zeigen, wie ich herausgefunden habe, dass GetContext-Daten sogar existieren. Wie, wie existiert das? Woher weiß ich, dass dies existiert? Ich werde Ihnen zeigen, wie ich das herausgefunden habe. Also werde ich tun, Kontext ist gleich super, und das wird bis zum Template-View-Punkt gehen, um Kontextdaten zu erhalten. Und wir würden nie in sich selbst passieren, aber wir können unser Schlüsselwort übergeben, args sind Quarks, und wir geben einfach Kontext zurück. Hier drin. Dies ist im Grunde ein Wörterbuch. Wir könnten sagen, Mein Ding ist gleich hallo Welt, Smiley Gesicht mit einer Zunge hängen aus. Hope Welt, Hallo Welt. Das ist dynamisch. Django wird neu gestartet. Und was ich hier tun kann, ist, dass ich das nehmen kann, mein Ding, gehen Sie zu home.html. Und anstatt zu lesen, ist
dies unsere Homepage, weil dies einfach eine Variable ist. Wir, wir wollen keine zusätzliche Logik damit machen. Wir schreiben keine Vierschleife. Wir sagen Django nicht, eine Form mit einem Block
in Form zu passen . Wir machen nichts davon. Wir wollen einfach nur etwas auf die Seite ausdrucken. Wir verwenden die, was ich doppelte Schnurrbart-Syntax nenne. Also eine geschweifte Klammer, geschweifte Klammer, dann ein paar Sachen in der letzten geschweiften Klammer, geschweifte Klammer. Jetzt drinnen sagen wir einfach mein Ding und dass mein Ding von hier kommt, mein Ding. Lassen Sie uns fortfahren und unsere Seite aktualisieren. Und da steht, hallo Welt, das ist dynamisch. Jetzt in unserer Vorlage, sagt
es nicht, aber aus unserer Sicht tut es das. So können wir jetzt eine Form von Logik haben und dies beginnt ein wenig dynamischer zu werden. Jetzt ist dies immer noch kein großartiges Beispiel und wir werden damit
arbeiten, um es in Zukunft zu einem besseren Beispiel zu machen. Aber im Moment ist dies
ein anständiges Beispiel dafür, wie wir im Grunde eine Python Logik ausführen können. Legen Sie es in eine Zeichenfolge oder eine Zahl oder irgendetwas, was wir wirklich wollen, und greifen Sie dann in der Vorlage darauf zu. Jetzt habe ich erwähnt, ich wollte Ihnen zeigen, woher ich GetContext-Daten habe. Und es gibt ein paar erstaunliche Django-Seiten da draußen. Einer von ihnen heißt CC BV, klassische klassenbasierte Ansichten. Und so ist es CC-BY v dot CIO dot UK hat verschiedene Django-Versionen. Und hier verwenden wir Django drei, also wird es automatisch ausgewählt. Und ich verwende eine Vorlagenansicht. Und woher ich das bekomme, ist diese Vorlagenansicht. Und alles, was es tut, ist, eine Vorlage zu rendern. Es macht nichts extra. Es gibt viele verschiedene Ansichten hier drin. Es gibt eine Login-Ansicht,
Logo Detailansicht, alle möglichen Sachen. Wir werden mit ein paar davon in Django 101 arbeiten, aber im Moment arbeiten wir nur mit unserer Template-Ansicht. Also klicke ich auf die Template-Ansicht und es sagt mir, welche Art von Inhaltstyp es sein kann, zusätzliche HTTP-Methodennamen. Ist dies erlaubt, eine GET-, Post-,
PUT-, Patch-, Löschkopfoptionen oder HTTP-Header zu verfolgen. Ehrlich gesagt, wir benutzen nur Get. Sie könnten dies also so einstellen, dass Sie nur eine Antwortklassenvorlagenmodul und einen Vorlagennamen erhalten. Derzeit verwenden wir nur den Vorlagennamen, weil alles andere automatisch für uns erledigt oder für uns bearbeitet wird. Und was ich es gerne nenne, weil es eine Art Magie ist, wird für uns automatisiert gehandhabt. Und dann haben wir diese Methoden. Und wir haben als Ansicht, die wir tatsächlich verwendet haben, glauben Sie es oder nicht, in unseren URLs dot py, homepage dot als view. Und wir können sehen, was als Ansicht tut. Und es macht all diese Sachen automatisch für uns, also müssen wir das nicht schreiben. Dispatch ist wie unsere init-Methode fast es, es läuft im Grunde direkt nach init, mehr oder weniger das ist wahr. Und wir haben eine hier genannt GetContext-Daten. Und ich wusste zufällig, dass der Kontext das ist, was wir es nennen. Und das liegt daran, dass ich die Django-Dokumente ein
paar Mal durchgelesen habe, und so bin ich irgendwie mit dieser Vorstellung vertraut. Wenn Sie die Django-Dokumente nicht durchgelesen haben, verbringen Sie
definitiv ein wenig Zeit und lesen
Sie die Django-Dokumente , wann immer Sie zusätzliche fünf oder zehn Minuten haben, gibt es eine Menge Dokumente, also wird es lange dauern Zeit. Es ist nicht etwas, das man in einer Stunde lesen kann. Und die Hunde sind ziemlich gut geschrieben. Also GetContext-Daten tun dies. Es dauert Selbst- und Schlüsselwort-Argumente, die tun, tun, tun, tun, tun, Kontextdaten erhalten. Selbst. Schlüsselwort-Argumente werden Quarks machen, die die Standardansicht gleich dem Selbst setzen. Wenn self.contents nicht keine ist, machen Sie andernfalls andere Sachen, geben Sie das Schlüsselwort args zurück. Und wir haben im Grunde gesagt, ja, cool, was auch immer Jack tat, lasst uns dasselbe tun. Also packten wir unseren Kontext, indem wir Super-Dot-Kontext-Daten dieselben Quarks
übergeben, die an uns übergeben werden. Ein wenig Kontext hinzugefügt und zum Ganzen zurückgekehrt. Also in der Zukunft, wenn Sie lernen, wissen
Sie, ein wenig fortgeschrittener Django. Sie können immer zu CC-BY V und Doo-Doo-Doo-Doo gehen und
nur darauf warten, dass dies geladen wird. Es gibt allerlei Sachen hier drin. Also fühlen Sie sich frei, ein wenig durch diese zu blättern. Aber zum größten Teil werden wir nur bei etwas
Grundlegendes bleiben , um dich nicht zu überwältigen. In zukünftigen Lektionen, Sie könnten sogar sehen, dass ich Referenz CCB v, Nur weil ehrlich gesagt ist es eine große Ressource Ende haben. Es sagt uns Dinge wie, wie,
wie, wenn wir get Kontextdaten verwenden, akzeptiert es eine Anfrage? Akzeptiert es Argumente? Ausgenommen nur selbst und Quarks. Was akzeptiert es? Wir wissen es nicht, und das müssen wir vielleicht wissen, wenn wir super verwenden. Und so ist dies eine wirklich gute Referenz dafür. In der nächsten Lektion gehen wir weiter und zeigen unsere Beiträge auf unserer Homepage an.
10. Dynamische Beiträge: Okay, in der letzten Lektion haben wir über GetContext-Daten gesprochen. Und wir haben dieses Ding, das mein Ding genannt wird, hinzugefügt, und es ist einfach eine Schnur. Mein Ding ist eine Schnur bei Reimen. Und das meinte ich nicht, um sich zu reimen oder zu reimen. Und ich meine, es würde jemand gerne eine Erdnuss-kleine Filmreferenz da sein, wenn du ein Film-Buff von der Prinzessin Bride bist. Und so werden wir weitermachen und mein Ding gegen Beiträge austauschen. Und was wir tun wollen, ist, dass wir unsere Modelle bekommen wollen. Wir haben diese Beiträge und wir haben dies in wie in den ersten paar Lektionen gemacht. Whoo, das wurde viel zu groß. Wir haben diese Beiträge hier drin, also habe ich diesen einen Beitrag hier drin. Lassen Sie uns einfach voran und speichern Sie das, fügen Sie einen weiteren Beitrag hinzu. Dies ist ein zweiter Beitrag. Speichern Sie bei einem Beitrag. Dies ist ein dritter Beitrag speichern. Und jetzt lassen Sie uns die Show auf unserer Seite machen, denn im Moment taucht nichts auf. Und was wir tun wollen, ist, dass wir diese Beiträge greifen und alle bekommen wollen. Und was wir hier sagen können, sind Kontexte, Beiträge sind gleich posten und ich bekomme diesen Namen von dieser Klasse. Wir haben es noch nicht importiert, wir werden es in nur einer Sekunde. Aber diese Klasse Namen Punktobjekte, weil Überraschung, Überraschung. Grundsätzlich ist alles in Python ein Objekt. Und in Django sind sie immer noch Objekte. Es ist in Python geschrieben, also ist alles ein Objekt Punkt alle. Und das wird all unsere Beiträge für uns bekommen. Dann können wir von DOT-Modellen Import Post sagen. Und das wird uns einfach erlauben, diesen Beitrag zu greifen, ziehen Sie ihn in unsere Ansichten dot pi. Und dann, wenn diese Seite gerendert wird, wird
es sagen, GetContext-Daten ausführen,
tun, was Django tut. Und hier drin gibt es eine Variable namens Posts. Und es werden alle Beiträge sein. Und so lasst uns gehen und mein Ding gegen Beiträge in der Vorlage austauschen. Und wir werden einfach vorerst vorerst
verwenden, doppelte Schnurrbart Syntax. Lass uns weitermachen und das auffrischen. Und wir sehen diese seltsame Sache, dieses Ding nennt einen Abfragesatz. Und so in einer Datenbank, wenn Sie nach Daten suchen, wird
es eine Abfrage genannt. Und wir haben eine Reihe von einer Abfrage hier. Also haben wir unseren ersten Beitrag, und das ist ein neuer Beitrag, zweiter Beitrag und ein dritter Beitrag. Und das ist etwas von einer Liste. Das ist eine wirklich, wirklich ausgefallene Django-Liste. Und so können wir diese jetzt durchlaufen. Und so, anstatt Beiträge zu schreiben, was wir tun können, ist, dass wir dieses H1 loswerden. Wir brauchen das da drin nicht. Wir können sagen, um Beiträge zu posten. Und vier, zeig mir etwas. Lassen Sie uns hier eine horizontale Regel setzen. Und das sollte dreimal zeigen. Zeig mir was, zeig mir, dass du mir etwas zeigst. Nun, das ist, lass mich die Einbuchtung reparieren, die mich verrückt machen wird. Dies ist Looping für jeden Beitrag. Und wir wissen, dass, wenn wir jedes einzelne Stück Daten in einer Liste durchlaufen, wir genau diesen Punkt haben. Und das ist genau so, als würde man eine Liste in Python durchlaufen. Der einzige Unterschied ist, dass diese Liste mit zusätzlichen Sachen kommt. Es ist also, als würde man eine Liste von Wörterbüchern durchlaufen. Und so haben wir jetzt Post und Text. Und so können wir Postdoc-Texte Enter Vorlage tun. Und so lassen Sie uns voran und schreiben Postpunkt-Text. Aktualisieren Sie Ihre Seite und sagt, lassen Sie mich hier vergrößern. Dies ist ein neuer Beitrag, dies als zweiter Beitrag. Dies ist ein dritter Beitrag. Gehen wir weiter und fügen Sie hier noch einen hinzu. Lasst uns das noch mal kleiner machen. Und Doo-Doo-Doo-doo, Dies ist ein vierter Beitrag, speichern. Und wenn wir uns erfrischen, boom. Jetzt werden Daten in eine Datenbank eingefügt und Daten aus einer Datenbank
gezogen und in einer Vorlage gerendert. Das ist buchstäblich alles, was wir für diese spezielle Lektion tun müssen. In der nächsten Lektion gehen wir weiter und fügen hier einige Bilder hinzu.
11. Bilder in dein Modell hinzufügen: Okay, lassen Sie uns darüber reden, wie wir ein Bild hinzufügen können. Und so können wir ein paar verschiedene Dinge tun. Aber wir werden einige der Feinheiten umgehen. Und wir werden genau in unseren Modellen arbeiten, Punkt-Punkt-Punkt. Und so gibt Django uns dieses Ding namens Modell ist.5 Feld. Und wir können jede Form von Datei hochladen. Aber das ist nicht ganz das, was wir wollen. Weil wir vielleicht auch etwas Thumbnailing und so haben wollen. Was wir jetzt tun werden, ist ein neues Paket zu installieren. Und wir werden dieses Paket benutzen. Also werde ich auf die Docks direkt vor Ihnen verweisen, und ich werde Ihnen genau zeigen, wie ich es mache. Also werde ich das löschen, gehe zurück zu meinem Browser und tippe Django-Tumbnail-Paket ein. Django-Tumbnail, und das ist nicht, was ich Paket eingegeben. Und da sind Django-Tumbnails, da ist Sorrell Thumbnail. Ich habe vorher ein oder zweimal Bodenthumbnail benutzt. Anscheinend habe ich dies angeklickt,
um , zu, um dies zu tun, lassen Sie uns einen Blick auf unsere Dokumente hier werfen. Features auf einen Blick unterstützt Django 3.1. Das ist es, was wir benutzen, das ist wichtig. Python drei Unterstützung, sehr wichtig. Speicherunterstützung, das ist gut. Plug-in-Engine unterstützt, Kissen Bild, Magie, Pille, Zauberstab, alle möglichen Dinge. Das sind alles gute Dinge. Wenn du nicht weißt, was das sind, ist das okay. Admin-Integration mit der Möglichkeit zu löschen, Dummy-Generierung
aufgrund, alle möglichen Sachen zu tun. Haben wir Thumbnailing und Zuschneiden alternative Lösung, alternative Auflösung Versionen
einer Miniaturansicht Rand Berechnung für vertikale Positionierung. Diese Liste sieht mir vielversprechend aus. Und so, wie Sie den Code pip installieren Sorrell Thumbnail verwenden. Also lasst uns das schnappen. Und in unserer virtuellen Umgebung werde ich einfach pip installieren Sorrell Miniaturbild einfügen. Und wenn Sie Pip env verwenden, wie ich es bin, sollten
wir pip installieren mehrere Thumbnail oder so und wir können immer noch Pip show Trauer Thumbnail tun. Und das zeigt uns, dass wir Version 12.7,
2.0 verwenden . Was müssen wir sonst noch tun? Wir müssen Bodenthumbnail in R installierten Apps setzen. Lass uns das machen. Wo sind wir hier? Meine Websiteeinstellungen haben Apps installiert. Wir werden nach unten scrollen. Werfen wir das einfach irgendwo in der Mitte, so. Und dann gibt es hier etwas Verwendung, aber wir müssen es tatsächlich zu unserem Modell hinzufügen. Hier ist es modale Verwendung. Wir wollen dem folgen. Also gehen wir zurück zu unseren Modellen dot py. Und was sehen wir hier von Sorrell Thumbnail Import Bild Feld von Sorrell Punkt Thumbnail, Import Bild Feld. Und hier können wir sagen, Bild ist dann gleich diesem Bildfeld. Und jetzt verwenden wir ein Drittanbieter-Paket, das auf Django schichtet, das über Python liegt, um im Grunde ein Bildfeld zu erstellen. So können wir Bilder hochladen und sie dann schön in unserer Vorlage Thumbnail, Django kommt nicht standardmäßig mit, nur weil Django ziemlich nackt ist, gibt
es dir das bloße Minimum und lässt dich erweitern, um zu tun, was du tun wolltest. Es ist nicht dafür gedacht, dass jede Lösung darin eingebaut wird. Es ist nicht so gestaltet. Und der Grund dafür ist, dass, wenn Sie eine Website erstellen, die nicht brauchte. Sorrell Thumbnail und es kam mit oralen Thumbnail. Das ist nur das Laden zusätzlicher Sachen, das ist extra Zeug, um es herunterzuladen, es ist es einfach nicht wert. Und so sagt Django, ja, andere Leute können diese Erweiterungen bauen. Also haben wir dieses Bildfeld hier hinzugefügt. Lass uns weitergehen und laufen, Server ausführen. Und es steht, schau dir diesen Feed an, das ist unsere App, Beiträge, das ist unsere Klasse. Bild, das ist unser Feld. Das Bildfeld kann nicht verwendet werden, da das Kissen nicht installiert ist. Hinweis, erhalten Kissen auf oder laufen Python dash M pip installieren Kissen. Also lasst uns das machen. Pip installieren Kissen mit einem großen P. Okay, das ist erledigt. Lass uns Django nochmal laufen. Wir haben eine über angewandte Migration. Lassen Sie uns tun, Python verwaltet hoch migrieren. Und das ist die Anwendung unserer Thumbnail initial. Cool, das ist von unserem Drittanbieter-Paket. Es ist also, ein kleines Ding in unserer Datenbank bereitzustellen. Mal sehen, ob wir unsere neuen Migrationen durchführen können, weil wir neue Migrationen vornehmen müssen. Diese Migrationen, die wir gerade ausgeführt haben, kamen von Sorrell Thumbnail. Wenn wir hier Migrationen machen, sagen wir Django,
hey, machen Sie einen Schnappschuss von dem, was wir derzeit haben, im Vergleich zu dem, was wir früher hatten. Und wenn es Änderungen gibt, erstellen Sie eine Migrationsdatei. Und so haben wir, wir haben gesagt, dass diese Postklasse jetzt ein Bildfeld darauf hat. Und so lassen Sie uns voran gehen und laufen, Migrationen machen. Und das wird sagen, dass das Bildfeld nicht null sein darf. Wir können entweder eins drücken, um eine einmalige Standardeinstellung bereitzustellen, oder wir können zwei treffen. Und lassen Sie uns einen Standard in Modellen dot py setzen. Das ist genau hier drin. Wir können sagen, dass etwas wie Standard gleich etwas ist. Wir wissen jedoch nicht, was der Standard ist. Also lasst uns voran gehen und eins sagen und sehen, was passiert. Und ich tippe einfach eins und vielleicht diese Pausen, vielleicht nicht. Wenn es kaputt geht, zeige ich Ihnen, wie man es repariert. Und ich nehme die Nummer Eins hier rein. So hat es eine neue Migrationsdatei namens 000 erstellt, um Image zu posten. Und wenn wir darauf klicken, hat es eine Abhängigkeit von der ursprünglichen Migrationsdatei. Es braucht also diese Akte. Und dann wird es für die Operationen Dinge sagen, die tun sollten, fügen Sie ein Feld hinzu. Und dieses Feld kommt aus dem Boden Punkt Thumbnail-Felder Punkt-Bildfeld. Es ist ein Standardwert von eins. Genau das haben wir geschrieben, um sie hochzuladen. Wir haben es keinen Upload gegeben. Das ist genau wie ein Ordner, in den wir hochgeladen werden, wenn wir den Standard false beibehalten wollten. Und so im Grunde wird uns dies eine neue Spalte in unserer Datenbank geben. Gehen wir voran und führen Sie jetzt migrate aus. Und so ursprünglich, als wir unsere Migrationen vorgenommen
haben, haben wir diese Datei einfach erstellt, wir haben sie nicht ausgeführt. Dann führen wir migrate aus und es heißt, hey, Python, Übrigens, ich möchte, dass Sie diese Datei nehmen und ich möchte, dass Sie sie auf meine Datenbank anwenden. Also lasst uns weiter gehen und Django erneut starten und sehen, wie die Dinge da drin aussehen. Bisher sehen die Dinge gut aus. Lasst uns rüber zu einem Browser gehen. Mal sehen, ob wir etwas kaputt gemacht haben. Okay, das sieht gut aus. Vierter Beitrag derzeit auf eins gesetzt. Das ist überhaupt nicht das, was wir wollen, aber wir könnten das ändern. Also, was ich hier tun werde, ist dass
ich einfach alle diese löschen werde, weil ich ein neues Bild hinzufügen möchte. Also werde ich sie alle auswählen. Löscht, ausgewählter Beitrag geht zu sagen, sind Sie sicher? Ja, ich bin sicher. Fügen Sie einen neuen Beitrag hinzu. Dies ist der erste Beitrag. Und lassen Sie uns ein Bild hinzufügen. Und lassen Sie uns ein Bild von Galli, Galli zu dot-dot-dot JPEG Open Save hinzufügen. Und jetzt gibt es hier eine Datei und wir können sogar darauf klicken. Und da steht, oh nein, das existiert eigentlich nicht. Und darüber hinaus, wenn wir hier reinschauen, lassen Sie uns all diese Akten schließen. Unser Bild ist hier drin. Nehmen wir an, Sie hatten zehntausend Bilder. Sie haben jetzt einen Ordner namens Feed, der Ordner namens mysite Ordner namens Vorlagen, Ihre Datenbank, 10 Tausend Bilder verwaltet hoch, Pip Datei, Pip Dot loc. Das ist keine Möglichkeit, dein Leben zu leben. Wir wollen alle unsere Dateien sind Mediendateien. So nennen wir sie. Alle unsere Mediendateien in einen Ordner namens Media. Und das werden wir in der nächsten Lektion tun. Im Moment haben wir also ein Bildfeld Setup, noch nichts auf unserer Homepage anzeigt. Wir müssen unseren Medienordner so einrichten , dass alle unsere Bilder in einen bestimmten Ordner hochgeladen werden. Und das ist wirklich schön, wenn Sie jemals alle
Ihre Ordner oder alle Ihre Bilder komprimieren mussten , können
Sie sie alle ganz einfach zu packen. Sie könnten sie alle ganz einfach löschen. Sie können mit ihnen einfacher arbeiten, wenn sie sich in einem Ordner befinden. Lassen Sie uns in der nächsten Lektion fortfahren und unseren Medienordner einrichten.
12. Einrichten von media: In Ordnung, lassen Sie uns einen Blick auf das Hinzufügen eines Medien-Ordners zu unseren Projekten werfen
, damit alle unsere Bilder nicht direkt in die Wurzel unseres Projekts hochgeladen werden. Um das zu tun, müssen
wir meine Website-Einstellungen dot py öffnen, und so ziemlich überall, wo ich denke, werfen
wir es einfach hier rein. Wir können Medien-URL schreiben, und dies wird nur der Name unseres Ordners sein. Und es wird ein Schrägstrich mit einem Schrägstrich am Ende und am Anfang sein. Dann werden wir unsere Medien-Wurzel schreiben. Media Root wird OS dot,
dot join, base dire sein. Und dann geben wir am Anfang Medien ohne Schrägstrich ein. Und so sieht dieser Teil hier ziemlich vertraut aus, nicht wahr? Wir haben das mit unserem Template-Verzeichnis eingerichtet. Aber anstatt den Vorlagenordner zu verwenden, verwenden
wir den Medienordner. Und unsere Medien-URL wird sein, wenn Sie auf Inhalte zugreifen. Wenn Sie zu meinem website.com Schrägstrich etwas gehen, wie heißt dieser Ordner? Wo auch immer dieser Ordner ist, und dann Ihr Bild Punkt JPEG oder was auch immer. Also brauchen wir die Einstellung, auch wenn wir sie derzeit nicht verwenden, brauchen wir diese Einstellung. Dann gehen wir zu unseren URLs dot py. Und wir müssen hier ein paar interessante Sachen schreiben. Also werden wir das ein bisschen ändern. Also zuerst werden wir zuerst unsere Einstellungen brauchen. Also lassen Sie uns das zuerst nach oben bewegen, so dass es in alphabetischer Reihenfolge ist. Genau wie eine gute Praxis von Django.com, importieren Sie Einstellungen. Und dann lassen Sie uns auch diese,
diese Funktion namens statisch von Django.com importieren . Punkt-URLs, Punkt statisch, Import, statisch, nicht Status, es ist statisch. Dann ganz unten sagen wir, ob Einstellungen Dot Debug. Und was Debug bedeutet, ist, wissen Sie, wenn wir keine Vorlage hatten und es sagte, dass es einen Template-Fehler gibt und es uns zeigte, wo es nach dieser bestimmten Vorlage suchte. Das ist es, was debugged tut. Debug ermöglicht es uns, leicht herauszufinden, was los ist. Und in der Produktion, wenn Sie Ihre Website starten, deaktivieren
wir diese tatsächlich, damit die Benutzer nicht alle diese zusätzlichen Informationen sehen können , da dies Ihre Website anfällig macht. Aber während wir es codieren, wollen
wir, dass es aktiviert ist und es standardmäßig aktiviert ist. Dann sagen wir unsere URL-Muster. Lassen Sie uns zu diesem URL-Muster hinzufügen. Wir werden sagen, statische Einstellungen, Medien-URL. Und dann das Dokument Stamm, Dokument Unterstrich. Root ist gleich der Settings.me Stammmedien-Route. Und so verwendet dies nur eine ziemlich Standard-Watt-Python Sprache. Wirklich. Wir importieren Einstellungen die gesamte Datei. Und dann verwenden wir die Eigenschaft in dieser Datei. Wir importieren nur Einstellungen. Wieder, es ist im Grunde ein Objekt. Und dann verwenden wir die Medien-Route und wir haben das von unseren Einstellungen in hier, Medien-URL, Medien-Root. Also lasst uns voran gehen und es speichern und sehen, was passiert. Ok. Es sieht so aus, als wäre nichts passiert. Aber lasst uns gehen und diese Seite aktualisieren und dann ändern dieses Bild anstelle von Gulley, lassen Sie uns Delhi Bauch setzen. Speichern Sie das. Und schauen wir es uns an. Und Sie können tatsächlich Slash Medien sehen, Gully Bauch Punkt JPEG. Und werfen wir einen Blick in unser Projekt hier haben wir jetzt einen Ordner namens Media und Gully Belly ist da drin. Das ist fantastisch. Wir können jetzt auch Gulley loswerden, denn das war unser ursprünglicher. Das ist das löschen. Das brauchen wir nicht mehr. Und alle unsere Ordner oder nicht oder Ordner, aber alle unsere Dateien werden in den Medienordner hochgeladen werden. Als eine kurze Zusammenfassung,
was wir getan haben, war, dass wir Medien-URL und Medien-Root hinzugefügt haben. Und das ist sehr ähnlich, als wir unseren Template- oder Template-Pfad erstellt haben. Doo-Doo-Doo-doo, diese, unsere Vorlage dire. Das hier ist unsere Medien-Wurzel. Und dann haben wir eine Medien-URL und diesen Medienstamm in unseren URL-Mustern verwendet. Und so ist die Idee hier, dass, wenn Sie statische Dateien mit aktiviertem Debug bereitstellen, Django diese Dateien für Sie bereitstellen wird. Das ist technisch eine unsichere Art, Django zu verwenden. Wenn Sie also Ihre Website irgendwann in der Zukunft starten, möchten
Sie das nicht verwenden und Sie werden
Debug deaktiviert haben und Ihre statischen Dateien brechen. Dann können Sie etwas wie Engine X verwenden, um
die Bilder umzukehren und so einzurichten. Wir werden nicht darüber reden, für gerade jetzt, nur weil das ein bisschen komplizierter
und ein wenig zu überwältigend wird , wenn man Django lernt. Aber vorerst ist das, was wir brauchen, um aufzustehen und zu laufen. Nur das. In unserer nächsten Lektion gehen wir weiter und fügen Sie dieses Bild tatsächlich unserer Home-Vorlage hinzu.
13. Bilder in deine Vorlage hinzufügen: Okey-dokey, lassen Sie uns Bilder zu ihrer Home-Vorlage hinzufügen. Denn wenn wir eine Vorschau machen und das schließen können. Wenn wir eine Vorschau unserer Seite machen, sagt
es einfach, dass dies der erste Beitrag ist, aber es gibt kein Bild hier drin. Gehen wir weiter und fügen Sie hier ein Bild hinzu. Und so müssen wir unsere Vorlagen nach Hause öffnen. Und wir wissen, dass es nach Steuern gibt. Und wo ich das bekomme, ist Modelle dot py post 2.txt. Wir haben jetzt ein Bild. Wir können post.Alle Bild. Also lassen Sie uns das einfach ausdrucken und sehen, was uns das gibt. Machen wir hier einen BR, Post-Punkt-Bild. Mal sehen, was das für uns zurückgibt. Der Name des Bildes. Ich könnte wahrscheinlich Post-Punkt-Bild, Punkt-URL tun. Ja, da ist es, das ist die eigentliche URL. Und wenn ich das in ein Bild wickeln würde, ist
IMG SRC gleich. Wir werden sehen, dass dies ein riesiges, riesiges Bild ist. Wir brauchen ein Thumbnail, weil dieses Bild einfach so groß ist. So groß. Sieh dir das süße Gesicht an. Und er wollte ein kleineres Bild, denn dieses Bild, das ich kenne, ist bereits über drei Megs. Und wenn wir zeigen, wie ein 100 Bilder, das ist jemand hat einen Download 300 Megabyte, um Ihre Webseite zu sehen, das ist einfach inakzeptabel. Was wir also tun können, ist jetzt auf unsere Sorrell Thumbnail Docs zu verweisen. Und wie machen wir das? Es heißt Template-Verwendung. Wir möchten ein Thumbnail laden. Also gehen wir zurück zu unserer Homepage und legen Last unter erstreckt. Extend sollte immer zuerst kommen und dann laden wir. Und was bewerten wir dann? Wir sagen, dies ist eine einfache Verwendung. Okay, ich werde das einfach kopieren und einfügen, um ehrlich zu sein. Doo-Doo-Doo-Doo. Und so wird dies eine Miniaturansicht verwenden, die von hier oben kommt. Item.Name, Bild. Wir haben kein Element, wir haben Post Punkt-Bild, 100 mal 100 und lassen Sie uns tun 200 mal 200 Crop Center wie ich m. Und dann könnten wir sagen, die Bildquellen I M Punkt URL Breite als ich m Punktbreite, Höhe ist I m Punkthöhe. Lass uns voran gehen und das speichern. Und gehen wir zurück. Einfach auffrischen. Und es hat ein Thumbnail für uns erstellt. Cool, also das ist ein perfekt zentriertes 200 mal 200 Bild. Gehen wir weiter und inspizieren das. Und es hat diese seltsame URL für uns erstellt. Lassen Sie uns dies in einem neuen Tab öffnen. Und das ist das Bild. Es ist in unserem Medien-Ordner. Es hat automatisch einen Cache-Ordner namens BB C1 und dann eine Art von Hash erstellt. Und das ist nur die Verwendung von Caching für uns, so dass es nicht jedes Mal, wenn jemand Ihre Website besucht,
das Thumbnail neu generieren muss. Also, das ist wirklich nett. Und das erste Mal, als wir die Website geladen haben, merkt
man, dass es wahrscheinlich um 2,5th schneller, 2,5th langsamer gedauert hat. Vielmehr, wenn wir dieses Mal auffrischen, wird
es ziemlich sofort sein. Wir sehen keinen Blitz oder so. Es ist nur Boom, es ist fertig geladen. Lassen Sie uns voran und fügen Sie einen zweiten Beitrag hinzu. Also lasst uns das retten. Dies ist ein zweiter Beitrag. Lassen Sie uns ein Bild hinzufügen. Lassen Sie uns Rhabarber hinzufügen. Speichern Sie, und lassen Sie uns unsere Seiten aktualisieren. Befreien Sie sich hier von unserer Konsole, aktualisieren Sie unsere Seite. Oh, sieh mal, da ist Rhabarber. Gehen wir weiter und fügen Sie noch einen hinzu. Dies ist ein dritter Beitrag. Und lassen Sie uns ein Foto von Rhabarber und Gully hinzufügen. Und das hier ist ein großer. Das sind 4,2 Megs. Gott sei Dank. Wir sind auf dem Daumen. Und da ist es. Das läuft alles für uns. In der nächsten Lektion möchte ich, dass wir auf eines dieser Bilder klicken und irgendwo zu einer
anderen URL gehen und das vollständige Bild sehen
können .
14. Eine Detailansicht: Okay, was ich möchte, dass wir tun können, ist in der Lage, entweder
auf diesen Text oder das Bild oder beides klicken zu können . Und dann gehen Sie und sehen Sie eine andere Webseite, wo wir
das vollständige Bild zeigen , die unkomprimierte Version. Und um dies zu tun, verwenden wir dieses Ding, das eine Detailansicht genannt wird. Und so ist es genau im Namen, es ist eine Detailansicht. Wir müssen eine neue Ansicht hinzufügen. Also gehen wir in unser Feed, gehen Sie in Ansichten. Und lassen Sie uns eine neue Detailansicht hinzufügen. Und das kommt aus der generischen Detailansicht. Und wenn Sie nicht sicher sind, woher ich zur Detailansicht gekommen bin oder Sie
sich nicht sicher sind, woher Sie das importieren sollen, weil Sie sich nicht an alle Importe erinnern müssen. Das kommt nur mit dem Schreiben von Django und Python im Laufe der Zeit, Sie fangen an, sich an sie zu erinnern. Aber wenn Sie nicht wissen, woher es kommt, können
Sie immer zu C gehen, C B v dot c o dot UK. Und das wird dir sagen, woher es kommt. In der Tat zeige ich Ihnen, woher es kommt. Wir haben eine Detailansicht. Wo befinden sich die generische Detailansicht? Und es sagt, direkt hier oben von Django dot generische Importieren Sie die Detailansicht. Und wir können alle möglichen Sachen hier drinnen erledigen. Und so hat es einen content_type Inhaltsobjektnamen, zusätzlichen Kontext. Wenn wir zusätzlichen Kontext,
HTTP-Methoden, ein Modell hinzufügen wollten , müssen
wir dieses Modell setzen. Primärschlüssel-URL,
Schlüsselwort , yada, yada, yada, alle möglichen Sachen. Wir werden nicht mit viel davon arbeiten. Wir werden nur mit etwas davon arbeiten. Daher müssen wir eine neue Detailansicht erstellen. Also lasst uns Klasse machen. Und nennen wir es Post Detailansicht. Und das wird von Jen geht Detailansicht erben. Dann geben wir ihm einen Vorlagennamen. Und dieser Vorlagenname wird einfach layout.html detailliert sein. Und dieses Modell wird posten. Und dieser Beitrag kommt von hier oben, der von unserem Modell hier stammt. Und wirklich alles, was wir an dieser Stelle sagen, ist zu sagen, wissen
Sie, wir haben dieses Modell, wir haben als Detailansicht. Wenn Sie zu einer bestimmten URL gehen, einfach automatisch für uns arbeiten, holen Sie dieses bestimmte Bild für uns, diesen bestimmten Beitrag. Und so müssen wir keine Suche machen. Wir müssen uns keine Sorgen um die Verwaltung Ihrer Datenbank machen. Django verwaltet diese Detailansicht für uns und alles, was wir tun müssen, ist die beiden Codezeilen zu schreiben. Es ist ehrlich gesagt eine schöne, schöne Sache. Also speichere ich, dass Django neu startet, nichts passiert. Was wir jetzt tun müssen, ist in unsere URLs oder Feed-URLs zu gehen. Und wir müssen hier einen weiteren Pfad hinzufügen, damit wir path eingeben können, sagen
wir, Details schrägen eine Art Ganzzahl, die die Post-ID sein wird und eine Ansicht rendern. Und der Name wird sein, nennen wir es einfach Detail. Und das sollte eher so sein. Also lassen Sie uns nicht Details ASU Details und anstelle von int tun, weil das nur meine website.com Schrägstrich Details int rendern wird. Wir wollen sagen, I N T Doppelpunkt PK. Es sucht also nach einer Ganzzahl. Und wenn es unsere Ansicht hier drinnen rendert, wird
es diese ganze Zahl umbenennen, was auch immer das ist. So könnte es wie website.com Schrägstrich Detail Schrägstrich sein, wird man diese ganze Zahl betrachten und es wird es pk nennen. Dann müssen wir eine Ansicht rendern. Und diese Ansicht wird Post-Detailansicht genannt. Also, wenn ich zurück zu URLs gehe und lass uns von DOT-Ansichten tun, importieren Sie die Homepage-Ansicht. Lassen Sie uns auch die Beitragsdetailansicht importieren. Und das ist eine Klasse, also verwenden wir als Ansicht. Okay, Django hat sich bisher nicht beschwert. So weit, so gut. Probieren wir das aus, nur um zu sehen, wo wir sind. Also zuerst brauchen wir einen Ausweis. Wenn ich darauf klicke, steht die ID hier oben, Beiträge sind acht. Also lasst uns in die Schule gehen, um einen Blick auf postdate zu werfen. So können wir jetzt unsere Website localhost Port 8 Tausend Schrägstrich Detail Schrägstrich acht tun. Und etwas hier drin ist ungefähr o ,
und das liegt daran, dass ich hier am Ende einen Schrägstrich gesetzt habe, und da sollte es einen Schrägstrich geben. Warten Sie also, bis Django neu startet, aktualisiert wird. Und wir sollten einen Fehler „Template Not Found“ erhalten. Es gibt eine Vorlage ist nicht vorhanden. Araber suchen nach detaillierten layout.html. Wo sucht das jetzt hin? Während es geht, um in unseren Vorlagen Ordner namens Detail, detaillierte Punkt HTML
genannt suchen . Der Ordner Vorlagen wird als Vorlagen bezeichnet. Die Datei wird als Detailpunkt HTML bezeichnet. Oder es wird in diesem Paket aussehen, oder es wird in diesem Paket aussehen. Also lassen Sie uns einfach den ersten Platz geben, der Vorlagen sucht, detaillierte layout.html. So gehen wir in unsere Vorlagen, neue Datei, Detail Punkt HTML. Und lasst uns einfach Hallo Welt schreiben. Lassen Sie uns hier nichts Schickes tun. Hallo Welt mit einem Herzen. Jetzt wird das nicht funktionieren. Es ist HTML mit einem Smiley. Cool. Okay, wir haben hier eine Ansicht gerendert. Das sind gute Neuigkeiten. Lasst uns voran gehen und die Basis erweitern. Denn wenn ich schnell eine Sicherungskopie mache, schauen wir uns die Quelle an. Da ist nichts drin. Lassen Sie uns voran gehen und erweitern, erstreckt sich. Basispunkt-HTML. Lassen Sie uns eine Seite aktualisieren. Es sieht so aus, als wäre nichts passiert, aber wenn ich die Seitenquelle wieder ansehe, haben
wir hier Zeug mit einem Standardtitel. Also lasst uns Block, Titel, Detail, Ansicht und Block tun. Und es änderte den Titel dort oben. Das ist gut. Das bedeutet, dass das funktioniert. Block, Körper und Block. Das ist, wo mein Bild hingehen wird. Das ist, wo mein Bild gehen wird. Also, was ich tun werde, ist, dass ich hier aufhören werde. Und in der nächsten Lektion werden wir tatsächlich einige der Details auf dieser Seite ausfüllen. Wir werden es nicht gut aussehen lassen, aber wir werden einige der Details auf dieser Seite ausfüllen.
15. Detail: Na gut, willkommen zurück. Dies ist unsere Detailseite. Das soll dieses Bild hier zeigen, Rhabarber und Gully. Momentan zeigt es nichts, nichts hier drinnen als dynamisch. Jetzt wissen wir, dass wir GetContext-Daten verwenden können, aber wir müssen das nicht tun, weil Django eine Menge von diesem Zeug für uns verwaltet. Also öffnen wir unsere Ansichten Dot Py. Wir verwenden einen Vorlagennamen namens detaillierte layout.html. Und wir sagen, dass das Model Post ist. Wenn wir unsere URLs dot py öffnen, ist
unser Pfad Detail und dann eine Art Nummer. Und es wird automatisch herausfinden, dass dort eine ganze Zahl ist, weisen Sie sie der Variablen namens pk neu zu. Und irgendwo in dieser Detailansicht wird
es für uns klappen. Es wird sagen, oh, ich weiß genau, wonach du suchst. Wenn es nun standardmäßig das finden kann, wonach Sie in Ihrem Kontext suchen, wie würden wir das nennen? Denn bevor wir es wie Beiträge oder mein Ding anriefen, müssen
wir das etwas nennen. Und so lassen Sie uns voran gehen und versuchen Objekt. Und es gibt uns das Objekt. Und in der Tat, was das hier tut, wirklich froh, dass das kam, ist es mir den Text gegeben. Und das ist, weil, wenn wir zu den Modellen gehen und gab uns das Post-Objekt, aber ein give a, gab uns die String-Darstellung dieser, die nur selbst.TableView. Aber vermutlich könnten wir Objekt-Punkt-Text oder Objekt-Punkt-Bild machen. Also lassen Sie uns Objekt Punktbild tun. Okay, das ist der Name des Bildes. So fast da. Was ist, wenn wir Image.all URL gemacht haben? Das ist unsere URL, das ist es, was wir wollen. Also lasst uns voran und hash das ein wenig aus. wir also h3 Text, Objekt Punkttext. Und lasst uns h3 Bild machen. Und das wird einfach ein Image-Tag sein, IMG SRC. Lassen Sie uns das ein wenig reaktionsschnell machen. Fügt Bootstrap später mit einer 100% Höhe Auto hinzu. Und Boom, da ist er. Sieh dir diese QD-Voreingenommenheit an. Und so haben wir jetzt eine Detailansicht. In der nächsten Lektion würde ich gerne tun
, wenn wir einfach zurückklicken, diese sind noch nicht anklickbar. Also müssen wir herausfinden, wie man diese anklickbar macht und wohin man gehen soll. Weil wir das fest programmieren können. Wir könnten in unserem aufgrund, aufgrund unserer home.html,
machen dies zu einem Link, der Detail Schrägstrich Post-Doc ID geht, wenn wir wollten,
weil wir wissen, dass ID-Spalte existiert, gibt es einen besseren Weg, um Ihr Leben zu leben obwohl. Und was ist, wenn wir es jemals von detailliert zu Details oder
Bild oder ein anderes Präfix in unserer URL hier ändern . Was wäre, wenn wir das ändern wollten? Nun, dann müssten wir es in ihrem Haus ändern. Und was ich Ihnen zeigen werde, so dass wir das nicht tun müssen. Wir können einfach sagen,
hey, Django, erledigen Sie das für uns. Und wenn es sich in der Zukunft ändert, ändern Sie es
auch hier für uns. Das kommt also in der nächsten Lektion auf.
16. Template: In Ordnung, lassen Sie uns einen Blick darauf werfen, diese klickbar zu machen und auf eine andere Seite. zunächst Details, Lassen Sie unszunächst Details,Ansichten und URLs und Modelle schließen. Wir müssen nur mit unserer home.html arbeiten. Für diese spezielle Lektion müssen
wir eine Art Link erstellen. Und was wir tun könnten, ist ein HREF View Details. Und dann können wir hier sagen, gehen Sie zu Schrägstrich Details Slash Post Punkt ID mit einem Schrägstrich. Und wenn ich auf diese o c klicke, Das ist genau der Grund, warum wir das nicht tun. Es sind keine Details. Ich behalte Sie in diesem Detail. Aktualisieren. Gehen Sie zu den Details. Ok. Das funktioniert. Und das funktioniert. Was ist, wenn ich es aus irgendeinem Grund von Details zu Info geändert habe? Okay, also gehe ich jetzt zurück auf meine Homepage und erfrischen. Meine Seite wird nicht mehr für mich funktionieren. Und du siehst, dass es mir ein Fluorophor gibt. Also ist etwas kaputt. Jetzt gibt es einen netteren Weg, dies zu tun. Wir gaben dem einen Namen und es gibt diesen Namespace hier. Und in diesem Namespace stimmt auch zu. Wo sind wir vielleicht URLs zitieren, die Namespace hier übereinstimmt. So können wir in unserer home.html sagen, wir können sagen, hey Django, führen Sie die Funktion namens URL aus. Dann suchen Sie nach unserem Feed, das ist unser Namespace und unsere Detailansicht. Und ich bekomme das aus Namespace, das ist unser App-Name, Detailansicht, das ist unser Name. Und dann braucht es eine ganze Zahl. Und so als String mit Zitaten oder Apostrophen um ihn herum. Und dann außerhalb dieser Zeichenfolge, sage
ich einfach post.All ED. Und lassen Sie uns das ausprobieren. Wenn ich darauf klicke, geht es zum Detail Schrägstrich sechs. Gehen wir zurück zu unseren URLs und lassen Sie uns dies in Info ändern. Aktualisieren, warten Sie, bis Django neu gestartet wird. Aktualisieren Sie das. Klicken Sie erneut auf diese Schaltfläche. Und Sie können sehen, wie meine Links geändert wurden und die URL geht zu Info Schrägstrich sechs. Und es generiert es automatisch für all diese Bilder für uns, weil es in einer for-Schleife ist. Also, jetzt werde ich das einfach rückgängig machen, weil ich es mag, Detail genannt zu werden. Aber jetzt müssen wir uns keine Sorgen machen, wie hartcodierende URLs, was wirklich, wirklich nett ist. Lass uns weitermachen und diese ganze Sache anklickbar machen. Lasst uns das machen. Schrägstrich a. Und weil das einige Dinge darin hat, lassen Sie uns Stil, Anzeige, Inline, Block machen. Und diese ganze Sache wird jetzt anklickbar sein. Also, jetzt können wir gehen und Gully sehen, sieh dir diesen süßen Kuchen an. Irgendwie mollig, irgendwie süßes Ding, dieser süße Kuchen. Und wir können hierher zurückkommen. Nun, was wäre, wenn wir eine Art App machen
würden, wie fast wie eine mobile App. Und wir wollten hier eine Verbindung herstellen, die sagt, gehen Sie zurück. Das könnten wir auch auf unserer Detailseite werfen. Lassen Sie uns also unsere detaillierten Punkt-HTML und inneren Körper öffnen. Lassen Sie uns einen Link hinzufügen, einen HREF. Gehen Sie zurück, Schrägstrich a, und fügen Sie einen Pfeil, einen Pfeil nach links hinzu. Und hier können wir einfach geschweifte Klammer,
Prozentzeichen, URL, Feed sagen . Und ich glaube, wir nannten es Index. Wir werden in nur einer Sekunde nochmals nachsehen. Feed entspricht auch dem Namespace hier, so dass wir Feed hier verwenden und dann Doo-Doo-Doo-Index tun. Jetzt hat dies keine Art von Parametern in der URL, daher müssen wir uns keine Gedanken darüber machen, irgendwelche Parameter zu übergeben. Im Gegensatz zu, wenn wir die Post Detailansicht verwenden, wir sagten, Verwendung von Feed Doppelpunkt Detail. Und dann haben wir einen Parameter übergeben. Dieser hat keinen Parameter. Dies ist nur die Homepage. Es gibt keine Parameter, die übergeben werden müssen. Und so verwenden wir Feed-Doppelpunkt-Index, um voranzugehen und unsere Seite zu aktualisieren. Und da steht „Geh zurück“ und es bringt uns zurück auf unsere Homepage. Es wird nur weiter für uns arbeiten. Arbeiten Sie einfach weiter. Und so fügen wir URLs hinzu. In unserer nächsten Lektion. Lassen Sie uns voran und fügen Sie ein Formular hinzu, damit jemand ein Bild selbst hochladen kann. Und sie müssen keinen Administratorzugriff haben. So kann jeder Ihre Website besuchen und selbst ein Bild hochladen.
17. Ein Upload-Formular hinzufügen: Okay, lassen Sie uns eine Unterhaltung um diese Vorstellung von Formen führen. Wenn Sie also aus einem Hintergrund von Node.js kommen, können
Sie tatsächliche Formulare verwenden oder nicht, aber ist der richtige Weg, um
jede Art von Form zu verwenden , in dem Sie Daten hochladen oder etwas speichern, ist die Verwendung eines Formularelements das ist der richtige Weg, und so sollten wir es alle tun. Neue progressiven Web-Apps und Single-Page-Anwendungen überspringen diesen gesamten Prozess oft. wir nicht. Und das hält auch unsere Form schön und zugänglich. Wenn also jemand kein JavaScript ausführt oder einen alten Browser
verwendet, wird es immer noch für sie funktionieren. Meiner Meinung nach ist
dies eine Art besserer Weg, dies zu tun. Sie können immer später JavaScript oben drauf, um Sie zu bilden wirklich schick zu machen. Aber jetzt nehmen wir einfach eine regelmäßige Form an. Erste Dinge zuerst in unserem Feed, lassen Sie uns voran und erstellen Sie eine neue Datei namens Foren dot pi. Hier müssen wir von Django Importformulare tun. Jetzt wird das viel wie von Django DB wichtige Modelle aussehen, Klasse etwas Modelle Punktmodell. Sieh dir das an. Formular für Klassenpost. Das werden wir es nennen, Formulare, Punktform. Und das ist so ziemlich alles, was wir tun müssen, um ein Formular zu erstellen. Jetzt können wir ihm eine Art von Parameter geben, sind nicht Parameter, sondern ein Feld. Welches Zeug wollen wir in dieser Form anzeigen? Und wir tun dies mit wie Text ist gleich Foren dot char Feld. Und im Gegensatz zu unseren Modellen, in denen wir Modelle Punktchar Feld tun, tun
wir Formen Punktchar Feld. Lassen Sie uns auch ein Bild in Ihrem Bild hinzufügen ist gleich Formulare Punktdateifeld. Wir laden eine Datei hoch, was auch immer das ist, wir werden sie einfach hochladen. Wir werden uns nicht zu sehr um die Bild-Validierung oder so etwas kümmern. Wir werden einfach ein Bild hochladen oder
eine Datei hochladen und hoffen, dass
wir als Bild, weil dies ein Jangle one-to-eins-Kurs ist, nicht in die unauffällige und Komplexität von Django geraten. Wir wollen nur etwas Grundlegendes,
das funktioniert, das uns ein wenig Erfahrung gibt. Also haben wir Formulare dot pi mit einem Post-Formular hier. Lassen Sie uns unsere URLs Dot Py öffnen, und lassen Sie uns einen neuen Pfad erstellen. Und das wird eine neue Seite für uns erstellen, auf der jemand tatsächlich ein Bild posten kann. Und nennen wir es Post. Und dann muss es die Ansicht rendern. Und dieser Name wird sein, und das heißt hinzufügen. Wir werden ein Bild hinzufügen oder nein, lassen Sie uns mit Post bleiben. Sie werden ein neues Bild posten. Jetzt muss es eine neue Ansicht rendern. Woher sollen wir das bekommen? Lass es uns schaffen. Also zuerst, lasst uns es einfach hier nennen. Hinzufügen von Beitragsansicht, Punkt-Punkt-Punkt als Ansicht. Wir werden dafür eine klassenbasierte Ansicht verwenden. Und lassen Sie uns diese Ansicht „Post hinzufügen“ importieren. Und wenn ich auf „Speichern“ klicke, wirst du sehen, dass Django ein bisschen einen Freak draußen hat. Jep. Ansicht Beitrag hinzufügen, yada, yada, yada, yada kann nicht importiert werden. Wir wissen, dass es noch nicht existiert. Jangled, danke, dass du uns Bescheid gegeben hast. Gehen wir also in unsere Ansichten und lassen Sie uns hier eine neue erstellen. Jetzt wollen wir importieren. Eine Formularansicht. Und was das tun wird, ist, dass es uns erlaubt unserer Seite
zu posten, um tatsächlich Dinge hochzuladen. Gehen wir also voran und erstellen Sie diese neue Ansicht. Klasse, Ansicht Beitrag hinzufügen. Es wird eine Formularansicht sein. Was kommt nun in einer Formularansicht? Wir wissen es nicht. Gehen wir zurück zu CC-BY v. Gehen wir zurück auf die Homepage. Und wo ist unsere Formularansicht? Genau da, generische Formularansicht. Und so nimmt dies auch einen Vorlagennamen. Dies nimmt eine Formklasse an. Wo bist du? Form-Klasse? Und nettes. Und ich denke, es wird immer danach suchen, dass es eine Erfolg-URL ist. Also, wenn das Formular erfolgreich gesendet wurde, sagen
wir, es gab keine Fehler darin. Nehmen wir an, es wurde erfolgreich eingereicht. Wo soll es hin? Und es gibt hier auch eine Methode, mit der wir wirklich arbeiten wollen, und das ist unsere Form gültig. Wenn dieses Formular gültig ist, was es tun wird, wird uns
eine HTTP-Antwort Umleitung auf die get success URL geben . Folgen wir dem einfach. Ruft Zugriffs-URL ab Wenn es keine Erfolg-URL gibt, die wir festlegen werden, aber wenn es keine gibt, wird es sagen, falsch konfiguriert, andernfalls wird es diese Erfolg-URL zurückgeben. Also lass uns zuerst unsere Ansicht einrichten. Wir müssen ihm einen Vorlagennamen geben und nennen es neue post.html. Wir brauchen eine Formklasse und das wird etwas sein, das wir noch nicht sicher sind. Und ein Erfolg. URL, mindestens S Zugriffs-URL. Und lass es uns einfach wieder auf die Homepage gehen. Nun, diese Formklasse, was wird das sein? Diese Formularklasse wird Post-Formular sein. Und so müssen wir von DOT-Formular Importpost Formular zu tun. Scrollen Sie vom Formular zum Importieren von Formularen nach oben. Und wir können das hier unten ändern, um das Formular auch zu posten. Und sieh dir das an. Django beschwert sich nicht mehr. Wenn, wenn, wenn, wenn,
wenn, wenn wir gehen zurück hier und gehen Sie zu Was war das URL Schrägstrich Post. Heute gibt es keine Vorlage. Wir haben uns zweimal damit beschäftigt. Jetzt. Wir wissen, wie man damit umgeht. Wir müssen es einfach existieren lassen. Also, was ich hier tun werde, ist kein Basisdetail. Ich werde das nur als neue post.html speichern und einfach den Inhalt hier überschreiben. Laden Sie ein neues Bild wird der Titel sein und der Körper wird noch nichts sein. Es wird nur leer sagen. Boom, einfach so. Also, jetzt machen wir ziemlich schnell Ansichten. Jetzt müssen wir diese Ansicht irgendwie rendern. Wir müssen, wir haben nicht die Ansicht, sondern die Form. Wir müssen dieses Formular tatsächlich auftauchen lassen. Also lasst uns die Basis loswerden, lasst uns Modelle loswerden. Wir haben diese Ansicht Beitrag hinzufügen. Was können wir tun? Was sagt CCB V uns? Lassen Sie uns in Kontextdaten für Mixin gehen. Und wenn wir dieses Recht lesen, wenn Form nicht in Quarks, dann Quarks Form ist gleich Form zu bekommen. Wir wissen also, dass dies kein Kontext ist. Wir können Formular auf unserer Seite schreiben. Lassen Sie uns voran und schreiben Formular direkt in unsere Vorlage. Mal sehen, was das tut. Form. Hey, sieh dir das an. Das ist gar nicht schlecht. Und es gibt ein paar verschiedene Möglichkeiten, die wir tun können. Wir können Form Punkt ASU L. Und wenn wir mit der rechten Maustaste und inspizieren, gibt
es uns, dass ,
na ja, dies ist eine Tabelle sowie p, besser. Als Tabelle wie UL. Da gehen wir. Wie Sie auch, ich weiß nicht, warum es beim ersten Mal
als Tisch aufgetaucht ist. Das war irgendwie bizarr. Ich denke, das könnte nur alter Quellcode gewesen sein, den wir uns angesehen haben. Aber wie UL wird eine Liste erstellen, und lassen Sie uns das überprüfen. Wir haben jetzt ein Formular. Jetzt wird das nichts tun. Wenn ich hier reingehe und Enter drücke, gibt es kein Formular. Und wenn wir uns diesen Quellcode ansehen, haben
wir hier nur Verbündete. Und eigentlich, was ich tun werde, ist, dass ich als
p x verwenden werde . Ich möchte noch nicht mit Listen umgehen. Und so setzt sie einfach auf eine neue Linie. Cool, cool, cool. Aber wir müssen hier ein tatsächliches HTML-Formular hinzufügen. Django lässt uns also kontrollieren,
indem wir uns einfach die Innenseiten der Form geben. Wir können schreiben, was wir wollen auf die Außenseite des Formulars. Die for-Methode wird also post sein und die Aktion wird ihre eigene Seite sein. Dann lassen Sie uns ein neues div hier mit einer Schaltfläche erstellen. Und der Typ wird nicht Button sein, aber es wird Submit sein. Formular absenden, Schrägstrich Form. Schauen wir uns das an. Lasst uns diese Seite loswerden. Sieh dir das an. Wir haben eine Einreichung und lassen Sie uns das ausprobieren. Und ich werde Ihnen zeigen, dass das tatsächlich scheitern wird. Zuallererst sucht es nach dieser Sache, die als CSRF-Token bezeichnet wird. Und das ist ein siteübergreifendes Anforderungsfälschungstoken. Und im Grunde stellen Sie sicher, dass die Leute das Formular von Ihrer Website absenden. Und wir fügen eines dieser sehr leicht hinzu, indem wir geschweifte Klammer, Prozentzeichen, CSRF, Unterstrich-Token machen. Lassen Sie uns fortfahren und versuchen Sie es erneut und aktualisieren Sie die Seite. , bla, bla, bla, bla. Und Bild hier drin. Und wir werden sehen, dass das auch scheitert. Es besagt, dass dieses Feld erforderlich ist. Gehen Sie weiter auf ein anderes Bild. Es besagt, dass dieses Feld erforderlich ist. Wieder. Was ist hier los? Wir fügen das da drin hinzu. Jetzt ist die Sache, wenn Sie Bilder oder Dateien jeglicher Art hochladen,
jeder Art auf einem Formular, benötigen
Sie diese Sache, die einen Tintentyp genannt wird. Und wir machen mehrteilige Schrägformulardaten. Und das erlaubt uns, Dateien von unserem Browser an den Server zu senden. Lassen Sie uns fortfahren und speichern Sie diese Aktualisierung. Oh, das wollen wir nicht tun. Wir wollen eine harte Erfrischung machen. Das ist ein neues Foto. Lassen Sie uns das speichern oder nicht speichern, aber lassen Sie uns das hinzufügen. Ich scanne dieses Bild hier. Okay, ein mich zurück auf die Homepage. Das war die Anfrage oder die Anfrage, aber das war die Erfolgs-URL, die wir geschrieben haben, die herkam, wo sind wir hier? Die Erfolgs-URL ging direkt zu ihr nach Hause zurück. Nun, wenn wir hier zurück zu unserem Admin gehen, lassen Sie uns unsere Beiträge überprüfen. Sind Post existiert noch nicht. Wir müssen ein gültiges Formular hinzufügen, das hier veröffentlicht wird und einen neuen Beitrag mit den Daten erstellen. Also haben wir diese Methode namens def Form gültig. Es nimmt sich selbst und Form an. Gehen wir zurück zu CC-BY V und Formular gültig hier. Und was wird das tun? Dies wird eine HTTP-Antwortumleitung an die Erfolg-URL zurückgeben. Im Gegensatz zu unseren Kontextdaten, wo wir Kontext gemacht haben, ist gleich super. Und dann ein paar andere Sachen, die wir nicht tun werden. Wir werden tun, um Superpunktform gültig mit einem Formular dort zurück. Und lassen Sie uns das Kleinbuchstaben machen. Und dann können wir hier drinnen sagen, drucken, das war gültig. Und lassen Sie uns genau wie Spam oder Terminal damit. Und gehen wir weiter und gehen zurück, um Schrägstrich Post neues Bild. Und wieder, das wird noch nicht sparen. Und es gibt, es gibt einen einfacheren Weg, dies zu tun. Wir könnten ein Modellformular verwenden, wenn wir wollten. werden wir noch nicht machen. Wir werden es einfach mit einem normalen Formular halten. Also lasst uns voran gehen und das einreichen. Und wir werden sehen, dass unser Terminal ein bisschen Ehegatten Angriff hat. Es sagt, das sei immer und immer wieder gültig. Das Formular selbst war gültig. Nun, wenn wir die Daten aus dem Formular wollen, können
wir immer drucken Formular Punkt bereinigte Daten, das sind die validierten Daten. Also, wenn jemand versucht hat, HTML oder JavaScript oder irgendetwas dort drin zu schreiben, wird es es für uns reinigen, was wirklich schön ist. Django erledigt das nur für uns. Text. Das könnten wir einfach ein paar Mal ausdrucken. Gehen wir zurück zu Schrägstrich Post wird eine URL für diese ziemlich bald hinzufügen. Dies ist mein Text, wo das Herz. Und es sieht so aus, als hätte es nichts getan, als sagt, dass dies mein Text mit dem Herzen ist. Und so jetzt, was wir tun können, weil dieses Formular sauber ist, wissen
wir, dass Formular Punkt gereinigt Texte mit Text als Wörterbuchschlüssel druckt den Text, der in der Form war. Vermutlich wird das Bild auch funktionieren. Also, wenn wir zurück zu Formularen gehen, haben
wir Text ist gleich Foren Punkt char Feld, und Bild ist gleich Formen wie Dateifeld. Lassen Sie uns voran und erstellen Sie einen neuen Beitrag. Also müssen wir einen neuen Beitrag erstellen. Nun, bevor wir das tun, müssen wir Ihren Beitrag in der Tat importiert, was es ist. Und dann können wir das neue Objekt sagen, weil alles ein Objekt ist gleich post.Alle Objekte dot erstellen. Und wenn wir einen Blick auf unsere Modelle werfen, ist
es auf der Suche nach Text als Keyword und Bild als Keyword. So, jetzt können wir sagen, dass Text gleich Formularen Punkt gereinigt Datentext ist. Und das Bild ist gleich Formulare Punkt bereinigt Datenbild. Und wenn es fertig ist, wenn es fertig ist, das zu speichern, wird
es uns zurück auf die Homepage schicken. Lass uns sehen, ob ich hier Fehler gemacht habe. Schrägstrich Pfosten. Das ist mein neuestes Bild. Und wer lässt Freunde Lego Set. Und sagt, oh, Namen bilden sich nicht in Ordnung zu finden
, weil, wo Sie, es ist nicht seine Form bildet. Und der Grund, dass es Form ist, ist, weil es hier als Wortform übergeben wird, als Argumentform. Gehen Sie weiter und versuchen Sie es noch einmal. Und eine nette kleine Sache, die wir hier tun können, ist, wenn Sie so etwas sehen, können
Sie einfach Ihre Seite aktualisieren. Und es wird sagen, hey, denn das war eine Post-Methode. Möchten Sie es noch einmal versuchen? Wir sagen ja, versuchen es noch einmal. Scrollen Sie nach unten Und das ist mein neuestes Bild. Das ist mein Lego-Set, das ich letztes Wochenende gemacht habe. Wir werden Freunde setzen. guter Letzt müssen wir einen Link zu dieser aktuellen Ansicht hinzufügen. Sonst werden die Leute nicht wissen, dass das existiert. Gehen wir also zu unserer Home-Ansicht und fügen wir einen Link hinzu. Ein href entspricht dem Hinzufügen eines neuen Beitrags. Und machen wir einen Pfeil nach rechts. Und dies wird zu URL-Feed-Beiträgen gehen. Und wo ich das bekomme, ist wieder, Feed, das ist der App-Name, das ist der Namespace, den wir verwenden und der Name-Post. Es ist also immer Namespace-Doppelpunkt, der Name der Ansicht. Drei frisch. Oh, das sieht ein bisschen knornig aus. Lassen Sie uns hier ein HR hinzufügen. Nur eine horizontale Regel. Da gehen wir. Neuen Beitrag hinzufügen. Wir können einen neuen Beitrag hinzufügen. Cool, cool, cool, cool, cool, cool, cool, cool. Und lasst uns wieder Pantry Bauch hinzufügen. Scrollen Sie nach unten und wir sehen Kuckuck, Kuckuck, der mit Gullies Bauch da drin wird. Okay, das ist fantastisch. Das funktioniert jetzt tatsächlich. Soweit diese Lektion betrifft, ist dies abgeschlossen. In der nächsten Lektion lassen Sie uns jedoch die neuesten Beiträge ganz oben auftauchen.
18. Sorting: In Ordnung, lassen Sie uns die neuesten Beiträge ganz oben hier auftauchen. Und so ist dies der älteste,
zweitälteste, drittälteste Post . Sie können sogar sehen, dass es zuerst genannt, zweite, dritte. Dies ist das neueste Bild, Kuckuck cool. Das ist das, was wir im letzten Video hinzugefügt haben. Lasst uns das rückgängig machen. Also lasst uns hier in unsere Ansichten eingehen. Schließen wir all das Zeug und lassen Sie uns einfach so tun, als würden wir von vorne anfangen. Wir müssen auf unsere Ansichten eingehen. Wir müssen unsere Homepage-Ansicht sehen. Und wir haben im Grunde alle unsere Beiträge durchlaufen, alle verfügbaren Beiträge in unserer App. Und so sagen wir post.Alle Objekte dotieren alle, das wird alle Objekte zu bekommen. Und dann können wir sagen, Punkt Reihenfolge unterstrichen durch, und wir können es nach Texten oder einer anderen Form bestellen. Und so können wir es nach seinem Text oder nach seinem Text absteigend sortieren. Oder wir könnten es nach seiner ID sortieren, was es standardmäßig tut, oder seine ID absteigend. Und wenn ich hier auf „Erfrischen“ klicke, werden
wir sehen, dass diese Bestellung hier klappt. Es wird komplett umgekehrt sein, genau so. Und es ist zufällig das erste und letzte Bild sind genau die gleichen. Aber das war das neueste. Dies ist die zweitneueste, 1 drittneueste, 1, viertneueste und die älteste. Und alles, was wir dort gemacht haben, war, dass wir gesagt haben,
hey Django ,
hol alle Post-Objekte, hol sie alle und bestelle sie dann nach der ID. Und wir wissen, dass es einen Ausweis hat. Jedes Modell verfügt standardmäßig über eine ID. Und es ist sogar innere Migration hier, es heißt ID-Reihenfolge nach ID absteigend mit einem Minuszeichen. Wenn wir dies gesagt haben, ist dies das, was es standardmäßig tut und es wird 12345678910 bestellen. Wenn wir absteigen, wird
das 10987654321 gehen. Und das ist alles, was wir tun müssen. Als nächstes werfen wir einen Blick darauf, wie wir eine Art Nachricht auf
unserer Seite hinzufügen können , wenn ein neues Bild hochgeladen wird. Denn wenn wir ein neues Bild hochladen, bringt uns
das einfach zurück zu dieser Seite und wir wissen nicht wirklich, ob etwas passiert ist. Ich meine, ich denke, wir könnten sehen, dass das
ein neues Bild ist , und wählen wir das Bild von ihnen, Katlyn. Und es taucht oben auf, damit wir sehen können, dass es dort funktioniert. Aber was ist, wenn Sie viele Benutzer haben, die dies verwenden? Möglicherweise können Sie Ihr Bild nicht zuerst sehen. Jemand könnte eine Millisekunde nach eingereicht haben, und es wird zeigen, dass 1 zuerst und Ihre irgendwo verloren gehen könnte. Wir wollen eine Nachricht zeigen. In der nächsten Lektion werden wir über Jangle-Nachrichten sprechen.
19. Django messages: Okay, reden wir über Django-Nachrichten. Eine Nachricht ist also im Grunde eine Möglichkeit,
ein wenig Informationen von einer Seite zur anderen zu senden , aber sie tut es nur einmal. Wenn Sie also mit der Idee von Sitzungen vertraut sind, erstellt es
im Grunde eine Sitzung und sobald auf diese Sitzung zugegriffen wird, löscht sie sie. Und so wollen wir eine kleine Nachricht und eine kleine Sitzung hinzufügen. Und wenn jemand dieses Formular ausfüllt und es ihn zurück zu dieser Seite bringt, sollte
es sagen, Hey, Sie haben erfolgreich ein Bild hinzugefügt. Und das ist wirklich, wirklich einfach zu tun, in diesem kommt mit Django drei automatisch
gebacken. Also lassen Sie uns unseren Editor hier öffnen, und lassen Sie uns Feedansichten Dot Py öffnen. Und zuerst, lasst uns voran gehen und importieren. Wir gingen zu aufgrund von go dot contrib, Ich glaube con trPb Import Nachrichten. Wenn Sie jetzt Django lernen und mit einem vorhandenen Django-Projekt arbeiten, müssen
Sie in Ihre Einstellungen gehen und sicherstellen, dass Nachrichten darin enthalten sind. Wenn wir also unsere Einstellungen öffnen und Nachrichten eingeben, Django-Vertragsnachrichten in R installierten Apps,
es ist in unserer Middleware, und es ist auch in unseren Template-Kontext-Prozessoren, was bedeutet, dass es zu jedem hinzugefügt werden kann einzelne Vorlage. spielt keine Rolle, was Ihre Vorlage ist, sie kann einfach automatisch automatisch hinzugefügt werden. Und so müssen Sie sicherstellen, dass Sie die drin haben. Also für jetzt werden wir von Django.com Reise wichtige Nachrichten zu tun, scrollen Sie nach unten zu unserem Formular. Und wenn dieses neue Objekt erstellt wird, lassen Sie uns eine neue Nachricht hinzufügen. Und so können wir eine neue Nachricht mit Nachricht Punkt hinzufügen Nachricht. Es nimmt eine Anfrage standardmäßig. Lassen Sie uns Nachrichten tun, um Erfolg zu haben. Es gibt verschiedene Typen. Wir werden in nur einem Moment einen Blick auf die Docks werfen, Ihre Post war erfolgreich. Und lassen Sie uns Django-Nachrichten docks eingeben, das Nachrichten-Framework. Und so sagt es uns, dass wir
all diese Dinge in unserer Middleware installiert haben müssen Apps,
Kontakt-Prozess, Kontexte, Prozessoren, et cetera, et cetera, Speicher-Hintergründe, Nachrichten-Level. Ok, also hier habe ich Nachrichten bekommen, Punkterfolg und sind keine Nachrichten. Es sind Nachrichten, das habe ich importiert. Nachrichten, Punkt hinzufügen Nachricht, Nachrichten, Punkt zum Erfolg. Und hier habe ich Erfolg bekommen. Also, wenn es erfolgreich war, werde ich eine Erfolgsmeldung geben und dies wird in unserer Vorlage zugänglich sein. Wenn es eine Info gab, könnten wir Nachrichten Punkt-Info,
Debug, Warnung oder Fehler verwenden . Also haben wir diese fünf Optionen. Ich werde mit Erfolg gehen, weil ich weiß, dass das gut mit Bootstrap funktionieren wird. Da Bootstrap normalerweise wie hat, denke
ich, es ist B G Dash Erfolg oder Text Punkt Dash Erfolg, so etwas. Also weiß ich, dass ich denke, dass alle diese funktionieren könnten, außer für Debug. Aber ich will diese überschüssige Farbe auf der Straße. Und ja, wenn wir in Nachrichten-Tags hinuntergehen, sagt uns das tatsächlich. Erfolg wird uns den Tag Erfolg geben, und das wird in unser HTML,
CSS Attribut, unser Klassenattribut, gesetzt werden . Und wie machen wir das dann? Es heißt, eine Nachricht hinzuzufügen. Also importieren wir unsere Nachricht, das haben wir schon getan. Nachrichten Punkt Nachricht hinzufügen. Es nimmt Anfrage als ersten Parameter. Ein Nachrichtentyp ist, dass info success, debug, error, et cetera, und dann die Nachricht selbst. Und so hier sind ein paar verschiedene Beispiele. Und wenn wir Nachrichten anzeigen möchten, können
wir diese einfach kopieren und einfügen. Lass uns das machen. Vorerst wird das in Ordnung sein. Wir können das etwas später aufräumen. Also lasst uns das retten. Und lassen Sie uns in Vorlagen gehen, die auf HTML basieren. Es ist in der Nähe der Datenbank eins. Und weil dies in jeder einzelnen Vorlage zugänglich ist, weil es sich in einem Kontextprozessor befindet, was bedeutet, dass es zugänglich ist. Und jede Vorlage, die wir jetzt sagen können, wenn es Nachrichten gibt, erstellen Sie eine Liste, eine ungeordnete Liste und dann jede Nachricht mit einem LI durchlaufen und sagt, wenn es Nachrichten-Tags gibt, fügen Sie die Tags hier hinzu, das wird dies sein Zugriff oder Debuggen. Oder was waren die anderen? Info Erfolg, Warnungsfehler und Debug. Und wenn, und dann die Nachricht selbst. Es wird also alle durchlaufen. Und wir können mehrere Nachrichten haben , die wichtig sind, zu wissen, und deshalb durchlaufen wir diese. Jetzt gehen wir weiter und versuchen es. Und ich werde Ihnen zeigen, dass dies tatsächlich eine Form eines Fehlers hat. Das wird nicht funktionieren. Und ich wähle einfach ein beliebiges Bild aus. Und es sagt, Oh, Name Fehler, Name Anfrage ist nicht definiert. Hier ist das knifflige Ding, und du wirst das zur Kenntnis nehmen wollen, denn wenn du vorwärtskommst, wird
dies ein Lebensretter sein. Der erste Parameter in der Anzeigennachricht ist also Anfrage. Wenn wir zurück zu unserem Code hier in Form gültig gehen, haben
wir keine Anfrage, wir haben uns selbst und wir haben gebildet. Also, wie bekommen wir Anfragen? Wir befinden uns hier in einer Formularansicht. Werfen wir einen Blick auf, wo Request existiert. Ruft ab, wenn Sie das Formular erhalten. Wenn Sie also das Formular anzeigen, können Sie auf die Anforderung zugreifen, ihre Dispatch-HTTP-Methode erlaubte Optionen Post und Setup nicht. Und was wir hier wollen, ist, dass wir tatsächlich Versand wollen. Also, wenn diese Ansicht versandt wird, wenn sie gerade ist, wenn sie gerendert wird, was wird sie tun? Und so gehen wir weiter und kopieren Sie einfach diese Zeile. Und weil es hier Anfragen hat, aber unsere Methode in dieser Form gültig hat keine Anfragen, aber wir können tun, ist taub versandt Selbstanfrage args, Quarks. Ich kopiere das buchstäblich von hier aus. Def hat Self-Request-Argumente, Quarks, Return Super Dot Dispatch-Anfrage Args und Quarks versandt. Und so buchstäblich zu diesem Zeitpunkt sagen wir,
hey, Django, Wir wissen, dass Sie eine Versandmethode haben. Ich möchte Sie nur wissen lassen, dass ich möchte, dass Sie diese Versandmethode verwenden. Ehrlich gesagt, das ist sinnlos, aber es wird weniger sinnlos, wenn wir diese
self.age Anfrage tun ist gleich diesem Anforderungsobjekt. Und weil wir in einer Klasse waren, können
wir self.age Anfrage woanders verwenden. So können wir jetzt self.age Anfrage hier eingeben, weil es hier zugegriffen wird. Der Dispatch wird ausgeführt, bevor das Formular gültig ist. Also wird es das für uns festlegen und dann können wir auf self.age Anfrage die Straße hinunter zugreifen. Probieren wir das aus. Lassen Sie uns einfach diese Seite aktualisieren. Generieren Sie eine neue Nachricht. Und ich werde jedes Bild schnappen. Es spielt keine Rolle. Und da steht, dass Ihr gepostet erfolgreich war. Und das kommt von unserem Basispunkt-HTML. Es steht in einer ungeordneten Liste. Und lasst uns mit der rechten Maustaste klicken und das untersuchen. Wir haben eine URL mit einer Klasse von Nachrichten, wir haben eine LI mit einer Klasse von Erfolg und darin hat Ihr Beitrag erfolgreich war. Wir haben eine UL-Klasse von Nachrichten. Es wird jede Nachricht durchlaufen. Wir haben ein LI mit Nachrichten-Tag, Message-Punkt-Tags. Das war Erfolg, der von hier kommt. Und dann ist die Nachricht selbst, dass Ihr Beitrag erfolgreich war. Es steht die Nachricht da drin. Und das ist alles, was es gibt, um Nachrichten hinzuzufügen. Also wirklich alles, was wir tun müssen, ist Nachrichten, Punkt hinzufügen Nachricht. Es nimmt eine Anfrage, es muss genau dieses Anforderungsobjekt annehmen. Es dauert eine Art von Nachrichtentyp oder ein Tag. Also sagen wir Nachrichten, Punkte,
Zugang, weil das erfolgreich war. Und dann unsere Nachricht selbst in unserer Basisvorlage, weil wir möchten, dass dies auf jeder Seite angezeigt wird. Es spielt keine Rolle, wo es auf jeder Seite angezeigt werden soll. Wir werden sagen, wenn es Nachrichten gibt, Kuckuck, Kuckuck, cool, durchlaufen diese Nachrichten und zeigen sie an. Sehen Sie sich das an, wenn ich hierher zurückgehe und es die Seite aktualisiert, diese Nachricht verschwindet, es ist sehr temporär. Es existiert nur ein einziges Mal.
20. Bootstrap 5 hinzufügen: Okay, lassen Sie uns ein Front-End-Thema hinzufügen. Und dafür werden wir Bootstrap fünf verwenden. Also gehen wir zu getbootstrap.com. Und wir werden das verwenden, was ich mit fünf Version fünf Beta eins sein werde. Vielleicht zu dem Zeitpunkt, zu dem Sie das sehen, waren auf einer anderen Version. Das ist cool. Und es spielt keine Rolle. Lasst uns einfach anfangen. Wir brauchen dieses CSS. Lass uns weitermachen und das kopieren. Dies kommt von einem Content-Delivery-Netzwerk. Wir brauchen das JavaScript noch nicht. Ich meine, wenn Sie möchten, können Sie es hinzufügen, aber wir werden einfach das CSS hinzufügen und wir möchten das CSS auf jeder Seite hinzufügen. Also, was wir tun werden, ist, es einfach hier reinzufügen. Und das wird es zu jeder Seite hinzufügen. Und deshalb haben wir diesen Basispunkt-HTML. Es wird es zu unserer Detailseite, unserer Homepage und
unserer neuen Beiträgsseite hinzufügen , und sehen Sie sich dies an. Wenn ich mich erneuere, wirst du sehen, dass es ein bisschen anders aussieht. Nur ein bisschen anders. Hey, es setzt einfach Dinge für uns zurück. Jetzt gehen wir weiter und fügen Sie eine Navigationsleiste hinzu. Und lasst uns, ich denke, es ist in Komponenten. Wir werden es Navbar finden. Und suchen wir einen, den wir mögen, und kopieren Sie ihn einfach. Wir können den HTML-Code jederzeit später ändern. Welchen wollen wir? Gibt es einen einfachen? Und das ist ziemlich einfach. Das ist ein guter. So haben wir wie einen Titel wie Image Sharer, unsere Homepage, Adipozyten. Und das ist eigentlich alles, was wir brauchen. Lass uns weitermachen und das kopieren. Und weil wir das auf jeder Seite wollen, werfen
wir diesen inneren Basispunkt-HTML. Jetzt werde ich ein paar Dinge hier loswerden, direkt von der Fledermaus. Navbar, ich will nicht, dass das Navbar heißt. Ich möchte, dass dies Image Sharer genannt wird ,
weil das ist, was wir erstellt haben und das geht nur auf die Homepage. Also geht es einfach direkt zum Schrägstrich. Es benötigt keine spezielle URL. Weil Schrägstrich immer die Homepage einer Website ist. Wir können nach Hause gehen. Und wieder, das ist nur, weil wir das Setup haben, wir könnten Schrägstrich verwenden oder wir können URL, Feed-Index verwenden. Und wieder, woher das kommt, ist, wenn ich Ansichten dot py schließe, gehe zu URLs dot py, Feed-Index. Das wird uns einen Schrägstrich geben, genauso wie hier oben. Es ist zufällig, dass es vorangestellt ist. Wenn wir wollten, dass die Homepage so etwas wie Schrägstrich nach Hause
ist, wird das automatisch für uns geändert. Eigenschaften. Wir wollen keine Preise und wir wollen nicht deaktiviert. Und anstelle von Features, nennen
wir dies neues Bild hinzufügen. Und wir müssen dies mit unserem Feedpost verknüpfen. Und woher das kommt, ist Feedpost. Und das geht zu dieser URL hier. Lass uns voran gehen und sehen, wie das aussieht. Vielleicht sieht das schrecklich aus. Ich bin mir nicht wirklich sicher. Hab Blicke. Okay, damit kann ich leben. Ich schätze, es macht uns eigentlich 100%. Das ist nicht schlecht. Damit kann ich leben. Jetzt lasst uns weitermachen und ihr einige unserer Inhalte hierher schicken. Und wir werden sagen, inneren Basispunkt-HTML. Und lasst uns das vielleicht zuerst aufräumen. Ich bin ein Stickler für netten sauberen Code. Okay, also habe ich das einfach aufgeräumt. Und wir wollen all unsere Inhalte zentrieren. Lassen Sie uns also einen Blick auf Container in Bootstrap fünf benutzerdefinierte Content-Layout-Container werfen. Und das ist genau das, was wir wollen. Wir wollen enthalten oder vielleicht wollen wir einen Container in normaler Größe. Und so weiter. Ein extra großer Bildschirm wird 1320 Pixel breit sein. Auf einem, das ist eine extra, extra große. Ich wusste nicht, dass sie das getan haben. Jetzt gibt es ein extra großes für es zu 1140. Groß ist neun siebenundsechzig, fünfundzwanzig vierzig. Alles, was darunter liegt, ist 100%. Verwenden wir einen Kommentator. Und mal sehen, was das tut. Cool. Diese Art von zentrierte es für uns. Das ist gut. Lasst uns diesen Link loswerden, weil wir den schon da drin haben. Und woher kam das? Das kam von uns zu Hause, glaube ich. Ja, genau da. Lass uns das loswerden. Schön. Und was wir tun können, ist, dass dieses Navi tatsächlich viel Platz in Anspruch nimmt. Also, was wir hier sagen können, ist gehören, enthält Schrägstrich, navbar index.html. Und lassen Sie uns das alles kopieren,
nicht kopieren, sondern ausschneiden. Wir werden abschneiden. Und dies wird auf unseren Templates Ordner für einen Unterordner namens include, und dann eine Datei namens navbar dot HTML suchen. Lass uns das machen. Neue Datei enthält Schrägstrich, nope, enthält Rechtschreibung es rechts, Schrägstrich, Nav Bar Punkt HTML einfügen. Und jetzt basieren auf HTML. Sieht wieder schön und sauber aus, stellen wir sicher, dass das funktioniert. Das ist in der Tat funktionierende Schönheit, Schönheit, Schönheit. Was wollen wir noch hier machen? Lasst uns diese Karten machen oder so. Also, was wollen wir es hier? Ich denke, das wird in Bootstrap eine Komponente genannt. Es ist eine Karte. Ja, das ist genau das, was wir wollten. Wir wollen ein Bild mit etwas Text und dann einen Link, um das gesamte Bild anzuzeigen. Lass uns weitermachen und das kopieren. Und wir werden diese innere For-Schleife auf unserer Homepage werfen. Unsere Homepage. Lass uns das loswerden. Lassen Sie uns das loswerden. Und lassen Sie uns einfach etwas Platz für die Arbeit schaffen. Und wir wollen nur ersetzen, wissen Sie, wie das Bild SRC mit diesem Bild hier drin, oder diesen Text mit Postdoc-Text. Also lassen Sie uns eigentlich voran und beginnen, einige Operationen zu machen. Gehen wir weiter und schneiden Sie das und setzen Sie es direkt in unseren Absatz, und das wird unser Text sein. Wir brauchen keinen Kartentitel. Wenn Sie möchten, können Sie Ihr Modell auf einen Titel erweitern. So könnte jedes Bild einen Titel haben. Geh irgendwo hin. Wo soll das hin? Und das wird dieser Link hier sein. Und statt zu sagen, gehen Sie irgendwo, Lassen Sie uns den Text sagen Vollbild sehen. Und dann müssen wir dieses Thumbnail-Zeug nach unten verschieben und das verschieben. Und bewegen Sie das nach oben. Und was wir brauchen, ist diese Bild-URL. Also greifen wir diese Bild-URL. Und das Alt könnte sein, was ich Ihnen schreiben werde. Wohin werden wir das Bild, die Breite und die Höhe wegwerfen. Und wir werden diesem eine Klasse von Kartenbild geben, das bereits mitgeliefert wurde. Und so schätze ich, wo ich es gebe, haben wir es schon gegeben. Und lasst uns das retten. Und lasst uns das alte Zeug hier oben loswerden. Bereinigen Sie das, machen Sie es schön damit Leute, mit denen Sie arbeiten und Sie nicht hassen, weil Sie sehr schlampigen Code schreiben. Okay? Nicht schlecht, nicht schlecht. Diese sind aber alle auf ihrer eigenen Linie. Das ist nicht ganz das, wonach wir suchen. Wir wollen, dass all das eine Kolumne ist. Also lassen Sie uns voran und erstellen Sie eine neue Zeile. Und das ist nur Wissen aus dem alten Bootstrap. Wir erstellen eine Zeile, verschieben dieses div nach unten. Und dann wollen wir für jeden Beitrag eine neue Spalte erstellen. Also könnten wir Spalte SM machen. Wenn es klein ist. Nehmen wir sechs Punkt col md für Hit Tab m. Es erledigt automatisch den Rest für mich. Hey, nicht schlecht, nicht schlecht. Könnte besser sein, aber das ist nicht schlecht. Und eigentlich sollte ich mir das Layout hier
ansehen und den Zeitplan des Doks im Raster ansehen. Wir haben also Coalesce m. Wir wollen nur sicherstellen, dass es in Bootstrap fünf gleich funktioniert, da es
Bootstrap für Bootstrap drei, et cetera, et cetera, et cetera nicht mag. Weil ich vielleicht den falschen Klassennamen geschrieben habe. Da gehen wir. Es gibt eine Beispielspalte, große T2. Das ist nur der Beweis, dass das, was ich gesucht habe, das Richtige war. Also auf einem Medium, lasst uns eigentlich drei machen. Lass uns das etwas kleiner machen. Da gehen wir. Und es braucht ein wenig Abstand über und unter jeder Karte. Und was passiert, wenn ich das loswerde? Okay? Und es funktioniert in Ordnung? Unter jeder Karte, lassen Sie uns Marge, unten vier. Aber tun Rand, oben und unten vier. Da gehen wir. Und sieh dir das an. Wir haben eine schöne kleine Bildergalerie. Lassen Sie uns voran gehen und sehen Sie sich dieses Bild an. Okay, also, weißt du, an der Basis wurde Zeug angewendet. Das war nett. Gehen wir weiter und räumen das ein bisschen auf. Lassen Sie uns also unser detailliertes Punkt-HTML öffnen. Und wir brauchen keinen Go-Back-Link, denn das ist jetzt in der Navigationsleiste, es ist zu Hause oder fügen Sie ein neues Bild oder das Logo. Wenn es ein Logo gab, brauchen wir das nicht mehr. Der Text und das Bild sind alles, was wir brauchen. Und lasst uns weitermachen und das reaktionsschnell machen. Und ich weiß nicht, was das eigentlich in Bootstrap ist. Also lassen Sie uns eine reaktionsschnelle Bildsuche machen. Und wir wollen Bildflüssigkeitsklasse. Img Flüssigkeit. Okay? Okay, nicht schlecht. Könnte besser sein, glaube ich. Mal sehen, was wir sonst noch tun können. Wir haben Bild, Thumbnail, Cool. Abgerundet. Ist es das, was wir wollen? Ja. Ja. Ja, machen wir das. Lassen Sie uns das Bild gerundet machen. Ich habe mich wirklich aufgeregt über das abgerundete. Und das wird uns nur schöne abgerundete Ecken geben. Lass uns weitermachen und das vielleicht auch in eine Art Rho werfen. Rho mit einem Anruf SM, sagen
wir zehn, so klein und oben wird eine Spaltenbreite von zehn sein. Bewegen Sie das nach oben. Und ich denke, es ist Offset Kohle, kein Offset SM One, schätze ich. Hat es eingegeben. Und lassen Sie uns voran und fügen Sie der oberen Polsterung eine Polsterung hinzu, Top fünf. Das macht es einfach für uns runter. Und lassen Sie uns vielleicht Polsterung unten fünf hinzufügen. Also auf der linken und rechten Seite könnten wir
Padding X machen oder oben und unten könnten wir Padding y p, y fünf machen. Und es sieht so aus, als hätte es nichts anderes getan, als hier unten Polsterung hinzugefügt. guter Letzt haben wir unsere Beitragsseite. Diese Seite sieht schrecklich aus. Gehen wir weiter und reparieren das. Könnte die genauso gut schließen. Lassen Sie uns New Post und diese Schaltfläche tun, lassen Sie uns diese Schaltfläche ändern. Klasse, BTN, BTN-Erfolg, schätze ich. Cool. Das hat für mich funktioniert. Was haben wir für Formulare? Okay, also kommt das direkt hinein. Und wir haben vielleicht nicht wirklich all diese Kontrolle. Wir tun es nicht, weil viel davon für uns innerhalb von Django gehandhabt hat. Wir haben keinen Zugriff auf das Etikett, keinen einfachen Zugriff auf das Etikett. Wir können tatsächlich keinen Zugriff auf das Label bekommen und
alle Formularfelder durchlaufen und ein Formular selbst erstellen. Es ist etwas fortgeschrittener. Also werden wir das nicht in Django 101 abdecken. Aber was wir tun können, ist, wenn wir etwas CSS schreiben wollten, was wir nicht tun werden, aber wenn wir etwas CSS schreiben wollten, könnte
man alles in Ihrem Formular sagen. Mit einem, sagen wir, ein Eingabetyp von Text könnte dann diese Art von Feld sein. Und Sie können es mit SAS und solchen Dingen erweitern. werden wir nicht hineinkommen. Lassen Sie uns diese Seite einfach ein wenig aufgeräumter aussehen. Also lassen Sie uns hier eine Klasse hinzufügen. Klasse wird Kohl S M für Offset sein. Schnelle Mathematik hier. Und 12 minus vier ist acht geteilt durch zwei ist vier. Das wird es zentrieren, weil es 12 Spalten in Bootstrap gibt. Und fügen wir einen Titel zu einem H zwei hinzu und laden Sie hier ein Bild hoch. Und lassen Sie uns auch etwas Polsterung hinzufügen. Polsterung oben fünf, Rand oben und unten fünf. Und an diesem Punkt experimentiere ich wirklich nur, um das halb anständig aussehen zu lassen. Und was dieser Knopf größer sein, um btn dash LG. Da gehen wir. Nehmen wir nun an, wir wollen Text und Bild neu anordnen. Also wählt jemand zuerst das Bild und bewertet dann Text. Lassen Sie uns zu unseren Foren dot pi gehen. Und lasst uns das einfach neu anordnen. Ich ziehe das einfach nach oben und unten. Also wird das erste Bild sein und das zweite wird sicher besteuert werden, damit Django neu geladen werden kann. Aktualisieren. Und da ist es, Bild zuerst, Text später. Und sagen wir, wir wollten
diesen Text nicht nennen , weil wir sehen, dass er hier Text und Bild genannt wird, ihr Bild ist in Ordnung. Ich denke, ich gehe einfach weiter und ändere das Etikett. Label wird Beschreibung sein. Es wird immer noch Text im Python Code sein, im Django-Code. Aber das Etikett wird stattdessen Beschreibung sagen. Also anstelle von Text hier, wird
es gemeinsames Laden für mich sagen. Beschreibung, genagelt. Genau so. Last but not least, wenn wir ein Bild hochladen, haben
wir Nachrichten, wir müssen eine Nachricht anzeigen. Und so wird das oft vermisst, weil es sagt, wenn Nachrichten dann etwas tun, was wir hier tun werden, ist eigentlich, dass wir dies
außerhalb der if-Anweisung entwerfen und dann den Code darin einwickeln. Gehen wir also zurück zu Bootstrap und lassen Sie uns eine Hintergrundfarbe machen. Hintergrundfarben. Ooh, lass uns einen Gradienten machen. Das gefällt mir. Und so können wir Texterfolg haben. Wer würde sich das ansehen? Wir haben hier jede Menge Omega. Bg Erfolg, weil wir Erfolg auch für Nachrichteninformationen verwenden, Inselchen. Wo ist der Farbverlauf? Ja, das ist es, was wir wollen, BG Erfolg und BG Gradient. Also lasst uns weitermachen und hier eine neue Bar erstellen. Und werfen wir das einfach da rein. Sie sicher, dass der Text zentriert ist. Und der Text wird weiß sein, damit wir ihn lesen können. Dummy-Text hier drin. Mal sehen, wie das aussieht. Oh, sieh dir das an. Es ist über als f bar. Das sind zwei Warnungen. Verschieben wir die Navbar nach oben. Okay, cool. Hallo, lassen Sie uns etwas Polsterung hinzufügen. Polsterung, oben und unten wird Polsterung Y-Achse sein. Lass uns vier machen. Okay, das gefällt mir, damit kann ich leben. Jetzt müssen wir das wieder in die if-Anweisung verschieben. Und wir können die Nachrichten-Tags machen. Es wird hier sein. Weil wir wussten, dass es ursprünglich Erfolg war. Wir werden es einfach da reinwerfen. Und dann werden wir das auch in eine if-Anweisung einschließen. So wie das. Und alles, was ich mache, ist ein bisschen HTML-Operation hier. Und das ist eine einfache if-Anweisung. Dann können wir anders als Standard sagen, immer zurückgreifen, anstatt vielleicht haben wir ihm keine Nachricht gegeben. Nehmen wir an, es muss immer wieder zum Erfolg zurückkehren. Es heißt also hier, wenn es Nachrichten-Tags gibt, drucken Sie diese Nachrichten-Tags aus. Andernfalls verwenden Sie Erfolg. Und wenn wir brauchen, dann verschieben Sie diese Nachricht. Und wieder, kleiden Sie ein paar Operationen hier, Paste. Und schließlich für und dann runter. Und da gehen wir. Also, jetzt sagt das, wenn es Nachrichten für Nachrichten und Nachrichten gibt, lassen Sie uns voran und stylen ein div, aber die Nachricht darin. Und lassen Sie uns ein neues Bild hinzufügen. Und stellen wir sicher, dass das tatsächlich funktioniert. Testen einer Django-Nachricht. Jetzt war Ihr Beitrag erfolgreich und aufgrund zu tun, muss
ich das Backup verschieben und das wird dann wieder nach unten. Sehen wir uns noch ein Beispiel an. Nur, nur um dieses Haus wirklich zu fahren, nur um sicherzustellen, dass Nachricht in ihrer sagt, dass Ihr Beitrag erfolgreich war. Jetzt haben wir noch eine Sache zu beachten. Was ist, wenn Sie hier eine brandneue Anwendung haben und niemand sie benutzt? Es gibt keine Bilder. Lassen Sie uns voran und löschen Sie alle diese Bilder und wir gehen in Beiträge. Schnappen Sie sie alle. Löschen, los. Ja, lösche sie. Nichts taucht auf. Sieht nicht der Größte aus, oder? Was wir tun können, ist auf unserer Homepage, denn das ist, wo wir alle unsere Beiträge in unserer for-Schleife durchlaufen, können
wir sagen, wenn es leer ist, richtig Zeug hier. Und da steht Zeug hier schreiben. Weil da nichts drin ist. Lassen Sie uns voran und fügen Sie hier auch etwas Styling hinzu. Also sind wir bereits in einer Reihe, wir müssen nur eine Spalte hinzufügen. Also Kohle SM sechs Punkt Offset drei. Lassen Sie uns diesen Text zentrieren und geben Sie ihm eine Polsterung oben und unten von fünf, Rand oben und unten fünf als auch. Viel Abstand. H2, Begrüßungsabsatz und einen Absatz. Fügen Sie Ihr erstes Bild und eine Schaltfläche, eine HREF. Das werden wir in einer Sekunde ausfüllen. Klasse ist gleich btn, btn, LG, BTN Erfolg. Weil wir hier mit dem grünen Thema gehen. Bild hochladen. Und das brauchen wir nur, um irgendwohin zu gehen. Wir wissen, wie man diese URL, String Feed, posten, laden Sie ein Bild hoch, das unser erstes Bild ist. Und lasst uns auch Golly machen, denn er ist super süß. Das ist eine Galeere. Es gibt ein schönes Bild. Es gibt Schlucht, Wir sind unsere App einfach so gemacht.
21. Dein projekt: Ok, willkommen zu deinem Projekt. Wir haben gerade eine ganze Django-App von Grund auf in diesem Kurs in Django 101 erstellt.
Was ich möchte, dass Sie tun, ist, wenn Sie nicht mitverfolgt haben, ich möchte, dass Sie versuchen, diese App von Grund auf neu zu erstellen. Es wird ein wenig Recherche nötig sein. Möglicherweise müssen Sie auf die Django-Dokumente zugreifen, möglicherweise müssen
Sie auf diese schöne Website zugreifen. Es ist eigentlich nicht schön, aber es ist sehr, sehr informativ. Ist CC-BY v dot CIO dot UK. Sehr, sehr hilfsbereit. Möglicherweise müssen Sie auf die Bootstrap-Dokumente zugreifen, möglicherweise müssen Sie ein wenig recherchieren. Es wird nicht super einfach sein, aber es wird eine großartige Erfahrung sein. Oder wenn Sie wollen, müssen
Sie es nicht unbedingt von Grund auf neu machen. Sie können all meinen Quellcode nehmen. Sie können immer den Quellcode als auch von GitHub.com
Slash Caleb Talia Schrägstrich Django Dash herunterladen , eins zu eins. Stellen Sie sicher, dass Sie dem Read Me folgen. Ich werde eine Lese mich dort schreiben und dann können Sie einfach folgen. Sie können es auf Ihren Computer klonen und es selbst einrichten und dann einfach ändern. Ich möchte, dass Sie es schön aussehen
lassen, es aussehen lassen und erstaunlich handeln. Also haben wir die ganze Back-End-Arbeit erledigt. Sie können jetzt einfach nur Spaß mit der ganzen Front-End-Arbeit haben. Im Front-End macht die Arbeit wirklich, wirklich Spaß. Sie bekommen, um es wirklich interaktiv, bunt und schön zu machen. Sie können es aussehen lassen und verschiedene Dinge tun. Aber im Wesentlichen sollten Sie ein Projekt wie dieses auf
Ihrem Computer haben , das ein Bild aufnimmt, es
hochlädt und ein Miniaturbild anzeigt, und dann haben wir eine Detailansicht in Django. Fühlen Sie sich frei, es nach Herzenslust zu modifizieren. Und da Sie ungelernte Aktie sind, haben
Sie einen dedizierten Projektabschnitt. Es ist ein kleiner grüner Knopf, der mein Projekt sagt oder so etwas. Sie können auf diese Schaltfläche klicken und Sie können Screenshots Ihres Codes und wie es funktioniert hinzufügen. Oder Sie können ein Video hinzufügen, wenn Sie möchten, Sie könnten ein Video auf YouTube aufstellen und mir zeigen, dass Ihr Projekt funktioniert und ich kann Ihnen Tonnen Feedback geben, wenn Sie möchten.
22. Zusammenfassung: In Ordnung, du hast es geschafft. Du hast den ganzen Django 101 durchgemacht. Es sind ein paar Stunden her. Wir haben eine, eine coole Image-Sharing-Anwendung von Grund auf neu gemacht. Übrigens, wenn Sie es nicht wussten, ist
das im Grunde, was Instagram war. Instagram wurde mit Django gemacht. Unsere sieht einfach ein bisschen anders aus. Ihre könnte genau wie Instagram aussehen, wenn Sie es wollten. Aber noch einmal wollte ich mich nur bedanken, dass Sie diesen Kurs absolviert haben. Ich bin sehr stolz auf dich, dass du den ganzen Weg durchgemacht hast. Vergiss nicht, du kannst mir immer auf Twitter bei Caleb Italian folgen. Oder wenn Sie Beschichtungstipps und Tricks wollen, können
Sie Codierung Punkt für Punkt alle auf Instagram folgen. Und wenn Sie jemals stecken bleiben oder jemals Hilfe
für irgendetwas Web-Entwicklung brauchen ,
kommen Sie mit und lernen, auf Facebook zu programmieren. Es ist eine völlig freie Gruppe. Alles, was Sie brauchen, ist ein Facebook-Konto. Nochmals vielen Dank, dass du diesen Kurs genommen hast und diese
Zeit mit mir verbracht hast und hoffentlich sehe ich dich in der Zukunft.