Transkripte
1. Willkommen zu intermediate (Django 201): Hallo und willkommen zu Django 200 one. In diesem Kurs werden wir
eine ziemlich große Anwendung namens Heute erstellen , habe ich gelernt. Und in dieser Anwendung werden Sie in der Lage sein, sich abzumelden,
außer neuen Benutzern, neue Anmeldungen. Sie werden in der Lage sein, neue Beiträge mit Ajax zu erstellen. Zum Beispiel, hallo Welt mit ein wenig Herz dort. Und es zeigt sich hallo Welt. Sie können diese Seite sogar als detaillierte Seite anzeigen und dann diesen Link teilen, wenn Sie möchten, gibt es detaillierte Konten. Benutzerprofile sind ein weiterer Begriff dafür. So Benutzerprofile können Sie auch Menschen folgen und entfolgen. Und es gibt ein bisschen Hausaufgaben zwischen ein paar Lektionen dort. So können Sie eine Menge von der Arbeit tun, die Sie mir genau folgen können. Aber am Ende werde ich dich auch dazu drängen, ein bisschen alleine zu machen. Nun ist das Schöne hier, dass es auch eine neue Create-Ansicht akzeptieren wird. Also gehen wir voran und öffnen Sie in neuer Registerkarte, neue Ansicht erstellen, helloworld zu, zu, zu, zu, zu, zu. Und es zeigt sich mit hallo auf 2.2.2. Jetzt habe ich absichtlich ein paar Bugs hier und da eingeführt, die ich möchte, dass du auch löst. Und das wird großartige Erfahrungen sein, wenn Sie ein professioneller,
echter Entwickler sind und jeden zweiten Tag Django schreiben. Hi, ich erzähle Caleb und ich schreibe seit einigen Jahren Django. Ich bin ein professioneller Webentwickler und schreibe Django jeden Tag für einen Lebensunterhalt. Ich habe mit Kunden wie nasa, der NHS, Mozilla, Samaritaner und vielen, vielen anderen Organisationen da draußen gearbeitet, sowohl lokal als auch wirklich große Organisationen. Also, wer benutzt Django? Wie Instagram, YouTube, Pinterest diskutieren viele große,
große Unternehmen verwenden Django und es wird von Python unterstützt,
was wirklich, wirklich mächtig ist. Jetzt, um das Beste aus diesem Kurs herauszuholen, müssen
Sie Python kennen. Du wirst etwas ziemlich starkes Python kennen müssen. Weil wir klassenbasierte Ansichten schreiben werden. Und klassenbasierte Ansichten bedeuten im Grunde nur, dass wir objektorientierte Programmierung schreiben werden. Wir werden Klassen schreiben. Und du gehst, wirst du wissen müssen, wie der Unterricht funktioniert. Und wenn Sie bereits ein wenig vertraut mit Klassen sind, aber Sie sind nicht super vertraut. Das ist völlig in Ordnung. Sie werden viel Übung mit Klassen in diesem Kurs bekommen. Wir werden auch von Grund auf neu anfangen. Und ich gehe nicht davon aus, dass du irgendetwas weißt. Wenn du also noch nie einen Django-Kurs absolviert hast, ist der
Diskurs immer noch für dich. Es könnte ein bisschen schnell sein und Sie könnten immer noch gehen und überprüfen, oh jingle, eins zu eins. Aber dieser Kurs wäre für Sie immer noch lebensfähig. Hallo, ich bin Caleb Italiener und danke für die Überprüfung meiner Django 200,
eine Klasse, in der wir eine Today I lernte App machen und ich hoffe, Sie drinnen zu sehen.
2. Eine virtuelle Umgebung erstellen: Okay, willkommen zur ersten Lektion in Django 201A. Zuerst müssen wir eine virtuelle Umgebung erstellen. Es gibt also ein paar verschiedene Möglichkeiten, wie wir das tun können. Aber vor allem, lassen Sie uns voran und erstellen Sie einen neuen Ordner. Also, was ich tun werde, ist eine neue Datei hier zu erstellen. Ich werde es test.py speichern nennen. Ich gehe auf meinen Desktop und nenne diesen Django 200. Nun, das sieht so aus, als hätte es nichts getan, aber was ich jetzt tun kann, ist Datei geöffnet. Und ich kann tatsächlich diesen ganzen Ordner auswählen. Und es wird es hier links öffnen. Jetzt können wir test.py sehen. Ich werde das löschen. Ich wollte nur den Ordner auf der linken Seite öffnen. Und was ich jetzt tun kann, ist zu View gehen und ich möchte mein Terminal öffnen. Nein, das war das Falsche, aber die Terminals sind da. Und es gibt ein paar verschiedene Möglichkeiten, wie wir das tun können. Also lasst uns weitermachen und das einfach zusammenbrechen. Und ich werde das nur noch einen Hauch größer machen. Vergrößern Sie die ganze Art und Weise. Und so können wir wirklich alles in Bezug auf virtuelle Umgebungen tun. Wir können ein PIP-Add-In verwenden, das ich in diesem speziellen Modul in Django zu einem verwenden werde. Oder wir können Python dash m verwenden, dann können wir einen normalen V und V ein dann könnten wir Docker verwenden, wenn wir wollten oder vagrant oder virtueller env Wrapper. Was ich tun werde, ist einfach,
einfach pip zu verwenden, um damit zu beginnen. Also, wenn du Pip nicht hast, Pip, zeig Pip env. Und Sie sollten bereits PIP und alles haben, weil Sie ein Python Entwickler und Sie bereits ein wenig grundlegenden Django kennen. Also sollten Sie PIP haben. Jetzt habe ich pip 20, f.11 Punkt 15 installiert. Es spielt keine Rolle, welche Version Sie haben, solange es sich um eine aktuellere Version handelt. Wenn Sie das nicht sehen, wenn es so aussieht, wird
das sagen, fehlt, Sie sind tatsächlich infizieren, sagen nichts. Also, wenn Sie nichts sehen, was Sie tun müssen, ist pip install Pip env. Und es sagt schon für mich, dass die Voraussetzung erfüllt war. Also, jetzt kann ich weitermachen und ich werde diese Art von Pip installieren Django löschen. Und das wird weitergehen und eine neue hippe Umgebung für mich schaffen. Und es wird Django installieren, wie wir unten links sehen können, steht
Django zu installieren und es ist wenig Laden Thing und Sperren Sache. Und jetzt, um in eine virtuelle Umgebung zu gelangen, können
wir Pip env Shell tun. Und jetzt können Sie sehen, dass wir uns in unserer Pip-Umgebung befinden. Wir können Pip Show Django machen, und das wird uns ihre Django-Seite zeigen. Jetzt wird nur eine virtuelle Umgebung erstellt. Wir werden Django noch nicht einrichten. Das werden wir im nächsten Video machen. Um nun aus der Kontrolle zu kommen, sollte C oder Control D einfach nur Sie da rausbringen. Andernfalls können Sie, wenn
Sie möchten, immer Python dash m dot VN tun. Und das ist ein anderer Weg. Ja, sieh dir das an. Vs Code ist schlau genug, um zu erkennen, was dort vor sich ging. Dann können wir es tun und nicht Python, aber wir wollen Quellpunkt v1 machen, das ist der Ordnername. Und dann aktivieren und das bringt uns hier rein. Und dann können wir Pip zeigen Django zum Beispiel. Nun, ich werde keinen Venn benutzen, ich werde Pippen benutzen, aber du kannst benutzen, was auch immer du willst. Oder wieder, Sie können Docker oder jedes andere System, das Sie wirklich bevorzugen, verwenden. Also werde ich einfach deaktivieren, um hier zu verschwinden. Pip, Pip bringt mich wieder
rein und nur um zu beweisen, dass ich echte Zelle habe, die Pip machen kann, zeigen Sie Django. Und das hat tatsächlich nicht geklappt. Ich glaube, Yahya, wir haben hier etwas Lustiges getan. müssen wir, weil ich hier zwei virtuelle Umgebungen habe und sie widersprüchlich sind. Ich bin wirklich froh, dass das aufgetaucht ist, ist
ich meine, ich werde einen von ihnen löschen müssen. Also, was ich tun werde, ist RM Dash R, F dot. Und dann, um einfach wieder rein zu kommen und wir machen nur vorbeugende Shell. Nun, wenn Sie in ein Ding laufen, das etwas sagt,
wie es bereits aktiviert ist. Und du darfst nicht hineinkommen. Wir können das tun, ist, dass Sie einfach Ihr Terminal schließen und ein neues öffnen können. Und dann kannst du vorbeugende Shell machen und das bringt dich wieder da rein. Manchmal macht VS-Code dieses seltsame kleine Ding, wo er denkt, dass es immer noch in einer virtuellen Umgebung ist, aber es ist eigentlich nicht. Das ist also genau der Weg, um das zu umgehen. Stellen Sie also sicher, dass Sie eine virtuelle Umgebung installiert haben. In der nächsten Lektion werden wir weitermachen und tatsächlich ein brandneues Django-Projekt
starten.
3. Start eines neuen a: Okay, lass uns weitermachen und tatsächlich ein Django-Projekt starten. Wenn ich Ihnen die Akten zeige, die ich hier links habe, gibt es hier nicht viel. Ich habe eine Pip-Datei und eine Pip-Datei, Dot Loc. Lassen Sie uns zunächst voran gehen und in unsere Pip-Umgebung einsteigen. Es spielt keine Rolle, welche Art von Umgebung
Sie verwenden, Sie müssen nur darin sein. Ich benutze Pippin, nur weil es schön und einfach ist. Und hier drinnen wollen wir Pip Show Django machen. Jetzt, wenn Sie nicht Django haben, können Sie immer pip installieren Django und das wird einfach Django für Sie installieren. Ich werde das nicht ausführen, weil ich es bereits habe. Nein, kratzen Sie das. Ich werde dir zeigen, wie es aussieht. Es tut nichts, weil ich es bereits habe. Also, weil wir Jenga haben, was wir tun können, ist Django dash admin, Projekt starten. Und das wird TIL sendet für heute, Ich lernte TIL. Jetzt können Sie sehen, es erstellt einen Ordner für uns hier drüben namens TIL. Es wurde hoch und so drin geschafft. Eigentlich, was ich tun will, ist, dass ich
das in denselben Ordner werfen möchte , in dem ich bereits mit meiner Pip-Datei und Pip-Datei Dot Loc bin. Und was ich tun werde, ist der gleiche Befehl, Django, dash admin, Projekt TIL Space
starten und dann nur einen Punkt treffen. Und das wird ein Projekt direkt in meinen Ordner hier installieren. Es wird also keinen Ordner namens TIL erstellen, es wird ein Projekt namens TIL innerhalb meines aktuellen Ordners erstellen. Also lassen Sie uns Dot Pi verwalten ist neben meiner Pip-Datei und kompilierten Dot Loc. Genau wie es, weil es eins weniger ist. Was ist das Wort, nach dem ich suche? Verzeichnisse ein also Verzeichnis, es ist ein Ordner weniger, mit dem man sich befassen muss. Jetzt zu diesem Zeitpunkt können wir weitermachen und wir können unsere App ausführen. Wir können alle möglichen Dinge innerhalb von Django erledigen. So können wir zum Beispiel Python verwaltete up.py Run Server
0.0.0 Punkt 0 Doppelpunkt 8 Tausend schreiben . Und das wird mir sagen, wir haben eine angewandte Migrationen jetzt sollten Sie etwas mit Django bereits vertraut sein. In diesem Fall sollten Sie in der Lage sein, Ihre Migrationen auszuführen. Sie verwalten einfach Python dot py migrieren, und dies wird Ihre Migrationen ausführen. Dies stellt einfach diese db.json-Datei für uns bereit. Und dann können wir unseren Server wieder betreiben. Wir sehen diesen Fehler nicht mehr. Und lassen Sie uns voran und öffnen Sie localhost Doppelpunkt 8 Tausend in jedem Browser, den Sie wollen. Und Sie sollten diese Seite sehen. Sobald Sie diese Seite haben, sind Sie auf und laufen mit Django, Simple so. In der nächsten Lektion gehen wir weiter und fügen einige Git Ignorieren hinzu,
ignorieren Sie Dinge, so dass, wenn Sie
Git verwenden und Sie wahrscheinlich Git und GitHub,
GitLab oder Bitbucket oder eine Art Versionskontrolle verwenden sollten , die wir nicht versehentlich Dateien wie unsere db.json markieren drei Datei.
4. Eine a hinzufügen: Okay, wenn Sie also Git verwenden, können
wir hier einen Git-Status machen und wir können sehen, dass wir diese Datei db.json Ende drei haben. Jetzt, wenn Sie gerade angefangen haben, Git zu verwenden , werden
Sie git init verwenden wollen. Und das wird nur ein Git-Repository innerhalb von, na ja,
nicht wirklich ein vollständiges Repository erstellen , aber es wird aktivieren, um in Ihr Projekt für Sie. Und anstelle von dem, was Sie hier sehen und den Status von nur db.json H3 erhalten. Du wirst jede Akte hier sehen, einschließlich deines db.json H3. Und was wir tun wollen, ist, dass wir diese Datei und eine Reihe anderer Dateien ignorieren wollen. Was wir also tun werden, ist hier drüben, wir werden eine neue Datei erstellen, die einen Punkt genannt wird , um GIT IG und ORE dot git zu ignorieren. Und wenn ich das nur ein bisschen
runterschiebe, meine ich, klebt hier nicht ein paar Sachen ein. Und Sie können das direkt aus dem Quellcode bekommen, während es zu viele Zeilen gibt, um
durchzugehen und wirklich nur viele verschiedene Szenarien abdeckt. Python erstellt oft ein Verzeichnis namens Pi-Cache. Zum Beispiel. Wir wollen nicht als Scheibe,
var Räder, allerlei Sachen hier drin haben . Dies sind nur Standard-HTML- und Python Einstellungen und allerlei Sachen, aber wir können Django hier stopfen sehen. Hier ist ein wenig mehr anwendbar auf das, was wir schreiben. db.json x3 und db.json drei dash journal. Dadurch wird sichergestellt, dass diese Dateien nicht versehentlich zu einem Repository hinzugefügt werden. Und wenn ich das wieder vermasselt habe, speichern
wir diesen Gitignore und ich kann einen Git-Status machen. Wir werden sehen, dass gitignore nicht hier ist, aber db.json a3 ist nicht da drin. Und das ist genau das, was wir wollen. Und so werden wir in Zukunft alle möglichen Sachen ignorieren. Aber für jetzt wollen wir nur wirklich die häufigsten Dinge wie Lüftungsöffnungen ignorieren. Wir
wollen absolut nicht aus irgendeinem Grund, unsere gesamte virtuelle Umgebung,
eine Pip-Datei und IPIP file.js übergeben . Ok, das ist völlig in Ordnung. Es gibt nicht viel Inhalt hier drin. Und das wird völlig in Ordnung sein. Aber wenn Sie eine virtuelle Umgebung verwenden würden, ein v und v, dann hätten Sie einen ganzen Ordner mit vielen Dateien, die Sie versehentlich festschreiben könnten. Und das bedeutet nur, dass jemand genug ist, um viel mehr herunterzuladen, viel mehr Inhalte von GitHub später. Und das ist nur ein Schmerz im Hintern. Und sie werden auf die Versionierungsprobleme stoßen und es ist einfach, es ist schwierig. Stattdessen werden wir diese Dinge ignoriert. Und eines der Dinge, die wir ignorieren wollen, und Sie können sehen, dass das jetzt tatsächlich ausgegraut ist, ist mein db.json a3. Und das liegt nur daran, dass, wenn ich einen Benutzer erstelle, mein Passwort da drin haben wird. Es wird verschlüsselt sein, aber es wird immer noch mein verschlüsseltes Passwort da drin haben und das ist nicht gut. Wir wollen nicht, dass wir das nirgends aufstellen wollen. Wir wollen das auf Ihrem Computer aufbewahren, es schön und sicher halten. Schnee. Sie können voran gehen und git tun, dot git ignore
hinzufügen. Und dann können Sie git commit und dann Ihre Nachricht machen. Und ich werde das begehen. Und in der nächsten Lektion werden wir mit der
Einrichtung unserer ersten App innerhalb von Django vorankommen .
5. Deine erste App: In Ordnung, lassen Sie uns weitermachen und unsere erste App starten. Also, wenn wir das tun, wir tun Pip nth, werden wir in unsere virtuelle Umgebung zu bekommen, wir laufen Python verwaltet Hochlauf Server, 0.0.0, dass ich einen Punkt 0 Doppelpunkt 8 Tausend sowieso verpasst habe, das wird uns erlauben, Wenn wir meinen Browser hier öffnen,
Firefox, können Sie sehen, dass unsere Websites auf und läuft. Und wenn wir zum Schrägstrich Admin gehen, sollten wir in der Lage sein, sich anzumelden. Wir haben noch keine Protokollierung, also lassen Sie uns einen Login erstellen. Also gehen wir zurück zu unserem Terminal. Und was ich tun werde, ist, dass ich hier eine Spaltung eröffne. Also werde ich Jangle auf der linken Seite laufen lassen und ich
werde einige Befehle auf der rechten Seite schreiben und ausführen. Also kann ich Pip Shell machen, um hier wieder rein zu kommen. Und ich kann Python Dot Py verwalten, Superuser erstellen. Und was das tun wird, ist, mich nach einem Benutzernamen zu fragen. Ich werde sagen, mein Benutzername ist Caleb-Kilobyte. Caleb Dot IO Das Passwort wird sein, was auch immer mein Passwort sein wird. Und genau das ist der Grund, warum wir
unsere SQ Lite-Dateien nicht festschreiben , weil ich gerade ein Passwort eingegeben habe. Ich will nicht, dass jemand versuchen kann, dieses Passwort zu knacken. Ob es sich um ein gutes Passwort handelt oder nicht, spielt keine Rolle. Ich will nicht, dass jemand dieses Passwort kennt. Also, gehen wir zurück. Und ich habe einen Benutzer namens Caleb mit einem Passwort von Guam erstellt und ich werde es sagen. Und das bringt mich in meinen Django-Admin. Und jetzt können wir Gruppen und Benutzer verwalten, gehen Sie in Benutzer. Und ich schaffe es nur mich selbst. Ich bin der einzige Benutzer da drin. Okay, also haben wir jetzt einen Django-Admin erstellt, einen Super-User erstellt. Lassen Sie uns voran und erstellen Sie unsere erste App. Also, um unsere erste App zu erstellen, was wir tun müssen, ist, vielleicht kann ich einfach, ja, lassen Sie uns das ein bisschen machen. Python verwaltete Dot Py, starten Sie App, starten Sie nicht Projekt, es ist Start-App. Und dann werden wir diesen App-Feed nennen. Wenn wir einen Git-Status in hier machen, können wir sehen, haben wir einen neuen Ordner namens Feed. Wir hatten hier einen neuen Ordner namens Feed, und es hat alle möglichen Sachen drin. Gehen wir weiter und machen uns auf. Heute habe ich gelernt und unsere Einstellungen und inneren Einstellungen, wir sollten hier installierte Apps sehen. Installierte Apps und direkt unter dem Django-Zeug, wollen
wir nur feed eingeben. Und das stimmt einfach mit dem Ordnernamen hier überein. Und in der Tat, wenn wir in Apps gehen, können
wir Apps dot pi innerhalb unseres Feeds sehen. Die Feed-Konfiguration oder die APP_CONFIG. Sein Name heißt Feed, und das ist, warum wir es Feed innerhalb von installierten Apps nennen. Jetzt mit diesem KMZ Dateien wie Ihre Ansichten, Testmodelle, Apps, admin init, Migrationen mit einer leeren init Datei darin. Das ist eine Standard-Django-App. An dieser Stelle sollten Sie immer noch ziemlich vertraut sein. Ich gehe weiter und verpflichte das und dann gehen wir zur nächsten Lektion über , wo wir unser erstes Modell namens Post erstellen.
6. Dein erstes Modell: Ok, willkommen zurück. Also hier drüben habe ich viel auf dem Bildschirm vor sich. Ich habe alle meine Akten auf der linken Seite. Ich habe meine Bearbeitung oben, oben rechts, in der Mitte unten hier haben wir Django laufen. Und unten rechts ist, wo ich eine Reihe von Befehlen
ausführen werde und zu jedem Zeitpunkt kann
ich das einfach verschieben. Und wenn du jetzt nur einstimmst und wie, oh, hey, wie hast du das bekommen? Alles, was ich tun muss, ist, einen geteilten Bildschirm zu bekommen ist, hier drüben auf dieses kleine Split-Symbol zu klicken. Also in dieser Lektion, was ich tun möchte, ist, dass ich Modelle dot py öffnen wollte, und ich möchte ein brandneues Modell erstellen. Jetzt wird dieses Modell zunächst ziemlich nackte Knochen sein, und wir werden es ein wenig später hinzufügen. Also lassen Sie uns Klasse Post-Modelle, Punkt-Modell tun, und dies wird ein neues Modell zu erstellen, eine neue Datenbank ist keine Datenbank, sondern eine neue Tabelle innerhalb unserer Datenbank. Und wir wollen es geben, ein Text ist gleich Modellen dot, nicht TextField, char Feld. Und weil heute habe ich gelernt, in dieser Anwendung wird viel wie Twitter sein, wo man wirklich nur eine bestimmte Anzahl von Zeichen posten kann. Nehmen wir an, Sie können nur etwas wie 240 Zeichen posten. Maxlength ist gleich 240. Und die Idee ist, dass Sie einfach posten, was Sie heute lernen, und alle anderen können folgen und sehen, was Sie heute lernen, und Sie können dem Rest der Welt erzählen, aber was Sie lernen, alle möglichen Sachen wie das. Also lassen Sie uns voran und erstellen Sie eine neue tatsächlich, lassen Sie uns das für eine Sekunde überspringen. Ich möchte Ihnen zeigen, wie das funktioniert. Also haben wir dieses neue Postmodell. Gehen wir voran und tippen Sie. Zuerst mal, lasst uns, da gehen wir. Das ist dort etwas sichtbarer. Python verwaltete dot pi und ich bin gerade in meiner virtuellen Umgebung. Führen Sie Migrationen durch. Und was dies tun wird, ist eine neue Migrationsdatei namens initial zu erstellen. Und was das tun wird, ist, dass es keine Abhängigkeiten hat. Und das wird einfach sagen, hey Django, wenn Sie diese Datei in Python ausführen, erstellt ein neues Modell namens post, und es hat Felder ID und Text darauf. Jeder Beitrag hat also standardmäßig eine ID, obwohl wir sie nicht angegeben haben. Und wir sagten, Textmodelle char Feldlänge von 240. Textmodelle Zeichen Feldlänge von 240. Nun, das ist cool. Das hat gerade die Akte gemacht, die gar nichts getan hat. Lassen Sie uns voran und geben Sie Python managed dot py migrate ein. Und was das tun wird, ist, diese Datei für uns auszuführen. Und Sie können sehen, dass die Anwendung von Feed 001 Unterstrich anfänglich, alles war in Ordnung. Jetzt ein wenig später, wenn wir uns diese Beiträge in unserem Admin ansehen, werden
wir sehen, dass dies als ein lustiger Name erscheint. Und wenn wir zu diesem Punkt kommen, werden
wir ändern, wie dieser Name tatsächlich aussieht. Aber vorerst habe ich gesagt, dass wir das jetzt angehen werden. Wir werden das in der Zukunft in Angriff nehmen, wenn wir es erreichen. Also werden wir die Dinge eins nach dem anderen anpacken, wenn Probleme auftreten. Und das ist sehr ähnlich, wie wir im wirklichen Leben programmieren. Das ist also alles, was wir für diese spezielle Lektion tun müssen. Alles, was wir tun mussten, war ein neues Modell namens post zu erstellen. Geben Sie ihm ein Feld namens Texte, wo die maximale Länge von 240. Und dann haben wir, Python geschafft, hohe Make-Migrationen. Python hat hohe Migrationsraten verwaltet. Und wir sind gut zu gehen.
7. Die Modellierung vom Django admin: In Ordnung, sagen wir, wir wollen in der Lage sein, Beiträge über unseren Django-Admin zu verwalten. Also gehen wir in unseren Django-Admin und wir sehen dort
keine Beiträge und wir müssen das jetzt registrieren. Was wir also tun können, ist in unserem Feed, in unserem Admin Dot Py und es muss in dieser Datei gehen. Das ist, wo Django sucht. Es ist vor allem, wir werden von DOT-Modellen Import Post sagen. Und wir sagen, Punktmodelle, Punkt ist dieser spezielle Ordner, Modelle sind das Modul oder die Datei. Also lassen Sie uns das schließen. Admin dot py sagt diesen bestimmten Ordner hier in, und dann suchen Sie nach Modellen hoch hier, importieren, posten. Und dann können wir das Modell hier eintragen. Und die Registrierung ist wirklich einfach. Wir werden eine einfache Form der Registrierung verwenden. Also werden wir Klassenpost admin, admin,
dot Model, admin, admin, wenn ich das richtig buchstabieren kann. Und wir werden keine Einstellungen hinzufügen. Noch nicht, wenn Sie wollten, können
Sie auf jeden Fall einen Blick auf die Django-Dokumente werfen und Ihre eigenen Einstellungen hinzufügen. Aber im Moment wollen wir nur, dass alles zugänglich ist und es gibt sowieso
nur ein Feld auf diesem speziellen Postmodell. Es ist also nicht so, dass wir wirklich zu viel tun können. Also, jetzt müssen wir Admin Register Website sagen und wir müssen diese beiden verbinden. Wir müssen Post mit Post Admin verbinden, und das wird unsere Post verbinden. Hier ist Models.swift Modell mit unseren Beiträgen Admin, die mit admin, dot Modell admin. Also lasst uns voran gehen und das speichern. Und lasst uns hier drinnen erfrischen. Und dort sehen wir Feed
und Beiträge, und wir haben noch keine Beiträge drin. Lassen Sie uns voran und erstellen Sie unseren ersten Beitrag. Unser erster Beitrag, sparen. Und es steht Post-Objekt eins. Das ist das Seltsame, worüber ich in der letzten Lektion gesprochen habe. Lasst uns voran gehen und das tatsächlich ändern. Und das ist wirklich einfach zu tun. Alles, was wir tun müssen, ist unser model.predict zu öffnen. Und innerhalb unserer Post Klasse hier erinnern Einrückung ist wichtig. Taub TR, selbst, das sind zwei Unterstriche nebeneinander. Also Unterstrich, Unterstrich, STR ,
Unterstrich, Unterstrich selbst, weil
jede Methode in einer Python Klasse immer selbst als ersten Parameter nimmt. Dann können wir sagen zurück Selbstpunkt-Text. Und lassen Sie uns das so abschneiden, dass es wie die ersten 100 Zeichen ist. Und warte einfach, bis Django neu geladen wurde. Und da gehen wir hin. Hier steht unser erster Beitrag. Und lassen Sie uns das editieren. Speichern Sie es. Und es steht bearbeitet. Da gehen wir. Wir haben jetzt unser Postmodell beim Django-Admin registriert.
8. Ein DateTimeField zu deinen Posts hinzufügen: Alles klar, willkommen zurück. Wir haben einen Beitrag und wir haben einen Text darin. Wir wissen nicht, wer diesen Beitrag geschrieben hat, das werden wir später hinzufügen. Und wir wissen nicht, zu welcher Zeit der Beitrag erstellt wurde. Also lassen Sie uns voran und fügen Sie zuerst das Datum hinzu. Das Hinzufügen der Daten wird viel einfacher sein. Also, was wir hier tun wollen, ist einfach Visual Studio-Code zu öffnen. Und in unseren Modellen Dot Py Datei, wo unser Beitrag unsere Post-Klasse ist, wollen
wir sagen, Datum ist gleich Modellen dot Datetime-Feld, kein Datumsfeld. Ein Datumsfeld wird nur der Tag sein. Ein Datetime-Feld wird das Datum,
das Jahr, Monat, Tag, plus die Stunde, Minute Sekunden sein. Und hier drinnen wollen wir sagen, dass Auto jetzt gleich wahr ist. Jedes Mal, wenn wir einen neuen Beitrag erstellen, sagen
Sie einfach, dass dieser Beitrag zu diesem bestimmten Zeitpunkt erstellt wurde. Also müssen wir gar nichts tun. Django wird das für uns erledigen. Wir müssen uns nicht darum kümmern, es zu aktualisieren oder einzufügen oder irgendeine Art von Datenbankarbeit zu erledigen. Django erledigt es einfach magisch für uns. Nun, das ist alles schön. Und es wäre schön, wenn wir nur unsere Seite aktualisieren müssten. Aber wenn Sie Ihre Seite aktualisieren und Sie so etwas wie keine solche Spalte sehen, bedeutet
das einfach, dass Sie einige Dinge in Ihrer Datenbank ändern müssen. Und um das zu tun, machen wir Migrationen. Python hat also hoch gelungen, Migrationen machen. Und Python verwaltete Dot Py migrieren. Und gehen wir zurück zu unserem Code hier. Nicht unser Code, aber unser Browser und es funktioniert. Und unser Datumsfeld wird nicht angezeigt. Und unser Datumsfeld sollte eigentlich nicht auftauchen. Unser Datumsfeld sollte nicht editierbar sein. Automatisch macht es jetzt standardmäßig nicht editierbar. Und das ist in Ordnung. Wir wollen uns nicht mit den Verabredungen verwirren. Wir möchten die Daten überhaupt nicht bearbeiten können. Wir, sobald wir einen Beitrag erstellen, wollen
wir, dass dieses Datum automatisch gefüllt wird ihn. Und so fügen wir wirklich ein neues Feld zu diesem Postmodell oder zu einem beliebigen Modell hinzu, fügen
Sie ein neues Feld hinzu. Etwas ist gleich Modellen Punkt eine Art von Feld. Und dann tun Sie Python, die hohe Make-Migrationen verwaltet werden. Python verwaltet die Tortenmigration.
9. So to du alle Beiträge auf deiner Homepage auf.: Okay, lass uns weitermachen und eine Homepage erstellen. Denn wenn wir zurück zu unserer Seite gehen und gehen wir einfach aus dem Admin raus. Wir sehen nur, dass Django Standard-Homepage hat. Jetzt erfordert dies tatsächlich ein paar verschiedene Schritte, aber zunächst lassen Sie uns unsere Ansicht erstellen und die Idee mit Django ist, dass viele Dinge gleichzeitig getan werden müssen. Und das Problem beim Anschauen eines Videos wie dieses ist, dass wir Dinge einzeln machen müssen, also ergibt es nicht immer Sinn. Aber die nächsten paar Schritte, wir werden im Grunde
alles in einer bestimmten Reihenfolge tun , und es ist das Ende, das wichtig ist. Solange wir Dinge wie URLs,
Ansichten und eine Vorlage haben , sollte
alles für uns funktionieren. Aber wir können nicht wirklich alles ohne alle drei Komponenten zum Laufen bringen. Also, was wir hier tun werden, ist, dass wir unseren Feed öffnen und in unsere Ansichten eingehen. Und ich werde dieses Rendering einfach loswerden, weil wir keine funktionsbasierte Ansicht verwenden werden, wir werden eine klassenbasierte Ansicht verwenden. Und so werden wir von Django Dot sagen, dot generischer Import ListView. Und wir wollten auch, von DOT-Modellen importieren unsere Post. Und weil wir mit dem Post arbeiten, wollen
wir ihn normalerweise importieren. Nun lassen Sie uns voran und erstellen Sie eine Homepage Klasse Homepage. Und das wird unser ListView sein. Und was das tun wird, ist einfach eine Vorlage mit all ihren Beiträgen darin zu rendern. Nehmen wir also an, die HTTP-Methodennamen werden Get sein. Das bedeutet, dass Leute nicht posten können, sie können das nicht löschen, so etwas kann nicht tun. Alles, was sie tun können, ist eine Seitenanfrage zu erhalten und die Beiträge zu sehen. Das ist alles, was die Homepage tut. Template-Name wird sein, nennen
wir es einfach Homepage dot HTML. Das Modell, das wir auflisten möchten, ist post. Unser Kontextobjektname ist normalerweise ich glaube, dass es standardmäßig Objekt ist, aber ich überschreibe dies immer als Beiträge. Und das ist, was wir in unserer Vorlage verwenden werden, die wir wahrscheinlich im nächsten Video anpacken werden, um ehrlich zu sein. Und dann wird die Abfragesite einfach post.Alle Objekte Punkt alle. Und wir wollen diese Beiträge
nach der Id absteigend bestellen . Und stellen wir sicher, dass wir nur 30 Beiträge gleichzeitig bekommen. Eine Seite wird also nicht eine Million Beiträge laden, weil das für immer dauern könnte , um B wirklich Ihre Datenbank zu laden. Das ist alles, was wir in unseren Ansichten oben tun werden. Hier ist nichts anderes, wie Sie sehen können. Als nächstes müssen wir hier in unserem Bereich eine neue Datei erstellen. Lassen Sie uns diese URLs dot py nennen, URLs dot py. Und hier werden wir eine neue Reihe von URL erstellen. Also ist es von Django, Punkt-URLs, Importpfad und von Punkt-Importansichten zu tun. Es hat uns auch einen App-Namen gegeben und ich werde dies in nur einer Sekunde beschreiben. Weil es so aussieht, als würde ich hier ziemlich schnell gehen, aber das ist sowieso so ziemlich Django-101-Zeug, sollten
Sie damit ziemlich vertraut sein. URL-Muster ist gleich, und dann hat es einen Pfad, einen Ort, den es geht. Ansichten Punkt. Was war diese Ansicht, ob wir es nennen und nur Homepage-Punkt als View. Der Name wird notiert und das ist nicht richtig. Name ist gleich Index. Also in dieser Datei, alles, was wir tun, ist, dass wir Pfad importieren, so dass wir es hier verwenden können. Wir importieren alle unsere Ansichten. Wir haben wirklich nur einen Blick. Wir könnten nur die eine Ansicht importieren, wenn wir wollten, aber wir werden in das gesamte Views Modul importieren, so dass wir View als Punkt Homepage
verwenden können und dann diese Vorlage als Ansicht rendern, die dann mit unserer Vorlage verbinden wird Name, nur Homepage Punkt HTML. Und unser App-Name, was wir für den Namensabstand verwenden werden, ist Feed, und das entspricht nur dem App-Namen, den wir in ihrem Ordnernamen verwenden. Es passt auch zu diesem hier drin. Und das hält nur Namensabstände oder URLs und nett und einfach, wir werden über Namespaces sprechen und warum es wichtiger ist. Und wenn wir mehr oder weniger auf die Vorlagenseite der Dinge kommen, last but not least, müssen wir TIL Slash URLs dot py öffnen. Und hier drin sehen wir alles, was wir haben, ist unser Admin. Wenn wir also wollten, könnten wir den Admin komplett deaktivieren, indem wir ihn einfach löschen. Und der Admin wäre für alle Benutzer
überhaupt nicht mehr zugänglich . Aber das ist nicht das, was wir wollen. Was wir wollen, was wir wollen, ist, dass wir einen Weg
wollen, der auf unsere Homepage geht. Und wir wollen dieses Ding namens gehören tun. Und wir möchten wie unsere Feed-URLs oder so etwas einschließen. Wir haben das noch nicht importiert und wir wollen uns einen Namespace von Feed geben. Und wieder werden wir über Namespaces und ein wenig sprechen. Also zuerst müssen wir einschließen und gut, das ist nicht falsch. Wir müssen Include importieren und wir müssen Feed-URLs importieren. Also lassen Sie uns von Django.com Punkt URLs tun, Import enthalten. Und wenn du dich jemals fragst, hey, Caleb war auf der Erde, kriegst du die? Wie merkt man sich all das auswendig? Zunächst einmal habe ich nicht viele davon auswendig gelernt. Ich schreibe diese genug, dass ich einige von ihnen kenne und diejenigen bin, die ich nicht kenne. Ich schaue mir die Django-Docks an. Die Django-Dokumente werden mir alles erzählen, was ich wissen muss. Also vermisse ich und schiebe das eine Linie nach oben. Und lassen Sie uns von den Füßen App Import URLs tun, die ganze Datei als Feed-URLs. Und das passt einfach hier, also habe ich diesen Import umbenannt. Lass uns das speichern und sehen, was passiert. Kein Modul namens Django, conf dot URL, ich denke, es sollte sein. Wo sind wir? URLs? Sehen Sie, ich bekomme Dinge falsch an kein Modul namens Django dot URL, welche Datei oder Sie füttern URLs. Wir werden nur diese Fi-Punkt-URLs in Angriff nehmen. Django, URLs. Django wird mir immer wieder sagen, dass es hier ein Problem gibt. Das ist wahrscheinlich eine, die Sie erwischt haben. Abfragesatz minus nein, das ist nicht richtig. Query Set ist gleich und Drink wollte mir nur sagen, dass es Probleme gibt, bis es kein Problem mehr gibt. Also gehen wir weiter und gehen zurück zu unserer Seite und aktualisieren. Und wir sollten, wenn alles richtig funktioniert,
sehen, dass diese Vorlage nicht existiert. Es sucht nach Homepage, es sucht nach Feed Schrägstrich Post-Liste und sucht sie in Django Contra aus Vorlagen Homepage, Django Vertrag Admin Vorlagen Homepage, Django Admin Templates Feed, Django-Vertragsvorlagenfeed sucht nach diesen Dateien und diesen Ordnern. Es weiß nicht, wo man eigentlich hinsehen soll. Also in der nächsten Lektion, lassen Sie uns weiter gehen und Django sagen, indem Sie einige unserer Einstellungen ändern, dass es in einem bestimmten Ordner für uns aussehen sollte.
10. Deine template einrichten: Okay, in der letzten Lektion konnte Django unseren Homepage-Punkt-HTML nicht finden, wahrscheinlich weil wir diese Datei nicht erstellt haben, also kann er sie nirgendwo finden, was fair ist. Und B, es sucht an seltsamen Orten. Und so lässt Django uns das irgendwie
selbst einrichten , so dass wir es selbst einrichten können, damit wir tun können, was wir wollen. Auf diese Weise haben wir viel mehr Flexibilität. Also, was ich tun möchte, ist, dass ich diese Datei namens Settings dot py öffnen möchte. Und wo ist mein Basisverzeichnis, Basis, Basis, Basisverzeichnis. Also müssen wir hier drin ein paar verschiedene Dinge tun. Zuallererst wollen wir ein Projektverzeichnis, also lassen Sie uns das Projekt schlimm machen. Und das wird eine seltsame Sache sein, an die Sie sich wahrscheinlich nicht erinnern müssen, weil Sie das nicht wirklich zu oft ausschreiben werden. Sie können das einfach richtig für meinen Quellcode bekommen, wenn Sie möchten. Also werden wir OS dot Pfad Punkt dy oder Namen OS dot Pfad dot
dire Name OS dot Pfad Punkt Punkt absolute Pfad,
Unterstrich, Unterstrich, und dann diese spezielle Datei zu tun. wir einfach sicher, dass ich keine Tippfehler da drin habe. Es sollte zweimal auftauchen. Und das tut es nicht, weil das ein grausamer Name ist wie Dire Wolf. Und da gehen wir hin. Jetzt verwenden wir das Betriebssystem. Wir müssen weitermachen und das importieren. Also lassen Sie uns OS an der Spitze importieren, das ist nur unter all meinen Doc-Strings hier, die standardmäßig mit Django geliefert werden. Das wird also für mich funktionieren. Wenn ich auf Speichern klicke, sollte es keine Beschwerden in der Django-Konsole dort unten geben. Und dann müssen wir unsere Vorlagen, Vorlagen, Vorlagen,
Vorlagen finden und diese Vorlagen betrachten. Und dann haben wir diese Option hier genannt Tagebücher, diese Verzeichnisse. Und was wir hier tun wollen, ist zu sagen, dass OS dot path dot diesem Projektverzeichnis beitritt, das genau dort sein wird, wo dieses ganze Projekt lebt. Til, das ist dieser spezielle Ordner hier drüben, Schrägschrägvorlagen. Und das wird nach einem Unterordner suchen, der hier heißt Templates. Jetzt gehen wir weiter und öffnen Sie unseren Browser und schauen wir mal, wo Django suchte. Jetzt. Jenga war auf der Suche nach Desktop Django 2-1 TIL Vorlagen, Homepage-Punkt HTML. Gehen wir weiter und machen das wirklich schnell existieren. Wir werden nicht viel damit arbeiten. Lass es uns einfach existieren lassen. Also lassen Sie uns einen neuen Ordner namens Templates und die neue Datei namens
Homepage dot HTML erstellen , Sachen hier drin. Aber buchstäblich alles, was ich schreiben werde. Großer Erfolg, der für uns funktioniert. Und so
haben wir in dieser Lektion erfolgreich unser Template-System in Betrieb genommen. In der nächsten Lektion gehen wir weiter und arbeiten tatsächlich mit der Vorlage ein wenig mehr.
11. Deine erste Vorlage: Oh, richtig. In der letzten Lektion haben wir unsere erste Vorlage Homepage dot HTML gemacht. Wir haben ein paar Sachen drin, was großartig ist, und wir legen es in den TIL Templates Ordner. Was wir tatsächlich tun könnten, sind innere Ansichten. Wir könnten ändern, wo wir das finden wollen. Wir könnten gehen Feed Schrägstrich Homepage Punkt HTML. Und was uns dies erlauben wird, ist, dies aus
unserem Standard-generischen Template-Ordner zu entfernen , der benötigt wurde und in Zukunft benötigt wird. Aber wir werden das wieder verschieben. Also lassen Sie uns neue Datei in unserer Feed-App dieses Mal machen, nennen
wir es Vorlagen. Dies wird ein Verzeichnisname sein. Wir geben ihm den Feed-Namespace, die Seite Punkt HTML. Noch mehr Sachen hier drin, zu, zu, zu bis zu. Und mal sehen, wo Django zuerst nach dieser Vorlage suchte. Mehr Zeug hier auch zu 2.2.2, obwohl es tatsächlich zwei Homepages gibt. Was wir also tun können, ist, dass wir diese Homepage loswerden können. Und hier wird unsere Homepage leben. Und das ist alles, was wir für diese Lektion tun werden. Wir wollten einfach unsere Vorlage auf die Feed-App verschieben und dann einfach irgendwie hält es schön und sauber, so dass der gesamte Feed etwas eigenständig ist.
12. Deine base: Okay, an dieser Stelle haben wir eine Homepage und wir müssen ein paar Sachen dazu hinzufügen. Und so in VS Code, können wir HTML5 Doppelpunkt Anmerkung HTML Doppelpunkt fünf, genagelt es. Und es wird ein paar Sachen für uns ausfüllen. Unsere Seite hier, Homepage. Und wenn wir die Seite aktualisieren, steht unsere Seite hier oben und Homepage. Und in unserer Quelle, weniger Seitenquelle. Wir können all diese HTML sehen. Zoomen Sie da rein. Genau das haben wir geschrieben. Nun, das ist in Ordnung. Bis wir eine zweite Vorlage brauchen, die wir auf der Straße brauchen. Und so an dieser Stelle, was wir tun wollen, ist, dass wir diesen
ganzen Code als Zitat unquote Vorlage verwenden wollen. Und wirklich nur die kleinen Stücke, die wir brauchen,
wie unser Titel oder einfach nur die Inhalte auf unserer Homepage geändert . Also, was wir tun werden, ist in unserem t UP TIL Templates Ordner, erstellen Sie eine neue Datei namens Basispunkt HTML. Und lassen Sie uns HTML Doppelpunkt fünf, Basisdatei, und nennen wir es Basisdatei hier. Nun, wieder, das wird nichts tun, obwohl wir die Akte haben. Django weiß einfach nicht, was er damit machen soll. Es ist einfach irgendwie rumhängen. Nicht verwendet wird, wird nicht von anderen Vorlagen oder Ansichten oder so etwas aufgerufen. Stattdessen, was wir tun können, ist in unserer Homepage, könnten
wir sagen, erweitert Basispunkt-HTML. Und wenn wir aktualisieren, sagt das Basisdatei hier drin. Dies erweitert unsere Homepage. Also lassen Sie uns einfach diese erste zweite Auffrischungsseite löschen. Wir sehen nichts als Viewer-Seitenquelle angezeigt. Da ist nichts drin. Rückgängig machen, speichern, aktualisieren Sie die Basisdatei in hier heißt es Basisdatei und den Titel als auch. Genau das haben wir diese Viewer-Seitenquelle geändert, und wir verwenden jetzt zwei Vorlagendateien gleichzeitig. Und was das tut, ist zu sagen, hey, Django, nimm die Basispunkt-HTML-Datei, die du gerade verwendest, und benutze sie. Und ich möchte, dass du das ganze Zeug da drin nimmst und ich möchte, dass du dich davon ausziehst. Dies ermöglicht es uns, irgendwann kleine Codestücke in diese Seite zu injizieren. Auf jeder Seite brauchen
wir also nicht HTML zu schreiben. Lang ist gleich Englisch. Wir brauchen nicht zu bewerten. - Meta. Zeichensatz ist gleich UTF-8. Wir müssen keine Meta namens Viewport Inhalt Breite ist gleich zu entwickeln Strichbreite anfängliche Strichstärke gleich
1 ist , weil das schmerzhaft ist, auf jede einzelne Datei zu schreiben. Stattdessen können wir sofort schreiben. Wir können es einmal schreiben, und wir können aus dieser Datei erweitern. Und in Zukunft, was wir tun werden, ist, dass ich Ihnen zeigen werde, wie wir ein kleines Stück davon ändern können ,
damit wir nicht immer wieder denselben Müll schreiben müssen.
13. Template: In Ordnung, schauen wir uns das Hinzufügen von Blöcken an. Lassen Sie uns das alles schließen, als ob wir dieses Projekt von Anfang an öffnen würden. Lassen Sie uns TIL-Vorlagen basierend auf HTML öffnen. Und das ist auch geöffnet Feed Vorlagen Feed Homepage. Und so sind wir Homepages, die sich von diesem Basispunkt-HTML erstrecken. Und was ich tun kann, ist das auch in die Event-Basis
auf der rechten Seite zu teilen und wir haben Homepage auf der linken Seite. Und mal sehen, ob ich das nur ein bisschen kleiner machen kann. Hoffentlich ist dies für Sie immer noch sichtbar. Hoffentlich bist du nicht auf einem sehr kleinen Telefon. Aber ja, vorwärts, sagen
wir, wir wollten diesen Titel ändern. Was wir tun könnten, ist, dass wir dieses Ding namens Block hinzufügen könnten. Und so sieht es aus wie dieser Block, Titel und Block. Und das ist alles, was wir tun werden. Jetzt werden wir das buchstäblich kopieren. Also lassen Sie uns mit der rechten Maustaste klicken, kopieren Sie es hier, fügen Sie ein. Und wir können den Titel dieser Seite ändern, geändert den Titel, Titel der Homepage. Und wir können sehen, oh, ungeschlossene Tags, wonach suchen wir hier? Und das liegt daran, dass ich hier und genau da einen Tippfehler
habe, muss ich ein Prozentzeichen haben. Und so sieht ein Block aus. In der Tat ist das ein guter, guter Zeitpunkt. Aus gutem Grund, ich denke, dass ich den Syntaxfehler erkläre. Also verwenden wir eine geschweifte Klammer oder, oder eine Schnurrbart Klammer, Prozentzeichen den Schlüsselwortblock und dann den Namen davon. Und das passt genau hier drinnen. Dann schließen wir das mit dem genauen Gegenteil. Also ein Prozentzeichen und dann die schließende geschweifte Klammer, setzen unsere Inhalte auf das Innere, all das Zeug. Und dann sagen wir mit dem gleichen
öffnenden, schließenden Syntax-Endblock. Und so passt dieses öffnende Tag diesem öffnenden Tag und das schließende Tag stimmt mit diesem schließenden Tag überein. Und wenn Sie jemals Standardtitel verwenden wollten, können
Sie hier Standardtitel sagen. Jetzt gehen wir weiter und fügen etwas Körper hinzu. Also auf unserer Seite wollen wir etwas mit diesem Körper machen. Also können wir sagen, dies erstreckt sich von Basispunkt-HTML, aber lassen Sie uns auch eine Blockierung hier erstellen, einen Block, nennen
wir es Körper und Ende Block. Vergewissern Sie sich, dass ich das Prozentzeichen habe. Und so mache ich nicht den gleichen Fehler zweimal. Kopieren, fügen Sie es hier drüben ein. Und das wird von der Homepage sein. Das hat für mich nicht funktioniert, weil ich Basispunkt-HTML nicht gespeichert habe. Versuchen wir es nochmal. Und hoffentlich ist dieser Boom richtig. Boom, da geht's. Es hat tatsächlich geklappt. Dies erstreckt sich von Basispunkt-HTML. Das wird also auf jede einzelne Seite gestellt. Und das wird von der Homepage sein. Und das habe ich hier geschrieben. Und wenn ich es jemals ändern wollte, kann ich das hier tun. Jetzt in der Zukunft, wenn Sie andere Ansichten haben, die andere Vorlagen rendern, anstatt all dieses Zeugs zu schreiben, müssen wir nur von der Basis aus erweitern und einfach den Blocktitel und den Blockkörper oder andere Blöcke
injizieren. Die Sache ist, obwohl sie übereinstimmen müssen. Du musst einen Blockkörper haben. Du musst einen Blockkörper haben. Sie müssen einen n Block haben, Sie müssen einen n Block haben. Und Django wird Ihnen sagen, ob es irgendeine Art von Syntaxfehler gibt, um Dinge nicht herausfinden zu können. Es wird, es wird Ihnen direkt im Voraus sagen und sehr ehrlich und stumpf zu Ihnen sein. So wird es dich wenigstens wissen lassen, was los ist.
14. Template: Okay, gehen wir weiter und durchlaufen ein paar unserer Beiträge hier. Also, wenn wir unseren Browser öffnen, sagt
es nur, dass dies von
der Homepage sein wird und es ist nicht wirklich Schleifen durch einen unserer Beiträge. Wir müssen diese Beiträge hier hinzufügen. Nun haben wir einige der Setup ein wenig früher wo wir hatten unsere Homepage ist ein ListView. Es wird alle unsere Beiträge und den Abfragesatz auflisten, die Dinge, die wir auf unserer Seite posten oder schleifen möchten, werden
alle Beiträge Punktobjekte sein , die alle nach den neuesten sortiert sind und nur 0 bis 30 zeigen. Also die ersten 30. Und dann sagten wir, dieser Kontextobjektname wird Beiträge sein. Und das ist wichtig. Denn wenn wir hier auf unsere Homepage gehen, können
wir in unserem Körper tun. Und lasst uns das einfach loswerden. Wir können für Post in Posts sagen, das ist, wo wir das bekommen,
dieser Kontextobjektname, Kontextobjektname ist gleich Posts. Und das taucht gleich dort auf. Und das ist nur eine reguläre Schleife, genau wie in Python oder JavaScript, unregelmäßig for-Schleife. Und dann sagen wir Ende für. Und hier drin werden wir Zugang zu jedem Beitrag haben. Nun wird dieser Beitrag alles in diesem Abfragesatz durchlaufen. All diese Posten. Und jeder von ihnen wird eines dieser Up-Post-Model sein. Es hat also Text und hat auch ein Date drin. Also lassen Sie uns voran und zeigen Sie einfach Post.Alle. Und es wurde am Post-Punkt-Datum geschrieben. Und schauen Sie sich das sind erste Post bearbeitet ist, was es auf
geschrieben wurde eher sollte am 6. Januar
2021 gesagt haben , so eindeutig nicht der richtige Zeitpunkt wie meine Computer-Zeit ist anders als meine Serverzeit. Das ist in Ordnung. Wir können die Serverzeit zu einem späteren Zeitpunkt einstellen. Das ist keine große Sache. Ich lass uns weitermachen und unseren Admin öffnen und ein paar weitere Beiträge erstellen. Und so lassen Sie uns einfach gehen, um Slash Admin. Und das ist der zweite Beitrag, speichern Sie und fügen Sie einen anderen hinzu. Dies ist der neueste Beitrag, speichern und ja, das war's. Also haben wir jetzt drei Posten drin. Und wir können sehen, dass es hier drinnen auftaucht. Dies ist der neueste Beitrag. Dies ist der zweite Beitrag und unser erster Beitrag. Lassen Sie uns voran und trennen Sie das tatsächlich mit so etwas wie einer horizontalen Regel. Da gehen wir hin. Also, jetzt zeigt es tatsächlich unsere Beiträge. Das ist buchstäblich alles, was wir an diesem Punkt tun müssen , weil wir alle schweren Heben in unseren Ansichten gemacht haben. Wir haben unser Modell so eingerichtet, dass Daten in unserer Datenbank gespeichert werden können. In unseren Ansichten haben wir gesagt, hey, das wird ein ListView sein. Verwenden Sie die Vorlage namens Feed Schrägstrich Homepage, die hier sein wird. Es ist also irgendwie in sich geschlossen. Das Modell, durch das wir eine Liste erhalten werden, ist das Postmodell. Der Name des Kontextobjekts wird direkt dort verwendet werden. Und der Abfragesatz, was wir in der Lage sein wollen, durchlaufen zu können, ist dies. Und das wird all unsere Beiträge Punktobjekte bekommen, dotiert alle von ihnen. Und wieder, es wird ihnen die umgekehrte ID bestellen. Wenn wir sie vom ältesten bis zum neuesten bestellen wollten, würden
wir sagen, Bestellung BY ID. Stattdessen werden wir sagen, Bestellung BY ID, älteste bis neueste oder keine. Nein, das ist die falsche Art, es zu sagen. Neueste bis älteste. - Das ist besser. Und dann hacken
Sie das einfach, holen Sie den allerersten bis zum 30. Und in unserer Vorlage haben wir einfach für jeden Beitrag in diesen Beiträgen gesagt, zeigen Sie uns, dass Text, der aus dem Text unseres Modells kommt. Und es wurde an diesem Datum geschrieben. Und das ist alles, was es dazu gibt.
15. Django Allauth installieren: In Ordnung, lassen Sie uns weitermachen und,
na ja, eine Form von Login-System zu unserer Website hinzufügen . Und das wird mehrere Schritte in Anspruch nehmen. Und wenn ich einfach einen Firefox wieder öffnen, gibt es keine Login-Seite ist keine Logo-Seite und keine Passwort-Reset-Seite. Und es gibt eine wirklich, wirklich einfache Möglichkeit, dies zu tun, und es ist ein Drittanbieter-Paket namens Django all off. Und was wir tun werden, ist, das zu installieren. Und jetzt, so in unserer Pip-Umgebung oder PIP N für wir tun können pip installieren, Django dash, alles aus. Oder wenn wir wollten, lasst uns da raus. Wir könnten Pip Django Dash installieren, alles aus. Und das wird weitergehen und Django alles für uns installieren. Also geben wir das nur eine kurze Sekunde und das wird es zu einer PIP-Sperrdatei für uns hinzufügen. Und gehen wir weiter und kommen zurück in unsere Pip-Umgebung, und wir können Pip,
Show, Django machen . Und ich muss Pip davor eingeben. Und da gehen wir. Wir sehen Django alles aus, 0 Punkt 0. Jetzt gibt es ein paar Dinge, die wir tun müssen, damit das funktioniert. Alles, was wir taten, war zu sagen, hey, in dieser virtuellen Umgebung existiert Django oth. Was wir auch tun müssen, ist, dass wir in unsere Einstellungen dot pi gehen müssen, und wo sind unsere installierten apps in R installiert apps, wir müssen ein paar Dinge hier hinzufügen. Damit Django funktioniert, müssen
wir zunächst Django Contrib-Sites aktiviert haben. Also Django Contrib Sites, und das erlaubt Django nur Multi-Site zu sein. Dann wollen wir alles installieren und spielt keine Rolle. Normalerweise lege ich alle meine Drittanbieter-Pakete und meine lokalen Pakete oder Module wie Feed unter das Django-Zeug. Also wollen wir alle oft dort hinstellen. Wir möchten auch alle Auth Dot Konto hinzufügen. Und nur zum guten Maß, denn alles aus unterstützt auch das Einloggen mit Facebook, GitHub, Twitter, et cetera, et cetera. Lassen Sie uns alle Auth Dot Social Account machen. Und dann irgendwo in der Nähe des Bodens, lassen Sie uns voran und fügen Sie eine Reihe von all unseren Einstellungen hinzu. Also zuerst, da ist viel hier drin. Wir benötigen eine Site-ID, und wir haben nur eine Site, daher werden wir standardmäßig Site-ID 1 verwenden. Dann wird es eine Login-URL geben. Und wir wollen das nur so einstellen, dass es sich um einen Schrägstrich Login handelt, weil das ziemlich Standard ist. Dann gibt es einen Login, eine Umleitungs-URL, und das ist, wenn Sie sich einloggen, wo ist es? Angenommen, ich nehme u, wir haben jetzt wirklich nur einen Blick, das ist unsere Homepage. Gehen wir zurück zu unserer Homepage. Dann gibt es die Kontoauthentifizierung. Wenn ich eines dieser Rechte buchstabieren kann, ist die Authentifizierungsmethode gleich. Und wie wollen wir, dass die Leute ihre Konten authentifizieren? Wir wollen sagen, senden Sie ihnen ein E-Mail-Konto, bestätigen. E-Mail auf get ist gleich true. Und was das tut, ist, wenn Sie auf diesen Link in Ihrer E-Mail klicken. Es bestätigt automatisch oder müssen sie
eine Taste auf Ihrer auf Ihren Websites drücken, um zu bestätigen? Wir werden sagen, dass sie keinen Knopf drücken müssen, nur auf eine GET-Anfrage ist gut genug. Ich zähle die benötigte E-Mail ist gleich wahr. Weil wir möchten, dass jeder über ein E-Mail-Konto verfügt, weil wir einen Service erstellen, bei dem Sie
Personen per E-Mail versenden oder zumindest Personen kontaktieren möchten . Lassen Sie uns tun Konto E-Mail-Prüfung ist gleich zwei, optional. Müssen sie ihre E-Mail verifizieren? Und so kann dies optional sein oder dies kann obligatorisch sein. Ich werde das vorerst optional machen. Kontoanmeldung auf. E-Mail. Die Bestätigung ist gleich true. Wir werden nur durch ein paar dieser Konten ausloggen on.get. Bedeutet das, dass jemand tatsächlich ein Formular wie in seinem HTML ausfüllen muss? Wird es in ein Formular eingewickelt, um sich abzumelden? Technisch gesehen sollte das falsch sein. Das wäre der richtige Weg zum Logo, aber wir werden die, die betrügerische Art zu tun. Und wir werden sagen, ja, sie können einfach auf einen Link klicken und es funktioniert. Konto-Login. Und das Zurücksetzen des Passworts ist gleich wahr. Und es gibt noch ein paar mehr. Aber bevor wir alle diese durchstehen, lasst uns voran gehen und Django alle orthodoxen in die allwissenden Google-Maschine eintippen. Und es gibt hier alle möglichen Einstellungen, damit wir zu unserer Konfiguration übergehen können. Und das ist ziemlich genau das, was ich jetzt konfiguriere, ist nur ein Haufen davon. Nicht alle von ihnen, aber ein Haufen von ihnen. Und so zu jedem Zeitpunkt, wenn Sie jemals mögen oh, ich erinnere mich nicht, was Caleb Zeile authentifizierte Login-Umleitungen widmen. Sie könnten tatsächlich einfach direkt zu den Dokumenten gehen und es wird Ihnen sagen,
was es tun soll und was die Optionen sind. Ist es wahr oder falsch? Ist es optional? Ist es obligatorisch, et cetera, et cetera? Kontoabmeldung, Umleitung ist gleich. Gehen wir zurück zur Homepage. Wenn Sie sich also abmelden, wohin soll der Benutzer umgeleitet werden? Ich mag diesen hier. Konto beibehalten. Benutzername. Das Gehäuse ist gleich false. Und so sollte der Benutzername, wie cane, derselbe wie Cain sein, alles in Großbuchstaben. Und das sagen wir hier, dass es sich nicht um zwei verschiedene Benutzernamen handelt. Konto-Sitzung, denken Sie daran ist gleich wahr. Und was das tut, ist, wenn Sie dies auf false setzen, wird
das Anmeldeformular automatisch eine Schaltfläche haben und dann steht es, erinnere dich an mich für zwei Wochen oder was auch immer. Das wollen wir nicht wirklich. Wir verwenden, um zu sagen, erinnern Sie sich für immer, Konto Anmeldung, Passwort. Geben Sie doppelt so hoch wie wahr ein. Wir möchten, dass Personen ihr Passwort zweimal eingeben, nur damit sie sich nicht versehentlich aus ihrem Konto gesperrt haben, weil das unbequem ist. Und ehrlich gesagt, der Benutzer wird
Ihre Website dafür verantwortlich machen, auch wenn sie es falsch geschrieben. Konto Benutzername min Länge wird sein, sagen
wir, dass der kürzeste Benutzername muss zwei Zeichen sein. Und schließlich, und vielleicht am wichtigsten, wird
Authentifizierungs-Backends sein, und wir werden hier ein Tupel oder ein Tupel schreiben. Und wir werden zwei hinzufügen. Und Ihr Django Dot Contrib Dot Auth Dot Backends, Dot Modal Backend. Und das war alles Großbuchstaben. Das hätte alles Kleinbuchstaben sein sollen. Da gehen wir. Und der zweite ist alles Auth Dot Account Dot. Authentifizierungs-Backends. Dann das Kationen-Backend. Lass uns voran gehen und das speichern. Und es besagt, dass wir 700 angewandte Migrationen haben. Also lassen Sie uns voran und lassen Sie uns Python hoch verwaltet, migrieren, cool, dass alle von ihnen angewendet. Nun zu guter Letzt, auch wenn all dies richtig eingerichtet ist, lassen Sie uns zu unseren URLs in unserer TIL-App gehen. Also unsere TIL wo Einstellungen leben. Anstatt zu den Einstellungen zu gehen, gehen wir zu URLs. Und wir werden hier ein neues hinzufügen. Und wir wollen einfach URL hinzufügen. Leer. Schließen Sie alle Authentifizierungspunkt-URLs ein. Und das, das ist noch nicht importiert, also lasst uns voran gehen und das importieren. Und das kommt von Django Con weniger ells, wo Include kommt von URL. Und lassen Sie uns das speichern und sehen, und es gibt eine Art von Problem dort. Ja, ja. Deshalb machen wir normalerweise nachgestellte Kommas. Kuckuck, Kuckuck, cool. Okay, also ist das alles einsatzbereit. Wenn wir hier zurück zu unserer Seite gehen, werden wir sehen, dass nichts passiert. Aber was wir jetzt tun können, ist, dass wir zum Schrägstrich Login gehen können. Und das wird eigentlich auch nichts tun, weil ich
bereits als Admin angemeldet bin . Lass uns ein neues privates Fenster machen. Und lasst uns zum Schrägstrich Login gehen. Und jetzt haben wir eine Login-Seite und wir können einfach die E-Mail-Adresse eingeben, Passwort eingeben. Also werde ich meine E-Mail-Adresse eingeben. Caleb sagte Caleb dot IO und mein Passwort. Und ich klicke auf „Anmelden“. Und jetzt bin ich eingeloggt. Und wenn ich wollte, könnte ich mich abmelden und es meldet mich aus. Jetzt haben wir zu diesem Zeitpunkt eigentlich keine Ahnung, ob wir eingeloggt oder abgemeldet sind. Das ist völlig in Ordnung. Alles, was wir tun mussten, war die Benutzeranmeldung und -abmeldung einzurichten. Und wenn wir wollten, können wir einfach gehen, um Slash anmelden. Und jetzt können sich Leute mit Ihrer E-Mail-Adresse anmelden. Sie können einen Benutzernamen eingeben und ihr Passwort zweimal eingeben und sich automatisch anmelden. So schließen Sie das vorerst. Und das ist wirklich alles, was es zu dieser Lektion gibt.
16. Globale Anmelde- und logout: Lassen Sie uns fortfahren und fügen Sie einen globalen Link zum Abmelden und Anmelden hinzu. Es wird also global sein. Also wollen wir, dass in unseren TIL-Vorlagen Basispunkt-HTML sein. Das ist unsere globale Akte. Und was wir hier sagen können, ist, dass wir überprüfen können ob jemand authentifiziert ist oder nicht authentifiziert ist, wie in, sind sie eingeloggt oder nicht? Und wir können das einfach mit tun, wenn Anfrage dot user_data authentifiziert wird. Und wir können etwas anderes sagen. Und lasst uns das machen. Sie sind eingeloggt. macht mir nichts aus, dass da ein Tippfehler drin ist. Sie sind abgemeldet und lassen Sie uns einfach sehen, was dies tut. Da steht, dass ich eingeloggt bin. Wenn ich das in einem neuen privaten Fenster öffne, heißt
es, ich bin abgemeldet. Sagt das genau da. Wenn ich zum Schrägstrich einloggen und mich mit meinem Benutzernamen und Passwort einloggen. Und jetzt steht es, dass ich eingeloggt bin. Also jetzt haben wir Authentifizierung, wir sind eingeloggt, wir sind abgemeldet, Kuckuck, Kuckuck, cool. Jetzt müssen wir diese Links hinzufügen. Alles, was wir tun müssen, ist zu sagen, anstatt zu sagen, dass Sie eingeloggt sind, weil das nicht hilfreich ist, wird
jemand wissen, ob er eingeloggt ist oder nicht. Wir können einen Link hinzufügen. Ein HREF ist gleich zwei. Es geht an einen Ort, melden Sie sich ab, weil der Benutzer bereits angemeldet ist. Sie wollen den Link abmelden. Wenn sie abgemeldet sind, möchten sie einen Login-Link. Also ist ein HREF gleich einem Link. Wir wissen es noch nicht. Einloggen. Und lassen Sie uns das hässlich machen, weil uns hübscher in ein wenig. Fügen wir einfach das HR da drin hinzu, diese horizontale Regel. Okay, jetzt bin ich eingeloggt, weil es mir den Logout-Link zeigt. Gehen wir weiter und fügen Sie diesen Link hinzu, denn momentan geht das nirgends. Wir machen das. Wir sagen URL, Kontosperre, und das kommt nur von Django aus. Und wir können das gleiche tun hier unten mit Konto-Login, URL, Konto-Login. Und jetzt sieht es so aus, als hätte es nichts getan, aber wenn ich auf Logout klicke, protokolliert
es mich identifizieren Click-Login. Es wird mich bitten, mich einzuloggen und ich melde mich wieder ein. Und ich kann mich wieder ausloggen. Jetzt haben wir ein Login-Logout-System und unsere Vorlage
ermöglicht es dem Benutzer tatsächlich , sich einzuloggen und sich abzumelden, wann immer sie wollen.
17. Allauth erweitern: In Ordnung, lassen Sie uns einen Blick auf die Erweiterung aller Authentifizierungsvorlagen werfen. Wie in, wenn wir hier sind, gehen
wir zu, gehen wir zurück in die Login-Seite. Hören Sie, wir haben Nachrichten, und wir können sie wählen, wenn wir wollen. immer, sagen wir, wir
wollen nicht , dass dieses Menü erscheint und wir wollen nur das Schild und auftauchen. Wie, wie machen wir das? Nun, zuerst mal, lassen Sie uns diesen Django alle von GitHub machen. Und wir können in Vorlagen gehen. Ich zähle. Und wir haben all diese verschiedenen Links in hier sind keine Links, sondern Dateien. Also, wie lasst uns den Login nehmen. Und das kommt von, denken Sie daran, dass dies wichtig ist, Pfade ist wichtig. So kommt es von Konto Schrägstrich Login. Sagen wir, wir wollen das überschreiben. Gehen wir zu TIL-Vorlagen. Lassen Sie uns einen neuen Ordner namens Konto und eine neue Datei namens Login dot HTML erstellen. Und sagen wir einfach, das ist überschrieben. Gehen wir zurück zu unserer Anmeldeseite und es steht, dass sie überschrieben wurde. Und was wir jetzt tun können, ist, dass wir all diesen Code kopieren können. Lass uns hier runtergehen und den ganzen Code kopieren. Werfen Sie das hier wieder rein. Stellen Sie sicher, dass wir tatsächlich richtig erweitern. Und im Grunde legen wir es einfach zurück. Und wenn wir es wollten, könnten wir das mit jeder einzelnen Datei machen. Dieser Jangle off gibt uns. Und manchmal gibt es einen Fall dafür, und manchmal gibt es nicht. Nun, das kann ein wenig schmerzhaft sein, denn es gibt viele Vorlagen hier,
wie Passwortänderung, Passwort-Reset, Passwort-Zurücksetzen von Schlüssel, Passwort-Zurücksetzen von Schlüssel getan Passwort gesetzt, wissen
Sie, auf und weiter und weiter. Und das können wir immer und immer wieder tun. Es wird ein paar Stunden dauern und es wird etwas schmerzhaft
sein und es gibt einen besseren Weg, um dein Leben zu leben. Und so haben wir einen Basispunkt-HTML hier in unserem Templates Templates Konto. Ich glaube nicht, dass wir das wissen. Es ist genau da. Perfekt. Es gibt einen besseren Weg, das Leben zu leben. Okay, sieh dir das an. Also in unserem Django all auth Account Ordner gibt es eine Datei namens base dot HTML. Und das kommt in ein schickes Templating hier. Aber was wir tun können, ist im Grunde alle auf einmal zu überbewerten. Anstatt eines zu einem Zeitpunkt zu tun, als wir eine Reihe von ihnen überschreiben könnten. Es wird immer noch den Inhalt haben, aber es wird in der Lage sein, von unserem Basispunkt-HTML zu erweitern, was sehr, sehr wichtig sein wird. Und Sie können sehen, dass, wenn Doo-Doo-doo-Konto auf HTML basiert, wenn wir öffnen unsere Basis Punkt HTML und sehen dies. Dies ist unsere Basispunkt-HTML-Datei. Und lassen Sie uns es ändern von, anstatt von einem Basiskonto Schrägstrich Basispunkt HTML zu erweitern, lassen Sie uns einfach von unserem Basispunkt-HTML erweitern. Und schauen wir mal, wie das aussieht. Dies ist unser Basispunkt-HTML-Login, der funktioniert hat, das für uns funktioniert hat. Nun, das Problem hier ist, dass es Blockinhalte verwendet. Und ich sagte, wir werden diesen Blockkörper nennen. Nun könnten wir dies in Inhalt ändern und dann
auf unserer Homepage ändern, wenn wir es wollten. Oder wir könnten 21 haben, oder wir könnten sie verschachteln, wenn wir wollen. Also lasst uns voran und verschachteln das einfach. Weil das wahrscheinlich der einfachste Weg sein wird. Blockieren, Inhalte und Blockieren. Und sieh dir das an. Wir haben all das Anmelden Zeug. Nun, was daran besonders schön ist, ist, dass, wenn wir wieder in unser Login gehen, das sich von Basispunkt-HTML erstreckt, wir nicht den Blockkopftitel haben. Wir haben nicht, was haben wir sonst noch hier drin? Holen Sie sich Anbieter. Können wir das als Blockinhalt schließen? Wir können das nicht schließen. Einrückung ist seltsam. Ja. Ok. Ich schätze, wir werden uns an diesem Beispiel halten. Es gibt keinen Kopftitel. Und in der Tat können Sie hier oben sehen, dass der Standardtitel existiert. Es fällt zurück, weil es keinen Kopf Titelsatz gibt. In unserem Basispunkt-HTML. Wir haben nur Titel, wir nennen den Titel, sie nannten es Kopftitel. Was wir also tun können, anstatt all dies zu tun,
ist, dass wir zurückgehen und einfach ihre Basisdatei überbewerten können. Also lasst uns zu berücksichtigen gehen und nehmen wir ihre Basisdatei. Und lassen Sie es uns einfach an unsere Basisdatei weiterleiten. Und so könnten wir all das nehmen, wenn wir wollten. Nehmen wir die rohe Version davon. Und lassen Sie uns eine neue Datei namens Basispunkt-HTML erstellen. Und okay, das ist also sehr ähnlich wie unser Basispunkt H2O und das ist eigentlich nicht gut. Was wir tun wollen, ist, dass wir das zusätzliche Zeug loswerden wollen, damit wir keinen zusätzlichen Kopf brauchen, zusätzlichen Titel. Wir brauchen nichts von dem Zeug. Gehen wir hier runter, lassen Sie uns zusätzlichen Körper loswerden. Das brauchen wir nicht. Sie haben
tatsächlich einen Block, und Sie werden Körper genannt, Sie sehen sich das an. Und was wir tun können, ist Körper zu blockieren. Wenn es Nachrichten gibt, werden Sie Nachrichten Menü. Wollen wir das Menü zeigen? Nein, lassen Sie uns das Menü nicht zeigen. Lassen Sie uns das loswerden. Und lassen Sie uns das vielleicht nur ein bisschen schöner aussehend machen
, denn diese Einrückung ist seltsam schlecht für
solche, eine so beliebte Bibliothek oder ein
so beliebtes Paket, dass Einrückung einfach erstaunlich schrecklich ist. Okay, lass uns das Zeug loswerden. Und so überschreiben wir nur ihre Basispunkt-HTML-Datei. Und was wir jetzt sagen wollen, ist unsere Basispunkt-HTML-Datei zu erweitern oder zu erweitern. Nicht der Konto-Schrägstrich Basispunkt HTML, sondern unsere Basis. Es wird zuerst nach unserer Basis suchen, und dann wird es nach dem Konto Schrägstrich Basispunkt-HTML-Datei suchen. Lass uns das speichern und mal sehen, was passiert. Login ist eigentlich ein schlechtes Beispiel, weil wir das überschrieben haben. Gehen wir zu Passwort vergessen und zu sperren. Es hält unsere Basispunkt-HTML-Sachen hier drin. Sagen wir, wir wollen uns anmelden. Es hält auch unsere Basispunkt-HTML-Sachen dort drin. Also lassen Sie uns zu tun, zu tun. Lassen Sie uns das loswerden, denn das brauchen wir nicht mehr. Und lassen Sie uns vielleicht auf jeder Seite einen Link zurück zur Homepage hinzufügen. Und so lassen Sie uns einfach einen kurzen kleinen Link hinzufügen. Ein HREF ist gleich Schrägstrich, das ist nur unsere Homepage. Ich werde das zu Hause anrufen. Und wir brauchen hier keine URL zu verwenden, nur weil die Homepage bereits ist, die Homepage wird gleich sein, ob wir
einen Schrägstrich verwenden oder ob wir eine Django-URL verwenden. Also haben wir zu Hause, wir haben Login und lassen Sie uns gehen und diesen Login werfen. Lass uns einloggen. Löschen, in den Papierkorb verschieben. Und es sieht ziemlich genau gleich aus. Das ist perfekt. Das ist es, was wir wollen. Wir wollen, dass das so funktioniert. Und zu diesem Zeitpunkt haben wir nun alle Authentifizierungsvorlagen erweitert. Und wieder, es gibt wirklich zwei Möglichkeiten, das zu tun. Wenn ich hier zurückgehe, können
wir es entweder eins nach dem anderen tun. Und in einigen Fällen müssen Sie möglicherweise eine ganze überschreiben. Nur weil Gründe, Ihr Grund könnte anders sein als meine Gründe. Also kann ich Ihnen keinen genauen Grund sagen, aber es ist möglich, das zu tun. Oder Sie können sagen, einfach alle von ihnen durch überschreiben, indem Sie ihre Basisdatei überschreiben. Also habe ich gerade ihre Basisdatei genommen, wenn es Nachrichten gibt, einige
Nachrichten hier drin und von unserer Basis ausgedehnt. Also, was diese Befehlskette jetzt aussieht, ist Login wird zur Konto-Slashbasis gehen, das ist Django off Account Slash Basispunkt HTML. Und anstatt all das zu zeigen, sagten wir, zeigen Sie
einfach, was wir zeigen wollen und erweitern von unserem Basispunkt-HTML, das dann alles hier hinein injizieren wird. Und genau so haben wir jetzt die Möglichkeit, unsere Seite zu thematisieren. Irgendwelche Möglichkeit wir bitte.
18. Tailwind CSS hinzufügen: Okay, gehen wir weiter und fügen etwas Rückenwind hinzu, damit unsere Seite tatsächlich ein bisschen schöner aussieht. Und wir werden tatsächlich stehlen, einige Komponenten werden nicht stehlen, aber wir werden einige Komponenten verwenden, die
einige andere Leute dankbar Open-Source haben. Also zuerst müssen wir zu unserem Basispunkt-HTML gehen. Und hier müssen wir eine Art CSS hinzufügen. Und um das zu tun, öffnen
wir einen neuen Tab und gehen Sie zum Rückenwind CSS. Mann, lass uns loslegen und mit der Installation beginnen. Gibt es ein CDN? Und hier wollen wir nicht das ganze Front-End-Zeug machen, wir wollen nur das CDN. Und das ist übrigens keine Möglichkeit, Ihr Leben in der Produktion zu leben, denn Rückenwind ist eine sehr, sehr große CSS-Datei. Aber während du lokale Arbeit machst, ist
das völlig okay. Jetzt gehen wir weiter und sehen, wie unsere Seite jetzt aussieht. Okay, das hat viel zurückgesetzt. Eine Menge, eine Menge Zurücksetzen. Also, das ist eigentlich keine schlechte Sache. Wir können jetzt alles hinzufügen, was wir wollen. Also lassen Sie uns voran und fügen Sie eine Art von Navigation hinzu. Jetzt weiß ich für eine Tatsache, dass ich diese spezielle Navigation möchte und alles, was ich getan habe, war, dies zu definieren, um Google Rückenwind Komponenten einzugeben. Und ich habe eine Navigation gefunden, die ich wirklich, wirklich mag. Und so ist das unsere Navigation hier drin. Und was ich hier tun will, ist den Code zu zeigen. Das ist der ganze Code. Wir werden das alles kopieren. Und lasst uns das machen. Lasst uns vorerst alles nach unten schieben und das oben aufstellen. Und was haben wir noch hier drin? Haben wir noch was? Also haben wir CSS, das mit ihm kommt. Bringen wir das in unseren Kopf, wo es sein soll. Und sagen wir einfach, die Komponente stammt von diesem speziellen Link, so dass sie Kredit dafür bekommen. Und mal sehen, wie das aussieht. Okay, nicht schlecht, nicht schlecht. Das wollen wir nicht alle. Und wir wollen auch hier eine Art Content-Bereich. Lassen Sie uns also anfangen, einige dieser Logos durchzuschauen. Lässt dieses Logo von Logo zu TI ändern. L steht für heute habe ich gelernt Armaturenbrett. Dieser Link kann direkt nach Hause gehen. Was brauchen wir noch? Wir brauchen Login Logout Links. Also lassen Sie uns all diese zwischen dem Haus und dem Logo loswerden. Logo, Logo, Logo Und alles, was ich getan habe, war, ein paar Sachen dort zu löschen. Also, jetzt haben wir Logout Login oder nicht Login, aber Home analog out. Lassen Sie uns Login hinzufügen, weil wir nicht wissen, ob wir gerade eingeloggt sind oder nicht. So sagen die Leute, dass sie das C einen
Logout-Link sagen , und wenn sie eine Logo-Länge zu gehen sehen, logge ich mich ein. Und wenn sie eine Login-Länge sehen, gehen sie hoch und haben sich abgemeldet. Okay, also können wir das ganz einfach machen, ohne sich ausloggen Link. Was wir tun können, ist, wenn Anfrage, dieser Benutzer authentifiziert wird. Wenn ja, wenn der Benutzer authentifiziert ist, zeigen Sie einen Logo-Link an. Und wo steht das Logo Lingo? Wir haben das in ein paar weniger geschrieben. Wir haben vor ein paar Lektionen geschrieben. Melden Sie sich ab. Lasst uns das einfach klauen. Leg es da rein. Dann können wir sagen, wenn der Benutzer nicht eingeloggt ist, sonst sind sie abgemeldet. Wir könnten die ganze Sache nehmen, kopieren und einfügen. Und anstatt sich abzumelden, wollen
wir Login, und wir wollen, dass dies sagen Login. Einloggen. Und das geht auf unsere Login-Seite. Es sieht so aus, als hätten wir nichts getan, nur weil wir hier noch keinen Inhaltsbereich haben. Lassen Sie uns auch dieses Symbol ändern. Denn wenn wir uns einloggen und abmelden derzeit die Icons oder genau das gleiche. Haben wir hier irgendwo eine Ikone? Ja. Ich Klasse Bx, Bx loggen Sie sich ab. Lassen Sie uns einloggen. Da gehen wir. Wenn sie es einfach gewechselt haben und das wieder sehen, rückgängig machen. Und ich werde mich hier auf der linken Seite erfrischen. Da gehen wir. Das hat ziemlich gut geklappt. Sie können immer nur Google als gut, Box-Icons. Lasst uns das machen. Box-Icons, CSS, Box-Icons. Und so könnten wir jedes Symbol verwenden, das wir hier wollen. Das ist ziemlich cool, weil nette Symbole auch, ich mag diese, könnten diese in einem zukünftigen Projekt von mir verwenden. Okay, also das ist alles gut. Wir brauchen jetzt einen Content-Bereich. Und an diesem Punkt wollen
wir vielleicht ein paar Sachen hier zusammenreißen. Also haben wir Flex Kohle mit 56, Yada, Yada, Yada. Lasst uns das versuchen. Div. Mein Zeug hier. Der dritte ist, lassen Sie uns etwas Polsterung hinzufügen. S, P, Bindestrich 16. Ary sind das sieht ein wenig besser aus und dann können wir all unsere Inhalte dort hineinwerfen. Scrollen wir wieder nach unten. Lasst uns das Zeug loswerden, das wir nicht mehr benutzen. Wir verwenden die Logout-Links. Das brauchen wir nicht mehr. Wir brauchen diese Personalabteilung nicht mehr. Wir brauchen den Körper und die Inhalte da drin. Und das können wir einfach nach oben bewegen. Da gehen wir. Das sieht also nicht wirklich toll aus. Ehrlich gesagt. Ich werde Ihnen nicht genau zeigen, wie Sie es stylen, nur weil das ein kompletter Front-End-Kurs für sich ist. Aber was Sie tun können, ist, dass Sie immer einfach inspizieren und sagen können, hey, ich muss diese acht anders stylen. Und Sie können Rückenwind H 1s verwenden, oder Sie können die Vorlage überschreiben und Klassen hinzufügen, wenn Sie möchten. Also lasst uns voran und loggen uns ein. Und ich bin jetzt eingeloggt und kann mich jetzt ausloggen, wenn ich es wollte. Und so haben wir einfach Rückenwind mit einer netten kleinen Navigation auf der linken Seite hinzugefügt. Vergessen Sie nicht zu irgendeinem Zeitpunkt, Sie können immer den Quellcode überprüfen, den ich unterwegs gemacht hatte. So können Sie nur den Code sehen, den ich in jeder einzelnen Lektion geändert habe.
19. Tailwind: In Ordnung, lassen Sie uns weitermachen und unsere Beiträge mit Rückenwind CSS schön aussehen. Jetzt habe ich bereits eine bestimmte Komponente gefunden, die ich wirklich verwenden möchte. Und was ich tun werde, ist nur auf meinem anderen Monitor hier, ich werde diesen Link kopieren und nach unten gehen und einfügen. Und das ist, was ich möchte, dass ein Beitrag aussieht. Nun, die Sache ist, dass wir nicht sofort alle Details haben werden. Wir müssen gehen und die in ein bisschen hinzufügen. Wir wissen nicht, wer was geschrieben hat, wir wissen nicht, ob es einen Detaillink gibt. Wir haben keine Kategorien, wir haben auch keine Titel. Es ist buchstäblich nur Text. Also, wie können wir, wie fügen wir das hinzu? Lassen Sie uns fortfahren und kopieren Sie einfach den ganzen Code. Und Sie können den Code hier sehen. Ich habe einfach alles kopiert. Und was ich tun kann, ist in meinen Feed zu gehen und wo wird jeder Beitrag gepostet oder wo wird er angezeigt? Es wird auf unserer Homepage angezeigt. Also lasst uns weitermachen und etwas Platz für uns machen, um hier zu arbeiten und das einfach reinzufügen. Und lassen Sie uns sagen, dass diese Komponente von diesem Link stammt. Nun, das wird diese drei hässlichen Beiträge ändern, um alle gleich aussehen zu lassen, aber wir können diese ändern. Und das sieht eigentlich nicht so schlimm aus, oder? Ich, das gefällt mir ziemlich viel. Also, was wir vor allem tun können, ist dieses Datum, lasst uns das Datum ändern. Wir wissen, dass jeder Beitrag ein Datumselement oder ein Datumsattribut hat, Datumseigenschaft. Okay, das funktioniert ein bisschen besser. Nehmen wir an, wir wollten nicht, dass es das vollständige Datum sagt. Wir können Pipe Date machen. Und machen wir f, j, y, g, a, und ich zeige dir, wo ich das in einer Sekunde her habe. Also, wo ich das seltsame f, j, y j ist von PHP.net Datum. Und lasst uns zum Datumsanleitung gehen. Und ich könnte auf der falschen Seite sein, aber ich habe ein Beispiel gefunden, das trotzdem funktioniert. Also hier ist die, die ich benutzt habe. Und das ist eigentlich eine, die ich in vielen meiner Projekte Geister sehr ähnlich verwenden neige. Sie können m,
d, y verwenden , und es zeigt Ihnen wie Monat, Tag, Jahr, Sie können, es wird Ihnen Beispiele zeigen, was all diese können. Es ist also nur das PHP-Datumsanleitung. Zu den Datumsformaten. Mal sehen, was das bewirkt. Ja, nein, nicht ganz. Das erste Beispiel war besser. wir einfach so, als hätte ich dir das nicht gezeigt. Okay, wir haben keinen Titel. Also lasst uns voran gehen und diesen Titel loswerden. Wo sind Sie und wir haben auch keine Kategorien. Ich werde diese Kategorie auskommentieren. Es sagt also nicht mehr Design da drin. Wir haben auch keinen Titel da drin, also lassen Sie uns den Titel ausschneiden. Und unser Beitrag soll so etwas wie dieser Post-Punkt-Text aussehen. Und das machte ihre Beiträge tatsächlich viel kleiner als erwartet. Also, was wir hier tun können, ist mal sehen. Und die ganze Sache, lassen Sie uns das einfach eine Breite geben. Wir können dies auch im Rückenwind tun, aber dieses spezielle Modul, Django to1, ist kein Rückenwind Kurs, also konzentrieren wir uns mehr auf die Django-Seite der Dinge als wir die Rückenwind Seite der Dinge sind. Aber wir brauchen immer noch Dinge zum Betrachten, und wir brauchen immer noch Dinge, die schön aussehen. Lass uns das speichern, und das sieht ein bisschen besser aus. Lassen Sie uns hier ein paar To-Dos hinzufügen. Das Lesen Sie mehr. Wir wissen noch nicht, wo das hingehen soll. Also, bevor wir dieses Modul beenden, werden
wir im Grunde alle unsere Quellcode für ein zu tun suchen, um eine Detail-URL hinzuzufügen. Und was brauchen wir noch hier drin? Wir brauchen diesen Benutzer, um anders zu sein. Und so lassen Sie uns ein weiteres To-Do hier hinzufügen. Um zu tun, Benutzer braucht einen Link zu ihrer Biografie und ein Foto und Thumbnail und Namen. Es ist also ziemlich viel. Anstatt also zu sagen, hey, ja, wir werden das alles in der nächsten Lektion tun, denn die nächste Lektion könnte wahrscheinlich 304050 Minuten lang sein. Ich weiß es eigentlich nicht. Stattdessen werden wir ein kleines To-Do erstellen, das nur sagt: Hey, zukünftige uns. Wann immer wir dies sehen, wissen Sie einfach, dass wir einen Blick darauf werfen müssen , oder wir müssen es finden, um es zu tun. Und wir müssen lesen, was es uns sagt. Es ist also eine Möglichkeit, Ihren Code zu verfolgen. Wenn deine Aufgabe nicht wie meins hervorhebt, ist das okay. Ich benutze eine Erweiterung namens Todo Baum, genannt yeah, es heißt todo Baum ist von grunt, hässlich. Also für jetzt, ehrlich gesagt, funktioniert das. Das funktioniert nicht so gut, wie wir wollen, dass es funktioniert. Alles, was wir wirklich tun wollten, war hier eine nette kleine Komponente hinzuzufügen.
20. Eine a hinzufügen: Okay, lassen Sie uns weiter gehen und Profile hinzufügen, denn im Moment haben wir keine Benutzerprofile. Und das ist eines der Dinge, die wir
in der letzten Lektion hinzufügen mussten . Wir haben sie einfach nicht. Lasst uns weitermachen und sie erschaffen. Und so alles, was wir hier
tun müssen, ist, dass Sie Python hochstart-App verwaltet, und lassen Sie uns diese Profile nennen. Und wir sehen hier einen neuen Ordner. Gehen wir in unsere Einstellungen und aktivieren Sie das. Also gehen wir in unsere installierten Apps. Ich werde es Profile nennen, weil es das ist, was es Profile heißt. Und dann können
wir in unserem model.predict ein neues Profilmodell erstellen. Also lasst uns Klassenprofil machen, und dies wird ein Benutzerprofil sein. Es braucht Modelle, Punkt-Modell, wie es geerbt wird. Vererbung. Der Benutzer wird eine Art Link zurück zum regulären Benutzerobjekt sein. Nun, wenn das ein bisschen verwirrend war, lassen Sie uns ein paar dieser Dinge schließen. Zuerst haben wir Benutzer. Und mit diesen Benutzern möchten wir
vielleicht den Vor- und Nachnamen verwenden, aber Sie sehen hier keinen Ort, um ein Bild hochzuladen. Und deshalb müssen wir das erweitern. Und so eine Möglichkeit, dies in Django zu tun, und es gibt normalerweise ein paar Möglichkeiten, Dinge in jedem Framework zu tun. Aber eine Möglichkeit besteht darin, einfach ein anderes Modell zu erstellen, z. B. das genannte Profil und den ursprünglichen Benutzer mit diesem Profil zu verknüpfen. Und das ist es, was wir am Ende tun werden. Und so sagen wir, der Benutzer ist gleich zwei Modelle, eins zu eins Feld. Und das wird einen Django-Benutzer nehmen, der in nur einer Sekunde importiert wird. Beim Löschen ist gleich Modulus-Punkt-Kaskaden. Also, wenn wir diesen Benutzer löschen, löschen Sie
auch dieses Profil. Und das gibt uns einen verwandten Namen des Profils. Tatsächlich hat uns das noch keinen verwandten Namen gegeben. Also, was ich tun werde, ist, das auszusprechen. Und wir müssen, von, wir müssen diesen Benutzer importieren. Also lassen Sie uns von Django Dot Contribute, Dot, Auth, Dot Modelle tun. Ich kann mich nie daran erinnern. Benutzer importieren. Mal sehen, ob Django sich darüber beschwert. Dass keine Beschwerden, gut, gut, gut. Gehen wir weiter und machen Migrationen. Erstellt ein Profil für uns migrieren. Und lassen Sie uns dies in unserem Admin registrieren. Werfen wir einen Blick darauf, was wir bereits getan haben. Wir haben das mit Feed Sysadmin gemacht. Also lassen Sie uns einfach alles kopieren, schließen Sie das und gehen Sie in Profile admin. Und das wird durch diese eine Zeile nach dem anderen gelesen. Wir brauchen das Admin-Modul von Modellen. Was haben wir hier Modelle? Hier gibt es keine Post-Modellierung. Es wird nicht Post genannt, es heißt Profil. Und so anstelle von Post Admin, werden
wir es Profil und Profil Admin nennen. Und lasst uns hier nachfrischen und wir werden sehen, wie wir darauf warten. Profile. Jetzt gibt es noch kein Profil. Was wir also tun können, ist, dass wir manuell ein Profil Yards anhängen können. Also lassen Sie uns hier ein neues Profil erstellen. Und dieser Benutzer wird Caleb sein, und dieser Benutzer wird zu diesem bestimmten Benutzer verlinken. Und so wird es hier immer eine Eins-zu-Eins-Beziehung geben. Jedes Mal, wenn es einen Benutzer gibt, sollte es ein Profil geben. Jedes Mal, wenn es ein Profil gibt, sollte es einen Benutzer geben. Ich würde mir dieses Profilobjekt ansehen und habe keinen richtigen Namen. Gehen wir weiter und fügen Sie diesen Eigennamen hinzu. Schön, dass das auftauchte. Taub, Unterstrich, Unterstrich, String, Unterstrich, Unterstrich. Selbst, zurückkehren, Selbstpunkt-Benutzer. Benutzername nicht. Und warte nur, bis das geladen ist. Und da gehen wir. Es hat also keinen Sinn, dies zu diesem Zeitpunkt zu haben. Aber wir werden den Benutzer erweitern, indem wir ein Profil hinzufügen, das dann eine Miniaturansicht oder eine Art Bild haben kann. Lassen Sie uns voran und aktivieren Sie dieses verwandte Namensprofil wieder. Und mal sehen, ob dies dazu führt, dass eine andere Migration nie schadet, um zu überprüfen, ob Sie eine neue Migration vornehmen müssen. Also lasst uns weitermachen und das migrieren. Und wir sind gut zu gehen. Eine letzte Sache, die wir hier tun wollen, ist, dass wir dieses Ding, das ein Signal genannt wird, hinzufügen wollen. Und so ist die Idee hier, jedes Mal, wenn wir einen neuen Benutzer erstellen, auch automatisch ein neues Profil erstellen. Und was ein Signal tut, es ist viel wie ein Web-Hook oder ein Hook in React. Oder wenn Sie aus der Zeile von JavaScript kommen, ist
es eine Menge wie ein Rückruf. Wenn also ein Benutzer erstellt wird, können
wir eine bestimmte Aktion ergreifen. Und so wird das in Django ein Signal genannt. Also lassen Sie uns def tun, erstellen Sie ein Benutzerprofil. Wir werden für den Absender fragen oder nicht fragen, aber erhalten ein Ja, der Absender, die Instanz erstellt und Schlüsselwort-Argumente. Und wenn Sie sich jemals mehr über Signale fragen, denn dieser Kurs wird nicht zu tief in Signale gehen. Der Django-Arzt, ein großartiger Ausgangspunkt. Und so lassen Sie uns einen Docstring hinzufügen und hier, Erstellen Sie ein neues Profilobjekt. Objekt. Wenn ein Django-Benutzer erstellt wird. Einfach ist, dass lassen Sie uns voran gehen und sagen, ob erstellt wahr ist. Profil Punktobjekte, Punkt erstellen Benutzer, das ist hier oben. So Profilpunkt-Benutzer ist gleich der neuen Benutzerinstanz. Und damit dies funktioniert, müssen
wir dies als Empfänger registrieren, um dieses Signal zu empfangen. Post speichern, und dieser Absender wird Benutzer sein. Und was wir hier sagen, ist, dass irgendwo ein Signal da draußen ist. Und denken Sie daran wie ein Signal im Weltraum. Und wir haben eine riesige Satellitenschüssel und wir versuchen Signale zu empfangen. Dann suchen wir nach einer bestimmten Art von Signal. Wir suchen nach einem Beitrag speichern. Also, sobald der Benutzer gespeichert ist oder einmal ein Objekt gespeichert wird, sagen wir
eher überprüfen, um zu sehen, welche Art von Daten kommen. Wenn diese Daten also ein Benutzer sind und sie gerade gespeichert wurden, führen Sie dies aus. Und so müssen wir jetzt Doo-Doo-Doo importieren Empfänger und Post speichern. Wir müssen keinen Benutzer importieren, da wir bereits Benutzer haben. Also müssen wir Receiver importieren und speichern oder posten eher speichern. Also von Django Dot DB, Punktmodelle, Punktsignale, importieren, posten ,
speichern, nope, post save. Da gehen wir. Und von Django, ich dehne meine Erinnerung hier wirklich aus. Von Django Dot Dispatch, Empfänger importieren. Django hat sich nicht beschwert. Cool. So können wir jetzt voran gehen und einen neuen Benutzer erstellen. Und idealerweise würde es auch ein neues Profil erstellen. Also gehen wir zurück in unseren Admin. Lassen Sie uns einen neuen Benutzer erstellen. Testen Geben Sie ein Passwort ein. Und sagen wir einfach, wenn wir in Profile gehen. Da ist es. Es hat es automatisch für uns erstellt. So erstellt es automatisch ein Profil jedes Mal, wenn wir einen neuen Benutzer erstellen. Und das hält nur diese Eins-zu-Eins-Beziehung existiert. Und so als eine kurze Zusammenfassung, was wir getan haben, war, dass wir gesagt haben, hey, jeder Benutzer muss ein Profil daran angehängt haben. Wir haben noch nichts Besonderes hinzugefügt, außer dass eins zu eins Feld, das diesen Benutzer wirklich mit diesem Profil verbindet. Dann sagten wir, jedes Profil sollte self.users dot username genannt werden, was auch immer dieser Benutzername ist. Es sagt also Selbstpunkt-Benutzer, gehen Sie zu diesem Benutzer, diesem Django-Benutzer. Wir wissen, dass jeder Django-Benutzer einen Benutzernamen hat und diesen
als Repräsentation für seinen Namen, seinen Objektnamen, verwenden . Dann sagten wir, jedes Mal, wenn ein Benutzer gespeichert wird, führen Sie diese Funktion aus, erstellen Sie ein Benutzerprofil. Es wird den Absender akzeptieren. Unser Absender hier. Unsere Instanz wird die Benutzerinstanz sein. Also, wenn ich einen neuen Benutzer namens test erstelle, wird
er diesen an den Testbenutzer senden, wie zum Beispiel überprüfen, ob dieses Objekt erstellt wurde. Und dann eine Reihe von Schlüsselwortargumenten, über die wir uns keine Sorgen machen müssen. Wenn ein neuer Benutzer nach dem Speichern des Beitrags erstellt wurde. Dann können wir sagen, Profil Punkt Object.Create Benutzer ist gleich dieser Instanz. Und das erstellt für uns jedes Mal ein neues Profil, wenn ein neuer Benutzer generiert wird. Und wir haben etwas über Empfänger und Signale erfahren und wie ein Signal wie eine Radiofrequenz im Weltraum ist und wie ein Empfänger wie Ihre Satellitenschüssel ist.
21. Ein thumbnail hinzufügen: In Ordnung, lassen Sie uns eine Miniaturbibliothek installieren. Also lassen Sie uns das einfach von unserer letzten Lektion schließen und wir müssen ein paar Dinge tun, um dies zu installieren. Also zuerst müssen wir eine Bibliothek finden, mit der wir arbeiten können. Also, was ich tun werde, ist, einfach meinen Browser zu öffnen und Django-Tumbnailing-Paket einzugeben. Und wir können zu Django Packages.org gehen und uns ein paar davon ansehen. Da sind Django-Tumbnails, Jim, Django, Thumbnail Maker. Wir werden Sorrell Thumbnail verwenden, weil ich mit diesem hier vertraut bin. Ich habe es in Django 101 benutzt. Wenn du Django eins zu eins genommen
hast, hast du es auch benutzt. Also wissen wir, dass es funktioniert. Und wir müssen in die Installation gehen, den Code holen. Dies ist, was wir tun pip installieren Boden thumbnail oder weil wir Pip env verwenden, Wir können es eine etwas andere Art und Weise tun. Wir können aus unserem Pip env raus und wir können Pip installieren Sorrell Thumbnail. Und wir geben dem nur eine kurze Sekunde, um seine Sache zu tun. Das ist schon erledigt. Also können wir Pip env, Shell machen. Und Pip tun. Pip zeigen Trauer Thumbnail. Und da ist es. Nun, wenn Sie nicht mit präventiven, Sie können immer einfach tun pip installieren Sorrell, Thumbnail. Sie können das auch innerhalb eines Pip env tun. Es wird es einfach nicht zu Ihrer Pip Datei oder Ihrem Pip File Dot Lock hinzufügen. Wie installieren wir dieses Ding? Wir fügen Sorrell Dot Thumbnail hinzu, nicht nur Trauer, was wir normalerweise mit dem Django-Paket tun. Nur der Name des Pakets. Wir werden den Namen des Pakets und dann einen Ordner dort machen. Und so werden wir das ermöglichen. Gehen wir also zurück zu VS Code, und öffnen wir eine settings.js. Und irgendwo hier drin, werfen Sie in Bodenpunkt-Tumbnail. Und wir sollten sehen, dass Django neu startet. Wir haben eine arbeitslose Migration. Gehen wir weiter und führen diese Migration durch. Python hat hohe Migrationen verwaltet. Und das hat nur Thumbnail 0-0,
0-1 initiale angewendet , und das ist von Sorrell Dot Thumbnail. Wie nutzen wir diese Modellnutzung nun tatsächlich? Das ist es, was wir wollen. Wir wollen von Boden Punkt, Thumbnail Import Bildfeld, und dann verwenden Bild gleich Bildfeld und dann hochladen, wo wir es hochladen wollen. Und das wird innerhalb unseres Medien-Ordners sein. So könnte es einen Unterordner erstellen. Und innerhalb unseres Medien-Ordners namens „Was auch immer“. Ich denke, wir werden das überspringen und wir werden diesen Teil hier verwenden. Lassen Sie uns also voran und öffnen Sie unsere Profilmodelle. Und wir wollen das hier drinnen hinzufügen. Und dann können wir das hier schreiben. Bild ist gleich dem Bildfeld, das von Sorrell Punkt,
Thumbnail und Upload kommt , wo immer. Nennen wir das Profile. Ich sagte, vielleicht überspringen wir es, aber vielleicht lassen wir es nicht, damit wir sehen können, was es tatsächlich tut und wohin es geht. Und jetzt können Sie sehen, dass Django beschwert war. Django sagt eigentlich, ich werde, wir können das Bildfeld nicht verwenden, weil Kissen nicht installiert ist, aber wir müssen gehen und Pillow installieren. Also lasst uns wieder aus Pip env raus. Pip installieren Kissen mit einem Kapital P. Alles klar, gehen wir zurück in unseren Pippin. Und sagen wir, Pip Show Kissen. Und das wird uns nur zeigen, dass es tatsächlich installiert wurde. Wir müssen es nicht jedes Mal überprüfen. Ich mag es, nur um sicherzugehen, nur weil ich mehrere Versionen von Python und viele seltsame Python-Puffing auf meinem Computer habe. Ich will nur sicherstellen, dass das Kissen richtig installiert ist. Wenn wir nun zu diesem Terminal gehen und Django einfach neu starten, werden
wir keine Fehler mehr sehen. Wir werden keine Beschwerden mehr sehen. Das sind also gute Neuigkeiten. Nun können wir an dieser Stelle unser Benutzerprofil bearbeiten. Gehen wir also in unseren Admin und gehen wir zu Profilen. Und es sagt, oh nein, keine solche Spalte. Nun, was wir getan haben, war, dass wir eine Migration für Boden-Tumbnail durchgeführt haben, aber wir haben keine Migration durchgeführt und dann die Migration für unser neues Feld auf unserem Profil durchgeführt. Also lasst uns weitermachen und das tun. Lassen Sie uns Python tun, die hohe Make-Migrationen verwaltet. Und weil wir sagen, dass es nicht null oder leer sein kann, müssen
wir eine einmalige. Also, was ich hier tun werde, ist, dass ich Ihnen zeigen werde, dass ich
eins tippen werde , um einen einmaligen Standard bereitzustellen. Und weil wir kein Bild haben, tippe ich die Nummer eins ein. Und das ist gut genug für das, was wir haben. Jetzt. Machen wir diese Migrationen und führen Sie diese Migrationen durch. Und lassen Sie uns zurück zu unserem Browser-Refresh. Und wir können sehen, dass das funktioniert. Kuckuck cool. Dieses Bild hat momentan eines. Wenn ich darauf klicke, geht
es zunächst an den lokalen Hostport 8 Tausend Schrägstrich 1 Punkt einen unmittelbaren Ordner. haben wir noch nicht eingerichtet. Und das Bild ist genau das, was wir eingegeben haben. Selbst wenn wir also unsere Medien-Ordner-Setup hatten, was wir nicht tun, wird dies immer noch kein Bild zeigen. Es gibt kein Bild namens „Nur eins“. Es ist normalerweise wie 1.jpg, F1 Punkt PNG, 1.und was auch immer. Und das ist einfach nicht hier. Und das ist es, was dieser getan hat. Was wir stattdessen tun können, ist, dass wir sagen, durchsuchen. Und wir könnten wie animierte ab.js JPEG auswählen und speichern weiter Bearbeitung und beobachtete s, Dies geht in Profile animiert. Jetzt wird das immer noch nicht gefunden und das ist normal. Beachten Sie, dass es einen Ordner namens Profile erstellt und dann das Bild für uns hochgeladen hat. Das ist also alles, was wir für diese spezielle Lektion tun werden, wir werden daran arbeiten, dies tatsächlich zum Laufen zu bringen, indem wir unsere Medien-URLs hinzufügen.
22. Medieneinstellungen hinzufügen: Okay, also haben wir noch nicht unsere Medien-URL eingerichtet und wir müssen das tun. Der Grund, warum wir das tun, ist, weil es im Grunde
Django sagt , wo alle unsere Dateien hochgeladen werden sollen. Wenn wir nun schauen, wenn wir uns dies in unserer linken Spalte hier ansehen, gibt es bereits einen Ordner namens Profile. Und so fügte es nur animierte DOJ hinzu. Und das bin ich als animierte Figur. Mein Freund Steve hat das für mich gemacht. Also wollen wir das nicht. Wir wollen, dass all diese Bilder tatsächlich in einen eigenen Ordner namens Medien gehen. Also zuerst, was ich tun werde, ist, dass ich das einfach löschen
werde weil es nicht dorthin gehört. Und kein Schaden, wenn Sie gelöscht haben, weil wir derzeit keine funktionierenden Bild-URLs haben. Also zuerst, lassen Sie uns das schließen und in unsere settings.js gehen. Und das ist irgendwo, ich weiß nicht,
ich schätze, in der Nähe der Spitze. Lasst uns das einfach machen. Wir brauchen eine Medien-Wurzel. Medienstamm ist gleich etwas. Os Punkt, Punkt verbinden. Und dann die Basis-Dirre, die von Linie 16 direkt über uns kommt. Und ein Ordner namens Medien. Und dann werden wir sagen, dass Medien-URL, wie das serviert werden sollte, wird Schrägstrich Medien mit einem Schrägstrich am Ende sein. Das reicht nicht aus, um uns dorthin zu bringen. Wir müssen auch in unsere Django-URLs oder URLs gehen. Und wir müssen zunächst unsere Einstellungen einschließen, da wir
diese Medien-URLs verwenden , die wir von Django.com Importeinstellungen vornehmen. Und wir müssen hier noch einen importieren. Und das wird von vertrauten URLs kommen, das ist Papa. - Ich glaube. Lassen Sie uns das einfach überschreiben, damit wir nicht alles nochmal eingeben müssen, statisch. Und wir wollen einschließen, ist statisch. Nun, das reicht immer noch nicht. Alles was wir getan haben, war ein paar Sachen zu importieren. Wir müssen es tatsächlich zu unseren URL-Mustern hinzufügen. Also, was wir hier sagen können, ist die URL-Muster plus statisch, und dann wollen wir, dass settings.js Medien-URL. Und das Dokumentstamm wird settings.js Medien-Route sein. Und was das tun wird, ist zu sagen, hey für Ihre statischen URLs, während Sie auf localhost laufen, nicht in Produktion, weil Sie Ihre Mediendateien nicht über Django in der Produktion bereitstellen möchten, das ist nicht sicher vor dem, was wir hier tun , das ist völlig in Ordnung. Wir werden sagen, verbinden Sie diese Medien-URL mit dieser Medien-Route. Und gehen wir zurück und schauen uns das an. Dann. Medien-URL Schrägstrich Medien. Also Ihre website.com Schrägstrich Medien. Mit dieser Medien-Route,
dass, dass der Ordner, den wir am Ende erstellen werden. Also lasst uns voran gehen und das speichern. Und gehen wir zurück zu Firefox. Und wir können das schließen. Lassen Sie uns nur die Seite aktualisieren. Sieht so aus, als hätte sich nichts geändert, aber wenn ich animierte, speichere, bearbeite, sieht es wieder so aus, als hätte sich nichts geändert, aber diese URL hat sich jetzt geändert. Diese URL. A zeigt und B sagt, Logos Port 8 Tausend solche Medien Schrägstrich Profil animiert. Es hat die Medien da drin. Und diese Profile kommen aus, wenn wir zu Profilmodellen gehen, die von dort kommen. Und so können wir jetzt tatsächlich auf der linken Seite in unseren Ordnern sehen, wir haben Medien und dann Profile, und dann animiert, Ausweichen einer Tasche. Wenn wir nun einen Git-Status machen, wird
dieser Status uns zeigen, dass wir Medien
zu unserem Repository hinzufügen können und wir das nicht wollen. Also wollen wir unseren Gitignore öffnen. Und ich warf normalerweise irgendwo auf den Boden. Ich habe gerade einen Schrägstrich getippt. Und dann, wenn wir hier einen anderen Git-Status machen, können
wir sehen, dass Medien nicht auftauchen. Also machen wir git add git commit, und dann können Sie Ihr normales Git-Commit machen. Und das wird einfach nicht jedes Jahr alle Ihre Bilder in Ihr Repository übertragen. Denn wenn Sie 20304050 Leute haben an einem Repository
arbeiten und alle ihre eigenen Testbilder hinzufügen. Dieses Repo wird wirklich, wirklich groß und du wirst ihre Dateien jedes Mal
herunterladen, wenn du einen Git-Pull machst. Und es ist nur kein Ort, an dem du leben willst. Das ist also wirklich alles, was es dazu gibt. Lassen Sie uns aber einen kurzen kleinen Rückblick machen. So fügen Sie ihre Medien-URL hinzu. Wir fügen eine Medien-Route und sofortige URL hinzu. Dann gehen wir zu unseren URLs dot pi, wir importieren statisch, wir importieren Einstellungen, und dann sagen wir URL-Muster plus statisch. Und dann verbinden wir diese Medien-URL mit einem Dokumentstamm, die auf Medien-Route zeigen wird.
23. Autoren zu Posts hinzufügen: Eine Rate zu diesem Zeitpunkt, wir haben jetzt Feed, Medienprofile, Vorlagen. Wir haben alle möglichen Sachen hier drin. Lasst uns weitermachen und unser Futter öffnen. Und was wir tun wollen, ist, dass wir
einen Beitrag und Autor geben wollen, weil wir derzeit nicht wirklich wissen, wer etwas veröffentlicht. Es kann an dieser Stelle völlig anonym sein. Und vielleicht wollen wir das nicht. Vielleicht wollen wir, dass die Leute einander folgen können, wie auf Twitter, Instagram, so etwas. Und was wir hier brauchen, ist ein Fremdschlüssel für einen Autor. Und so können wir tun, der Autor ist gleich Modellen und Punkt Fremdschlüssel. Und das wird den Django-Benutzer akzeptieren
, den wir in nur einer Sekunde importieren müssen. Löschen ist gleich zwei Modelle Punkt Kaskade, was bedeutet, wenn wir löschen, dieser Benutzer, löschen Sie auch ihre Beiträge. Und dann, wenn wir wieder nach oben gehen, könnten
wir von Django.com tun, Trip Dot Auth, Punkt-Modelle, Import Benutzer. Denk, das ist großartig. Ich habe es schwer, mich an dieses zu erinnern, aber ich bin mir ziemlich sicher, dass es Django.com Trip dot-dot-dot Modelle ist. Es, ich habe es in Django gespeichert, neu gestartet und es gab keine Probleme. Vermutlich war das alles, was wir tun mussten. Gehen wir also voran und machen Migrationen. Und der Grund, warum wir Migrationen machen, ist, dass wir ein Autorenfeld zu unserem Beitrag hinzugefügt haben. Wir haben jedes Feld zu unserem Modell hinzugefügt, wir müssen Migration machen. Jetzt wird das sagen, wollen wir beenden und einen Standard geben? Also werden alle Beiträge standardmäßig für einen bestimmten Benutzer verwendet, oder möchte ich sagen, dass Sie jetzt einen einmaligen Standard bereitstellen? Und, weißt du, vielleicht ändern wir es manuell auf der Straße. Ich werde sagen, lassen Sie uns jetzt eine bereitstellen und wir können die Straße manuell ändern. Und ich werde nur sagen, dass jeder Beitrag von der Benutzer-ID Nummer eins kommt. Und wir können uns in einem Augenblick mit den Folgen auseinandersetzen. Also lass uns weitermachen und das schließen. Und schauen wir uns unsere Beiträge an. Oh, keine solche Spalte, die tatsächlich viel Sinn macht, weil wir diese Migration gemacht haben, aber wir haben sie noch nicht wirklich migriert. Da gehen wir. Mal sehen. Unser erster Beitrag war Autor Caleb. Und als ich einen eingegeben habe, war
alles, was tat, den ersten Benutzer zu finden. Wo sind meine Benutzer? Also habe ich diese Benutzer hier drin. Und ganz oben können
Sie Benutzer-ID sehen, eine in dieser URL. Und von dort habe ich das hier bekommen. Wenn wir wollten, dass alle Benutzer unser Testbenutzer sind oder alle Beiträge, die von unserem Testbenutzer verfasst werden, würden wir
eher Nummer zwei sagen. Und jetzt, wenn wir einen Beitrag hinzufügen, können
wir einen Autor auswählen. Es wird ein Benutzer aus unserer App sein. Und wir können ihm einen Text geben. Und momentan sind alle unsere Beiträge von mir.
24. Die author zu Vorlagen hinzufügen: In Ordnung, lassen Sie uns weitermachen und unser Autorenbild und den Namen jedes Beitrags hinzufügen. Also, wenn wir zurück zu unserer Anwendung hier auf unserer Homepage gehen und aktualisieren, haben
wir nichts mit der Vorlage gemacht und alles ist nur das Standard-Zeug, das wir hier finden. Also lasst uns voran gehen und dieses Bild ändern, und lasst uns auch diesen Namen ändern. Also lassen Sie uns weitermachen und unsere Homepage öffnen. Und hier drin, weil wir unser
Thumbnailing benutzen wollen , lebe ich Thumbnailing Library oder Thumbnailing Paket. Wir müssen das in diese Vorlage laden. Und das sagt nur Django, hey, wir werden ein Paket namens
Thumbnail verwenden oder eigentlich eine Datei namens Thumbnail laden. Und es ermöglicht uns, alle Funktionen innerhalb einer Datei oder eines Moduls namens Thumbnail zu verwenden. Und so können wir das tun. Das ist, wo sind wir hier? Wo sind wir hier? Wir müssen dieses Bild und diesen Namen ersetzen. Jetzt haben wir keinen Autor, also können wir diesen Namen sofort ersetzen. Jeder Beitrag hat einen Autor und jeder Autor hat einen Benutzernamen. Und so lassen Sie uns diese Verbindung sofort herstellen. Jeder Beitrag hat einen Autor, der ein Benutzerobjekt erstellt. Und wenn wir in unserem Admin sind und wir uns Benutzer ansehen, hat
jeder Benutzer einen Benutzernamen direkt dort. Also lass uns weitermachen und okay, sieh dir das an. Jeder Beitrag hat jetzt von mir gemacht. Das ist also richtig. Das ist eigentlich richtig. Wird Beiträge später mit verschiedenen Benutzern machen, nur um zu demonstrieren, das zu demonstrieren. Lasst uns weitermachen und dieses Bild ändern. Jetzt wird dieses Bild ein bisschen kniffliger, weil wir ein Drittanbieter-Paket verwenden. Was wir also tun können, ist, durch dieses Paket von Drittanbietern zurückzugehen. Und wie verwenden wir das in unserer Vorlage? Wir laden Thumbnail. Von dort habe ich das bekommen. Und dann ist die einfache Verwendung genau hier. Und wir verwenden ein Template-Tag namens Thumbnail. Wir geben ihm die URL oder das Objekt des Bildes, die Bildgröße, welche Art von Zuschneiden wir wollen. Und dann setzen wir es als Variablennamen. Und dann innerhalb unseres Bildes können wir diese Bild-URL setzen, diese Bildbreite, und das Bild, Ich denke, ich sagte, dass Bild URL setzen, Höhe und Breite. Wir müssen es eigentlich nur besorgen. Und so ist es, was dieser jemand, der tun wird. Und dann sagen wir n Thumbnail, nur damit wir
aufhören können , diese IM-Variable in unserer Vorlage zu verwenden. In der Tat, was ich tun werde, ist, dass ich das buchstäblich kopieren werde und ich werde es ändern. Jetzt. Woher bekomme ich das Bild von ly, bekomme das Bild von unserem Post-Autor. Und wenn wir hier in unsere Profile gehen, werden wir sehen, dass jeder Autor ein Eins-zu-Eins-Feld hat, oder jeder Benutzer hat ein Eins-zu-Eins-Feld und dieser Benutzer hat ein Bild. Und was wir hier tun können, ist, anstatt Post Autor Benutzername zu sagen, können
wir sagen, Post Punkt Autor Profil, glauben, das ist, was wir es genannt. Das ist ein verwandter Name hier, Profilpunktbild. Und das verbindet unseren Benutzernamen oder unseren regulären Benutzer eher mit unserem Profil unter Verwendung des verwandten Namens Profil. Und dann gibt uns Zugriff auf alles andere innerhalb dieses Modells hier, einschließlich Bild. Und wollen wir das auf 100 mal 100 mit 373 zuschneiden? Also lasst uns das Gleiche hier machen. 373 mal drei,
73, Zentrieren ist in Ordnung. Und lasst uns das einfach einrücken. Und jetzt müssen wir diese URL so ändern, dass die Quelle, diese Bildquelle wird nicht mehr von einem Spritzer stammen. Und Bildquelle wird I M Punkt URL sein. Und das habe ich von hier. Ich m Punkt-URL. Lasst uns das retten. Und mal sehen, was passiert. Habe ich einen Tippfehler? Vielleicht, vielleicht nicht. Aha, sieh mal, da bin ich. Das bin ich. Er hat mich animiert. Jetzt gehen wir weiter und fügen Sie noch einen Beitrag hinzu und hören Sie von jemand anderem ,
damit wir wissen, dass es nicht nur immer ich da drin ist. Lassen Sie uns voran und erstellen Sie einen neuen Beitrag. Ein Zettel. Aber lassen Sie uns einen Beitrag hinzufügen. Das ist es, was wir wollen. Dies ist von einem Testbenutzer. Der Autor wird Test sein. Speichern. Und lassen Sie uns in unsere Profile gehen. Und lassen Sie uns unseren Testbenutzer bearbeiten. Denn dieses Bild wird derzeit nicht gefunden, nicht nützlich sein. Lass uns das auf das Foto von mir ändern. Speichern. Da gehen wir. So funktioniert es in der Tat. Jetzt ist dies keine Verknüpfung mit einem Höhenplan. Dies ist keine Verknüpfung zu einer Read More Ansicht oder einer dedizierten Ansicht. Wir werden schon bald damit anfangen. Aber jetzt müssen wir nur dieses Bild und diesen Namen zum Laufen bringen.
25. Detailansicht für die Details: In Ordnung, lassen Sie uns fortfahren und fügen Sie eine Detailansicht des Beitrags und einen Link hinzu. Wir haben diese To-Dos Eigentlich kann
dieses aus dem letzten Video aufgeräumt werden. Oh, nein, das ist nein, das ist immer noch ziemlich richtig. Wir müssen diese URL immer noch drin haben. Fügen Sie die URL unten hinzu. Also lass uns das einfach schließen und vielleicht öffnen wir uns. Lassen Sie gehen, um URLs zu Feed. Und wir haben bereits eine Homepage-URL hier drin, und lassen Sie uns eine neue URL setzen. Und was wir tun können, ist so ziemlich das zu kopieren und wow, wir mussten das nicht überschreiben. Lassen Sie uns das nicht über den Pfad kopieren. Ich werde int sagen, und das wird ein PK sein. Ich werde beschreiben, was diese in nur einer Sekunde mit einem Schrägstrich sind. Das ist, was das sein wird, im Grunde unsere URL, also unsere website.com Schrägstrich und dann ein Beitrag anzeigt Punkt Post Detailansicht als Ansicht. Wir haben das noch nicht erstellt, aber das werden wir, und wir geben dem einen Namen von Details. So detaillierter Blick. Jetzt ist die Post-Detailansicht nicht vorhanden. Wir müssen das dort existieren lassen, wo kommt das her? Unsere Ansichten. Und es gibt tatsächlich einen Syntaxfehler direkt dort. Da gehen wir. Das sollten wir sagen. Wir sollten sehen, Modul phi Dot Ansichten hat kein Attribut. Veröffentlichen Sie eine Detailansicht. Gehen wir weiter und fügen Sie das hinzu. So können wir Klasse Post Detailansicht tun. Und das wird eine Detailansicht sein. Also müssen wir das in
der sehr oberen Detailansicht importieren, die aus unseren generischen Django-Ansichten stammt. Lassen Sie uns voran und sagen, HTTP-Methodennamen ist gleich einer Liste und erhalten nur wie verfügbar. Das könnte der Standard sein, aber ich mag es, dass
der Vorlagenname sowieso Feed Schrägstrich Detail Punkt HTML sein wird. Dort wird das leben. Und wir sagen Feed, denn das kommt von hier drüben, Namespaces. Wenn wir also 20 andere Apps hatten, fügen wir
vielleicht Feeds und Feeds hinzu. Plural, wäre es wichtig, Namespace o. Also, wenn wir solche Details füttern und Feeds Schrägstrich Detail, könnten
wir sagen, Füße oder Feeds Schrägstrich Detail. Und dann sind einfach eine Art Namespaces Vorlagen für uns, weil Django
überall nach einer Vorlage suchen wird und Sie nie wissen, welche zuerst gefunden wird. Eigentlich ist das nicht wahr. Sie werden wahrscheinlich zu einem wissen. Es wird zuerst finden, wenn es das falsche zeigt. Und du willst einfach nicht in diese Verwirrung geraten. Das Modell wird ein Postmodell sein. Und der Kontextobjektname ist standardmäßig, glaube
ich, normalerweise Objekt, aber ich ändere das gerne, um den Namen meines Modells zu sein. Es wird Beiträge sein. Also in der Vorlage kann ich einfach Post schreiben. Nein, posten. Nun gehen wir zurück zu unserer Homepage und lassen Sie uns einen Link zu dieser Detail-URL hier hinzufügen. Also, diese Verbindung, woher soll das kommen? Also sagen wir, öffnen Sie unsere Syntax-URL, Feed-Detail, und dann geben wir ihm eine ID, so dass post.all. Und lasst uns schnell übergehen, was ich gerade dort gemacht habe. Also für jeden Beitrag, in Beiträgen, wenn ich in Modelle gehe, wissen
wir, dass es eine ID gibt und wir können diese ID sehen, wenn wir in unsere Migrationen anfänglich gehen, jedes Modell hat eine ID. Jedes Modell verfügt standardmäßig über eine ID. Und das ist, wo wir diesen Ausweis bekommen. Ein gelegentlich, Sie werden anstelle von ID sehen, Sie werden die Buchstaben pk, Primärschlüssel sehen. In Django. Sie sind das Gleiche. Also Feed ist unsere App, und das kommt von unseren Namespace-URLs. Und dann detailliert, was wir gerade in unseren URLs geschrieben haben. Das ist also das Detailteil, das ist das Vorschubteil, Detailperle. Um weiterzumachen und das zu retten. Und wenn wir unsere Tonhöhe aktualisieren, sollten
wir sehen, dass dies jetzt zu einer URL geht und dies wird zu Schrägstrich für Post Nummer vier gehen. Und das ist alles, was es dazu gibt. Wir müssen nur unsere Vorlage hinzufügen. Und so haben wir tatsächlich diese Verbindung funktioniert. Nun, wenn ich zurückgehe und auf die davor klicke, wird
dies auf drei gehen und zurück gehen und zu der davor gehen, wird es zu zwei gehen.
26. Post: In Ordnung, lassen Sie uns weitermachen und jedem Beitrag eine Detailansicht hinzufügen. Also haben wir gesagt, der Name der Vorlage muss Feed Schrägstrich Detail index.html sein. Also lassen Sie uns weiter gehen und fügen Sie Detail Punkt HTML in unsere Vorlagen hier. Also füttern, Vorlagen, Feed. Lassen Sie uns eine neue Datei hinzufügen, die hier detaillierte layout.html genannt wird. Und lassen Sie uns einfach diesen Test machen. wir einfach sicher, dass das funktioniert, bevor wir zu weit hineinkommen. Und es funktioniert. Also jetzt wissen wir, dass wir von
unserer Basispunkt-HTML-Datei erweitern wollen , so dass wir alle unsere Leckereien drin haben. In dieser Basispunkt-HTML-Datei. Wir haben Körper und einen Titelblock. Also wollen wir das Schriftfeld hier drin. Lass uns weitermachen und das kopieren. Und um diesen Titel zu ändern, lasst uns noch nichts Verrücktes machen. Lassen Sie uns einfach einen benutzerdefinierten Titel machen, nur um sicherzustellen, dass das funktioniert. Wir können auch Block Körper hinzufügen, mehr Zeug hier drin. Und es ist nicht verlängern erstreckt sich. Wenn Sie San Kayla schreien und schreien, haben Sie es falsch gemacht. Ok, da gehen wir. Und der Titel sagt einen benutzerdefinierten Titel. Okay, lassen Sie uns voran und ändern Sie unseren benutzerdefinierten Titel zu unserem gesamten Beitrag, Post Punkt Text von Post Dot Autor Punkt Benutzername. Und das wird ein ziemlich langer Titel sein. Wenn Ihr Beitrag 240 Zeichen hat, wird
dies ein super langer Titel sein. Wie würde das haben, dies ist ein zweiter Beitrag von Caleb, Kuckuck. Kuckuck. Das ist, wenn wir uns ansehen, gehen wir zurück. Dies ist von einem Testbenutzer durch Test. Mehr Zeug hier drin zeigt nichts. Aber was wir tun könnten, ist, dass wir Post-Doc-Text sagen könnten. Und es zeigt unsere, unsere kleine Botschaft. Und so bewegt es sich jetzt. Dies ist ein zweiter Beitrag. Dies ist der zweite Beitrag aus unserer ListView zu unserer Detailansicht. Und wenn Sie sich fragen, woher ich das habe, in unserer Post-Detailansicht habe
ich
in unserer Post-Detailansichtals gleich nach dem Posten modelliert. Und der Kontextobjektname ist gleich post. Und deshalb sind wir in der Lage, Post-Tenure Postdoc-Text zu verwenden, es nicht Objekt und 0.2x, was es standardmäßig sein würde, es ist Postdoc-Text. Jetzt gehen wir weiter und lassen das ein bisschen schöner aussehen. Also habe ich bereits eine Komponente aufgereiht,
eine, die ich verwenden möchte. Das ist das hier. Was ich tun kann, ist einfach diesen Code zu kopieren. Und wir werden diesen Code hier einfügen. Und wir brauchen ein Date. Und das wird ein Post-Doc Date sein. Wir verwenden keine Kategorien, wir verwenden keine Titel und wir wollen nur hier schreiben. Also lassen Sie uns voran und ändern Sie dies zu unserem Post-Punkt-Text. Werfen wir einen Blick. Und wie das bis jetzt aussieht. Eine zu viele geschweifte Klammern dort. Wir lesen nicht mehr, wir brauchen das da drin nicht, lesen mehr und werden das loswerden. Und im Grunde, was wir hier tun, wie an diesem Punkt, wir nehmen alles hier von unserer Homepage rein und wir werden es einfach kopieren. Und in der Tat können wir das Ganze tun. Also, anstatt den langen Weg zu gehen und alles manuell zu tun, was wir tun können, ist, hier reinzukommen, fügen Sie es von unserer Homepage. Und es sagt ungültiges Block-Tag in Zeile 22, Thumbnail. Und das liegt daran, dass wir das nicht geladen haben. Wir müssen in Thumbnail laden. Laden Sie also Thumbnail. Jetzt ha, und das sieht ziemlich gut aus. Jetzt haben wir dieses Problem, wo wir einen Read More Link
haben und wir sind bereits auf der Detailansicht. Das wird also nur zu sich selbst verlinken. Also, das ist nicht gut. Wie werden wir das loswerden? Nun, was wir tun können, ist, dass wir dies in eine eigene Vorlage verschieben können, um ihm
eine benutzerdefinierte Variable zu geben , um zu sagen, sollte etwas auftauchen oder sollte etwas nicht auftauchen? Und in unserer nächsten Lektion werden wir über das Include-Template-Tag sprechen.
27. Tags hinzufügen: Okay, gehen wir weiter und fügen ein Include-Tag hinzu. Also, was ich hier sagen will, ist, dass ich das einfach an einen Ort verschieben werde, an dem ich einschließen kann. Und die Idee hier ist, dass wir ähnlichen Code oder denselben Code mehr als einmal schreiben können, oder vielmehr nur einmal an einem Ort und an mehr als einem Ort enthalten. Und so haben wir diesen Code hier in unserer Detailansicht. Und es ist identisch mit dem, was auf unserer Homepage hier ist, genau
der gleiche Code. Und was wir hier tun können, ist, dass wir diesen Code im Grunde schneiden können und wir können an einen Ort gehen , an dem es nach Vorlagen suchen wird. Und es wird nach Vorlagen in TIL-Vorlagen suchen. Lassen Sie uns voran und erstellen Sie eine neue Datei. Ich gebe ihm einen Ordner namens enthält erste Includes. Und ich werde es post.html nennen. Und ich werde das alles einfach hier einfügen. Und auf unserer Homepage, anstatt all das zu schreiben,
was wir bewerten können, ist,
enthalten, Das ist der Ordner, den ich es in, post.html mit einigen Kontexten. Dieser Punkt wird also ein Posten sein. Und so für jeden Beitrag auf der rechten Seite hier, das ist dieser. Wir werden es auch in diese post.html mit dem Namen des Beitrags werfen
, der uns nur erlauben wird, diese postdate, Post Texte zu schreiben. All das gute Zeug. Also lasst uns voran gehen und das speichern. Und mal sehen, ob ich hier auf der Homepage Fehler habe. Gehen wir auf die Homepage. Oh, sieh dir das an. Ich habe keine Miniaturansicht geladen. Auf unserer Homepage haben wir ein Miniaturbild, das eigentlich nicht benötigt wird, weil es in dieser Datei nicht verwendet wird. Wenn wir in unsere post.html gehen, können
wir das tatsächlich einfach kopieren und einfügen und das dort ausschneiden und einfügen. Und das wird für uns funktionieren. Und der Grund dafür ist, dass dieses Thumbnail tatsächlich in dieser Datei-Startseite verwendet wird. Es wird nicht in dieser Datei verwendet. Also lasst uns weitermachen. Und das war übrigens innerhalb der for-Schleife in unserer Detailansicht. Lasst uns weitermachen. Und in unserem Körper, fügen Sie das auch rein. Wir werden sagen, gehören, enthält Schrägstrich post.html mit Post ist gleich Post. Und wir brauchen das Thumbnail nicht, da Thumbnails nicht mehr in dieser Datei verwendet werden, es wird nur in post.html verwendet. Also lassen Sie uns all das speichern und aktualisieren. Und lasst uns hier gehen. Und es sieht so aus, als würde es herausfiltern, was ziemlich nah ist. Das ist es, was wir wollen. Was passiert, wenn wir nicht wollen, dass das hier drin mehr gelesen wird? Wir sind bereits in der Detailansicht. Wir brauchen keinen Link zurück zu dieser Detailansicht. Lassen Sie uns voran und fügen Sie hier eine neue Kontextvariable hinzu. Details anzeigen. Link ist gleich true. Und ich werde das einfach kopieren, diesen Namen. Und in meiner post.html werde
ich hier eine Lese mehr einfügen. Also, wenn nicht ein Lesen mehr, wie ist das Lesen? Lesen Sie mehr? Und versuchen, zu viele Dinge auf einmal zu tun. Keine Detailansicht. Und es macht mir nichts aus, dass da ein Tippfehler drin ist. Ich werde das in ein bisschen reparieren. Und was wir hier sagen, ist, wenn Sie post.html einschließen, auch in Post setzen und Detaillink innerhalb dieser Datei anzeigen. Und so, wenn Show Detail Link existiert und es in der Tat wahr ist, können
wir zeigen, dass Read More Link. Ansonsten wird es keine Detailansicht sagen. Auf unserer Detailansicht. Es gibt keine Detailansicht und das liegt daran, dass wir das nicht reingestellt haben. Dies ist unsere Detailansicht, das ist unsere Homepage. Wenn wir jedoch auf unsere Homepage gehen, dieser Link immer noch angezeigt. Und das ist genau das, was wir wollen. Jetzt brauchen wir nicht, dass kein Detailansichtstext da drin ist. Also lasst uns hier klicken und das bewegt alles über. Vielleicht wollen wir vielleicht etwas da drin. Lassen Sie uns einfach eine Spanne hinzufügen. Und nbsp, nur eine Kraft, dass Text da drüben. Und das ist nur, weil wir Flex verwenden und es zwischen gerechtfertigt ist. Also brauchen wir hier mindestens zwei Gegenstände. Entweder das Lesen mehr Element oder die leere Spanne plus ein div für all dies. Nun, was daran schön ist, ist, wenn wir dies in diesem Include tun, wenn wir ein Include schreiben, müssen
wir nicht durch mehrere Dateien gehen und diese URL später ändern. Wir können einfach die Datei post.html durchlaufen, sofort ändern. Und es wird es für uns an mehreren Orten ändern. Also momentan geht dieser Link absolut nirgends. Und auf der Homepage geht dieser Link auch nirgendwo hin. Aber sobald wir das geändert haben, weil beide auf dieselbe Datei zeigen. Detail beinhaltet post.html und Homepages einschließlich post.html. Wir müssen nur den Inhalt oder die URLs oder die Struktur auf post.html ändern.
28. Post: Lassen Sie uns voran und erstellen Sie eine neue Create-Ansicht zum Erstellen von Beiträgen, denn jetzt können wir nur Beiträge über den Admin erstellen. Also dieses Zeug hier, Verknüpfen zu einer Profilansicht, wird in ein wenig darauf zurückkommen. Deshalb haben wir hier ein Todo geschrieben. Also lassen Sie uns alles aus unserer letzten Lektion schließen. Und wenn wir eine neue Ansicht erstellen, wollen wir zu unseren URLs gehen und wir wollen hier nur etwas Neues schreiben. Also lasst uns schreiben, nun, zuerst, lasst uns am Ende ein Komma geben. Pfad. Neu mit dem Schrägstrich. Lassen Sie uns gehen und Ansichten hinzufügen. Erstellen Sie einen neuen Beitrag. Alle als Ansicht. Und der Name wird sein, schätze
ich, neuer Beitrag. Nun, das existiert nicht. In Django beschwert sich darüber. Also müssen wir gehen und erstellen Sie eine neue Ansicht erstellen neue Beiträge innerhalb unserer Ansicht ist Dateiklasse. Erstellen Sie einen neuen Beitrag. Wir wissen noch nicht, was für ein Modell das sein wird. Wir müssen etwas erschaffen. müssen wir. Es ist buchstäblich richtig im Namen dort. Wir müssen den Beitrag erstellen. Also werden wir eine Sache verwenden, die als Create-Ansicht bezeichnet wird. Und woher das kommt, ist von Django, Punkt, Punkt, Punkt, generisch, Punkt, bearbeiten, importieren, Ansicht erstellen. Und das ist Teil unserer Crud-Operationen, Crud-Operationen. Also, jetzt diese neue
erstellen, neue Beiträge erstellen Ansicht muss ein Modell haben und es wird einen neuen Beitrag erstellen. Wir geben ihm einen Vorlagennamen. Und das wird Feed stilvoll erstellt Punkt-HTML, die übrigens, wenn Sie nicht wissen, was auf einer Create-Ansicht kommt, können
Sie immer zu CC BY VSCO WK gehen. Und das zeigt Ihnen klassische klassenbasierte Ansichten für Django. Und das wird dir buchstäblich alles zeigen, was du sehen willst. Sie möchten sehen, was eine Erstellungsansicht hat, alle Methoden und Eigenschaften darauf. Sie können sie alle dort sehen. Und die Felder, die wir in Ihrem hinzufügen möchten, Nun, lassen Sie uns unsere postmoderne Notiz öffnen. Es geht um Modelle zu füttern. Und das einzige, was wir hinzufügen möchten, ist Text. Wir möchten, dass der Autor
automatisch ein Audit hinzugefügt wird, damit ich keinen Beitrag für Sie erstellen kann. Also lasst uns voran gehen und sagen, dass das einzige Feld dort besteuert wird. Und das wird eine Liste sein. Jetzt müssen wir diese erstellt Punkt-HTML-Datei erstellen. Und so haben wir gesagt, dass es in der Feed-HDF5-Datei in unserer Vorlage sein wird. So neue Datei, Vorlage wird zu erstellen dot HTML. Und lassen Sie uns voran und erweitert unsere Basispunkt-HTML-Datei. Und geben wir ihm einen Block, Titel. Erstellen Sie einen neuen Beitrag. Und geben wir ihm einen Körperblock. Und hier können wir sagen, Form Punkt als P und das wird alle unsere Formularelemente in Absatz-Tags setzen. Nun, das ist nett und alles, aber es gibt keinen Link hier, um tatsächlich einen zu erstellen. Also lasst uns hier einen neuen Link erstellen. Lassen Sie uns also unsere Homepage öffnen. Nee, öffnen wir unseren Basispunkt-HTML und es ist bereits zusammengeklappt. Nehmen wir an, wenn der Benutzer authentifiziert ist, kann er sich abmelden. So können sie auch einen neuen Beitrag erstellen. Also lasst uns das kopieren. Und wir werden New Post sagen. Woher kommt diese Verbindung? Dieser Link kommt von Feed New Post. Also müssen wir das da drin hinzufügen. So geben wir Feed Doppelpunkt New Post. Und wir werden wahrscheinlich dieses Symbol ändern wollen. Aber im Moment, mal sehen, ob das funktioniert. Neuer Beitrag geht an nu. Wir haben Text da drin. Dies funktioniert jetzt dies wird zu diesem Zeitpunkt nicht tatsächlich einen neuen Beitrag erstellen. Also, wenn du das testen willst und es nicht funktioniert, ist
das normal, das wird erwartet. Wir haben noch ein paar Dinge, die wir hier tun müssen. Dieser neue Beitrag aber, lassen Sie uns voran und ändern Sie das Symbol. Und woher kommt das? Das kommt vom Box-Icon. Also lassen Sie uns diese Box Symbole sehen. Google ist dein bester Freund. Und suchen. Plus vielleicht. Lassen Sie uns Layer plus hinzufügen. Und so klicken wir darauf und es sagt, Name ist Schicht plus. Und das ist eine Web-Komponente. Der gerade HTML, das ist ziemlich cool. Ich wusste nicht, dass wir das als Schriftart machen können. Wir wollen Bx, Bx Schicht plus. Jetzt sieht ein bisschen anders aus als das, was ich getan habe. Wo sind wir? Wo sind wir? Wo sind wir? Bx, Bx logout. Wir wollen Schicht plus. Da gehen wir. Jetzt können wir zu unserer neuen Post-Ansicht gehen. Jetzt haben wir ein Problem damit. Das Problem ist, dass jeder hierher kommen kann und im Wesentlichen versucht hat, einen neuen Beitrag zu erstellen. Jetzt ist es nicht angeschlossen, also wird es nicht funktionieren. Aber jeder kann reinkommen. Also lassen Sie uns das kopieren und öffnen Sie ein neues Inkognito- oder privates Browserfenster. Und es funktioniert für mich, solange ich nicht eingeloggt bin. Und so müssen wir den Benutzer zwingen, eingeloggt zu sein. können wir ganz einfach machen. Ich werde dir in der nächsten Lektion zeigen, wie du das machst.
29. Authentifizierung zwingen: Okay, schauen wir uns an, wie wir den Benutzer dazu zwingen können, eingeloggt zu sein. Denn gerade ein Benutzer muss nicht eingeloggt
sein um zu versuchen, einen Beitrag zu erstellen. Und das wollen wir nicht. Wir möchten, dass sie immer eingeloggt sind. Und so gehen wir weiter und öffnen unsere Redakteurin und schließen alles. Und ich werde Ihnen den einfachsten Weg zeigen, dies zu tun. Und wir gehen in unsere Ansichten und wir werden dieses Ding importieren, das Mixin genannt wird. Also von Django dot contrib, nope, dot auth, dot mixins. Jetzt werden wir herausfinden, ob das falsch ist. Django wird sich ziemlich laut beschweren. Das ist falsch. Melden Sie sich an, erforderlich, mischen Sie sich ein. Mal sehen, ob das stimmt. Lass uns das einfach speichern und sehen, was Django sagt. Jetzt. Okay, das muss gelesen werden. Also, dass Login erforderlich mixin. Wir können nun auf unsere Create-Ansicht setzen und zwei Klassen gleichzeitig erben. Und das wird also sagen, hey, wenn der Benutzer nicht eingeloggt ist, schmeiß ihn raus. Andernfalls, wenn dieser Benutzer angemeldet ist, indem er unregelmäßige View-Aufgaben durchführt. Und so bin ich momentan hier eingeloggt. Das wird funktionieren. Und als ich ein privates Surfen geöffnet habe, bin ich nicht eingeloggt. Also hat es nicht für mich funktioniert und mich rausgeworfen und brachte mich auf die Login-Seite und sagte, als nächstes wird die neue URL sein. Jetzt kann ich mich hier einloggen. Und dann bringt es mich auf die neue Seite der neuen Post.
30. Einen neuen Beitrag erstellen: Okay, lassen Sie uns hier ein wenig mit unserer Formularansicht arbeiten. Also innere Form Ansicht, nicht unsere Sicht. Vielleicht lassen Sie uns zuerst mit unserer Vorlage arbeiten. Das wird ein bisschen lustiger, glaube ich. Geben Sie also Vorlage ein. Wir haben diese Form hier. Und obwohl das gut ist, und es scheint, als würde es tun, was wir wollen. Wenn ich mit der rechten Maustaste klicke und inspiziere, dass es nur ein Absatz ist, gibt es ein div, einen Absatz, ein Label und eine Eingabe. Und ich meine, obwohl das in Ordnung ist, haben wir kein Formular. Wie können wir das einreichen? Wie würden wir das einreichen? Das funktioniert einfach nicht. Ich kann so oft wie ich möchte eingeben drücken, und das wird einfach nicht funktionieren. Also müssen wir das in eine Form einwickeln. Also lasst uns genau das machen. Und lasst uns Form machen. Methode ist gleich Post-Aktion wird seine eigene Seite sein. Also, was auch immer Seite, von welcher URL das kommt, wir wollten einfach an sich selbst posten. Dann brauchen wir eine Art von Submit-Buttons. Also lassen Sie uns voran und fügen Sie hier ein div hinzu. Und so möchte ich einen schönen Button hinzufügen und bereits eine Komponente dafür aufgereiht haben. Es ist so nett. Ich wollte diesen Senden-Button, ich will den netten da drin. Lassen Sie uns fortfahren und den ganzen Code kopieren. Kopieren wir einfach den Send. Das ist der erste dort. Und das habe ich gerade da reingeklebt. Und mal sehen, wie das auf den ersten Blick aussieht. Okay, schicken Sie nicht schlecht, nicht schlecht. Warum polstere ich da ein bisschen ab? Und Knopf verhält sich seltsam. Oh, es hat den ganzen Weg um ihn herum Spielraum. Nehmen wir an, Marge x wird 0 sein, Marge y wird drei sein. Und das für Linien es ein bisschen besser. Ich schätze, wir können das immer besser aussehen lassen, viel einfacher. Also, anstatt senden zu sagen, sagen
wir, erstellen Sie Post. Und dieser Button, sein Typ wird Submit sein. Wenn Sie nun ein Formular in Django einreichen, sehen
Sie eine CSRF-Überprüfung, fehlgeschlagene Anfragen, ein gesandtes. Und wann immer Sie das sehen, was Sie hier brauchen, ist ein CSF, CSRF Token, C, S, R, F Unterstrich Token. Also, jetzt, wenn wir fortfahren und dies aktualisieren und testen, bekommen wir
zumindest einen anderen Fehler an diesem Punkt sagt nicht null, Einschränkung, fehlgeschlagen. Postautor-ID muss ausgefüllt werden. Und das liegt daran, dass wir Modelle füttern. Unser Autor wird nicht innerhalb unserer Form gesetzt. Und wenn wir zurück zu unserer Create-Ansicht gehen, sagten
wir die Felder, es ist nur Text, nicht der Autor. Wenn wir Autor hinzufügen, könnte dies ein wenig anders aussehen. Wir können jetzt auswählen, von wem er gepostet hat Das ist nicht
das, was Sie wollen, wenn
Sie auf Twitter sind. Sie möchten nicht in der Lage sein, aus 340 Millionen anderen Nutzern oder wie viele Nutzer sie wollen. Eine wirklich lange Liste. Außerdem möchten Sie nicht in der Lage sein, im Namen einer anderen Person zu posten. Du willst, dass es ein bisschen sicherer ist als das. Also stellen wir das nicht rein. Aber es beschwert sich, dass es nicht da drin ist. Also, was wir hier tun müssen, ist, dass wir def Form gültig sagen müssen. Wenn dieses Formular gültig ist, nimmt
es ein Selbst und das Formular selbst an. Und am Ende, unabhängig davon, was wir tun, müssen
wir Super-Dot-Punkt-Form zurückgeben, gültig ohne Form. Und hier drinnen, gehen wir weiter und greifen diese Form. Lassen Sie uns es nur Objekt nennen. Also Form, Punktspeicherung und Commit wird falsch sein, was bedeutet, dass wir das einfach noch nicht speichern werden. Wir packen uns einfach das Formular und alle Details sind beendet, aber wir werden es noch nicht speichern. Dann können wir tun Objekt ist gleich einem Objekt. Autor ist ein, ist gleich Anfrage. Dieser Benutzer, wir haben keine Anfragen und
wir müssen das in nur einer Sekunde hinzufügen. Und dann können wir OBJ Punkt speichern. Woher kommen Anfragen? Wenn du das ausprobierst, bekommst du einen Fehler. Also müssen wir das in den Versand werfen. Also tun wir taub Versand. Selbstanfrage, Argumente und Quarks sind Eier. Und Quarks. Return Super Dot Versand, Anfrage, Argumente und Quarks. Und Sie bemerken, wie wir hier Anfragen haben. Nun, das ist eine Klasse, so können wir selbst.age Anfrage ist gleich der Anfrage. Und hier unten können wir es mit self.age Anfrage zugreifen. Und der Versand wird immer vor Funktionen wie Form gültig ausgeführt werden. Mal sehen, welche Art von Fehlern wir hier haben, genau da sollte keinen Doppelpunkt haben. Und das scheint zu funktionieren. Okay, eine weitere Sache, die wir tun müssen, ist auf einer Create-Ansicht, wir brauchen eine Erfolg-URL. Was passiert also, wenn das Formular erfolgreich gesendet wird? Wir können sagen, dass die Erfolgs-URL nur unsere Homepage sein wird. Oder wir könnten es umkehren, um unsere Homepage mit Django zu sein, URLs
umzukehren und grundsätzlich sagen, gehen Sie
immer zu unserer Indexseite zurück, aber unsere Indexseite wird immer hart codiert sein, um dieselbe zu sein. In diesem speziellen Fall wird
es immer dasselbe sein. Oder Homepages immer, immer, immer nur ein Schrägstrich sein. Also lasst uns voran gehen und das versuchen. Testpost Nummer eins, Beitrag erstellen. Und da ist es, Testpost Nummer eins. Und ich kann hier reingehen, hat Nummer eins gepostet, die für mich arbeitet. Wir sind jetzt in der Lage, neue Beiträge zu erstellen.
31. Tailwind CSS Modal: Ordnung, lassen Sie uns einen Rückenwind Modal hinzufügen, damit wir Ajax und neue Beiträge auf der Seite
starten können . Jetzt habe ich schon einen ausgesucht und ich habe ihn gerade von Rückenwind components.com bekommen. Sie haben eine Menge großartiger Komponenten auf hier. Und das ist das Modal, das ich verwenden möchte. Und ein Modal ist nur eine kleine Dialog-Pop-up-Box vor all Ihren anderen Inhalten, die besagt, hey, stimmen Sie dem Cookie-Benutzer zu? Hey, willst du das Ding bestätigen oder ablehnen? Und so werde ich buchstäblich nur diesen Code kopieren. Und ich werde diese Dateien schließen und zu Basispunkt-HTML gehen. Und in meiner Basis zu HTML ganz unten. Richtig, ich werde nur den ganzen Code hier einfügen. Und ich weiß noch nicht einmal, wie dieser Code aussieht. Vielleicht ist es zu dunkel. Also wollen wir eigentlich, dass dieser Hintergrund hier ein bisschen transparent ist. Und so können wir im Bereich des Rückenwind das tun. Also haben wir BG grau 800. Wir können auch BG Deckkraft 90 tun. Und das macht ein wenig durchsichtiger. Was, wenn wir Lake machen wollten? Könnten wir 75 machen? Ja, wir können 75. Lassen Sie uns bei 75 bleiben. Das sieht ziemlich gut aus. Wir werden keinen modalen Titel haben, oder? Ja, vielleicht werden wir das. Neuer Beitrag. Jetzt, nicht Seite Neuen Beitrag. Und der Text, der hier drin sein wird, wird eine Art Form sein. Also werden wir hier ein To-Do setzen, um das Ajax-Formular hinzuzufügen. Und wir können die Close-Buttons drin halten. Lassen Sie uns diesen neuen Beitrag aktualisieren. Heute wird da drin sein. Lassen Sie uns das von Zustimmen ändern, um Post zu erstellen. Und in der Tat, gehen wir zu unserer, unsere erstellen Ansicht. Und lasst uns diesen Knopf greifen, weil ich diesen Knopf wirklich mag. Und lasst es uns nebenan stellen. Mal sehen, was wir hier ändern müssen. Also habe ich das einfach kopiert und eingefügt. Cool, das hat tatsächlich ziemlich gut geklappt. Gehen wir voran und fixieren Sie diese Einrückung. Löschen Sie das, und lassen Sie uns den nahen löschen, weil wir nicht x hier oben
haben, wir brauchen nicht so nah. Also dort werden wir Beiträge und einen Abschluss erstellen. Lassen Sie uns Post erstellen. Können wir hier drinnen etwas Kleineres machen? Können wir Text SM machen? Ja, das macht ein bisschen kleinere Polsterung. Y wird ein Padding sein, x wird drei Quellen sein und dies zu einem
kleineren aussehenden Button machen , den wir Post erstellen werden. Und vielleicht lassen Sie uns hier oben einen Rand hinzufügen. Und wieder, das ist nur regelmäßiger Rückenwind. Also, wenn Sie nicht sicher sind, was eine von ihnen tun, ein, können Sie einfach durch sie lesen, was wirklich schöner Rückenwind als Dienstprogramm erste Bibliothek ist. Und die Dokumentation ist eigentlich ziemlich gut. Und so können wir Rand oben tun, und lassen Sie uns Rand oben von C4 tun. Tut irgendetwas. Da gehen wir, kleiner Rand oben. Erstellen von Beiträgen. Jetzt wird es nichts tun. Und ich denke, was ich von uns wünschen würde, ist, dies für den Erfolg und in den nächsten Lektionen
einzurichten. Also zuallererst, js modal ist das, was ich das nennen werde. Und ich möchte auch, dass dies standardmäßig ausgeblendet wird. Und diese Schaltfläche, dass Submit-Button, obwohl wir mit hier arbeiten wollen. Lassen Sie uns das von Senden zu Schaltfläche ändern, weil wir JavaScript dafür verwenden werden. Dies wird JS submit genannt werden. Und nichts taucht auf, es ist völlig versteckt. Wir haben noch etwas zu tun. Wenn ein Benutzer nicht angemeldet ist, sollte
diese Komponente nicht angezeigt werden. Also können wir sagen, wenn die Anfrage dot user_data ein non ne miss ist, können
wir all diesen Code herausgreifen dent. Und wenn, und es sieht immer noch so aus, als wäre nichts passiert. Aber die Idee hier ist, dass dieses Modal nicht auftauchen sollte. In der Tat, lassen Sie uns hier eine kleine Demonstration machen. Wo habe ich versteckt? Versteckt wurde versteckt genannt. Das ist kein Klassenname. Und das taucht nicht auf. Und das ist der Grund, warum wir die Dinge testen. Weil ich sagte, wenn Anfrage, dass der Benutzer anonym ist, können
wir sagen, wenn Anfrage, dass der Benutzer authentifiziert ist, was ich ursprünglich tun würde, ist sagen, wenn nicht anonym, aber wir könnten dasselbe tun, um das Gegenteil zu sortieren. Oder wir können sagen, wenn Anfrage, dass der Benutzer authentifiziert ist, dann zeigen Sie es. Da ist es. Und lassen Sie es uns einfach verstecken. Fertig. Und das ist alles, was wir für diese Lektion tun werden. Wir wollten nur ein schönes Rückenwind Modal hinzufügen ,
damit wir anfangen können, etwas auf der Straße etwas hinzuzufügen.
32. statische Dateien aktivieren: Okay, jetzt, bevor wir fortfahren, müssen
wir statische Dateien und Ordner zu unserer Anwendung hinzufügen. Also lasst uns voran gehen und das schließen. Und wir werden unsere Einstellungen Dot Py öffnen wollen. Irgendwo hier drin werfe
ich das einfach auf den Grund. Wir wollen statische Dateien und sehen dies alle Großbuchstaben statische Dateien. Verzeichnisse ist gleich einer Liste. Und wir werden sagen, dass OS dot, dot unser Projektverzeichnis beitreten, das wir in einer viel früheren Lektion eingerichtet haben. Und wir werden es Front-End nennen. Dann werden wir eine statische Route hinzufügen, nicht Status, aber eine statische Route ist gleich OS und dot, dot join. Und dann wollen wir dieses Basisverzeichnis mit statisch verbinden. Und schließlich wollen wir unsere statische URL und setzen diese in eine neue Zeile. Sind statische URL wird Schrägstrich statisch sein, was viel wie unsere Medien-URL aussieht. Genau hier werden unsere statischen Assets gebaut. Jetzt ist ein statisches Asset wie Ihre eigene JS-Datei oder Ihre eigene CSS-Datei innerhalb Ihrer eigenen Anwendung. Wir haben das nicht in Django 101 behandelt. Jetzt gehen wir weiter und erstellen Sie hier eine neue Datei. Und wir werden zuerst eine Reihe von Ordnern erstellen. Der erste Ordner wird also Front-End sein, und das entspricht dem, was wir in Zeile 156 geschrieben haben. Und dann ein Unterordner namens JS und dann eine Datei namens main.js. Und wir werden einfach console.log sagen, hallo Welt mit dem Herzen. Und dann in unserem Basispunkt-HTML, was wir tun können, ist ganz oben können wir sagen, laden statisch. Und
ganz unten, wo wir unser statisches JavaScript laden möchten, könnten
wir einfach sagen, dass Skript SRC gleich statisch js slash main.js ist. Und stellen wir sicher, dass das eine Zeichenfolge ist. Nun gehen wir hier auf unsere Seite und gehen in die Konsole. Also ging ich einfach mit der rechten Maustaste, Inspect Element, Konsole, aktualisieren und nichts passiert. Was wir also zu diesem Zeitpunkt tun möchten, ist, dass wir Python managed dot py eingeben, statisch
sammeln und beobachten möchten, was es tut. Auf der linken Seite wird hier einen statischen Ordner für uns erstellen. Es gibt unseren statischen Ordner. Und so unser statischer Ordner, wenn wir diese statische Datei hier ausführen, und was wir tun müssen, ist das zu schließen. Immer wenn wir diese statische Template-Tag ausführen, diese Funktion, es wird dann freuen Sie sich auf diesen Ordner, diese Datei. Und das wird hier reingehen, js, main.js. Und so im Grunde einfach unseren Code aus
unserem Front-End-Ordner in einen statischen Ordner kopiert . Also lasst uns voran gehen und erfrischen. Und da steht hallo Welt, Herzzeichen. Und weniger als drei. Wenn wir jetzt vorwärts gehen, können wir alles tun, was wir wollen, im Frontend machen? Hallo, hier ist Front-End. In der Tat können wir das. Und so ist der ganze Grund, warum wir statisch sammeln, weil wir
idealerweise nicht wollen, dass all unser Front-End-Code ausgeführt wird. Wir möchten, dass es von unserem statischen Ordner aus ausgeführt wird. Und so machen wir das und wir verwenden diesen
statischen Befehl sammeln, um alle unsere statischen Dateien zu sammeln, damit
Django weiß, wo man Dinge findet. Wir können sagen, hey Engine X, anstatt Django zu verwenden, oder wir können sagen, hey engine next, suchen Sie nach all unseren Admin-Dateien im statischen Schrägstrich admin oder etwas in dieser Richtung. Also vorwärts können wir all unseren Code in Front-End-Schrägstrich js, Schrägstrich main.js setzen. Und wenn Sie Ihre Anwendung zu
einem bestimmten Zeitpunkt in der Zukunft bereitstellen , stellen Sie immer dann sicher, dass
Sie Python managed dot py eingeben und statisch sammeln. Oder wenn du nicht willst, sieh dir das an. Es wird mich um Input bitten. Sind Sie sicher, dass Sie fortfahren möchten? wird eine Reihe von Dateien überschreiben, die ich ja eingeben könnte, oder ich könnte Python managed dot py eingeben statischen Bindestrich, Bindestrich, keine Bindestrich Eingabe eingeben. Und es wird nicht fragen, sondern
es wird es nur tun. guter Letzt müssen wir das. Wenn wir hier einen Git-Status machen, werden wir etwas Interessantes sehen. Wir möchten unseren Front-End-Code übergeben, aber unser statischer Code hat all dieses Admin-Zeug darin und es wird viele andere Dinge darin
haben, und Ihre Anwendung wächst. Wir möchten unseren statischen Ordner nicht festschreiben. Was wir tun wollen, ist, diesen statischen Ordner zu ignorieren und nur die Dinge zu übergeben, die wir in unserem Front-End-Ordner geändert haben. Also lasst uns unseren Gitignore öffnen. Und ganz unten, wo es Medien sagt, lasst uns statisch eingeben. Lassen Sie uns noch einmal einen Git-Status machen. Und es taucht nicht mehr auf. Und wir sind gut zu gehen. Wir haben unsere statischen Dateien auf dem Laufenden. So können wir jetzt unser JS in eine Datei
in unserem Projekt schreiben und wir müssen nicht alles in schreiben. Gut, intern. Was ich damit meine, ist, wenn Sie kein JavaScript-Entwickler sind, dass wir unser JavaScript hier nicht schreiben müssen . Das müssen wir nicht tun. Wir können all unser JavaScript in eine Datei schreiben und dann können wir Caching darauf anwenden. Also, das ist Ihr Skript, entweder nur einmal geladen oder heruntergeladen, oder ist zumindest wirklich, wirklich schnell für Ihre zukünftigen Website-Zuschauer zu laden.
33. JavaScript hinzufügen: In Ordnung, lassen Sie uns weitermachen und jQuery hinzufügen. Also zuerst, lasst uns einfach auf die jQuery dot Website gehen ist ein jQuery.com. Es ist jQuery.com. Laden Sie jQuery herunter. Oder anstatt das zu tun, könnten
wir jQuery CDN machen, und wir sind jetzt auf Version 3.5.1. Also lasst uns gehen und die modernste Version bekommen. Gibt es hier ein CDN? Jetzt ist das CDN, Google, Google, Google. Okay, also wollen wir die verkleinerte Version. Wir wollen voll. Also werde ich das tun. Ich eigentlich, nein, lass es uns nicht so machen. Was tun CDN JS. Und das ist Schauspiel, lassen Sie uns die ganze Sache kopieren. Kopieren Sie also das Skript-Tag. Und das wird uns 3.5.1 jQuery dot main.js geben. Es ist also schon verkleinert worden. Also wurden alle Räume und Zeug entfernt. Und lassen Sie uns einfach werfen, dass vor unserer main.js oder main.js kann dann jede Art von jQuery ausführen. Als nächstes für Ajax-Anrufe haben
wir diese seltsame, die ich nicht durch die ganze Sache gehen werde. Und so sieht es aus, bevor wir irgendeine Art von Ajax machen. Wir werden unsere Ajax einrichten. Und was das tun wird, ist zu suchen, wo bist du, wo bist du, wo bist du? Ein CSRF-Token wird
dieses Cookie so setzen , dass wir es nicht bei jeder einzelnen Ajax-Anforderung setzen müssen. Jetzt würde ich empfehlen, einfach den Quellcode
herunterzuladen und dies zu kopieren und einzufügen und sicherzustellen, dass es vor Ihrer main.js und Sie es sogar direkt in Ihre main.js werfen können. In der Tat, lassen Sie uns weitermachen und das tun. Lassen Sie uns das löschen. Löschen Sie das. Und lasst uns in unsere main.js gehen und lasst uns das einfach hier reinwerfen. Und die Idee hier ist wieder, dass Sie sich erinnern, als wir versuchten, einen neuen Beitrag zu erstellen und wir diesen CSRF-Token-Fehler bekommen. Nun, mit Ajax wissen wir nicht, wie wir das unbedingt einreichen sollen. Aber CSRF-Token sind Cookies. Und so können wir einen Cookie setzen, oder vielmehr können wir den Cookie erhalten, dann können wir den Request-Header so einstellen, dass wir in Zukunft, wenn wir eine Ajax-Anfrage stellen, nicht notwendigerweise ein CSRF-Token anwenden müssen an Oliver Ajax Anfragen. Jetzt ist hier eine Menge los, und das ist kein JavaScript-Modul. Django to1 ist nicht dazu gedacht, viel JavaScript abzudecken, nur ein wenig. Aber wenn Sie damit nicht vertraut sind, würde
ich dringend empfehlen, JavaScript,
Eins-zu-Eins-JavaScript in JavaScript durch einen meiner anderen JavaScript-Kurse zu überprüfen . Gehen wir also zurück und lassen Sie uns einfach sicherstellen, dass die Dinge so geladen werden, wie wir es erwarten. Cool, wir haben kein Favicon, also ist das völlig in Ordnung. Wir haben jetzt jQuery und installieren, installiert. Und was wir tun können, ist mit der rechten Maustaste zu inspizieren, gehen Sie zur Konsole. Und wenn wir nur Dollarzeichen eingeben, sollten
wir da drin etwas sehen. Wir sollten in der Lage sein, alles zu schnappen, was wir wollen. So können wir unseren ganzen Körper packen und es gibt uns ein Objekt. Und das ist, wie Sie wissen, jQuery ist installiert. Alternativ können Sie immer einfach jQuery eingeben. Nun, stellen Sie sicher, dass Sie es tatsächlich
jQuery eingeben und Sie dasselbe wie dieses Dollarzeichen erhalten. Sobald Sie jQuery installiert haben. Lasst uns zur nächsten Lektion gehen.
34. Das Modal mit JavaScript umschlagen: In Ordnung, werfen wir einen Blick auf Umschalten oder Modal. Und vor ein paar Lektionen haben wir ein Modal erstellt und wir müssen es im Grunde auftauchen lassen. Wie lassen wir es auftauchen? werden wir JavaScript verwenden. Was wir also vor allem tun können,
ist, dass wir in unsere,
nicht unsere Homepage gehen , sondern auf HTML basieren. Und wo immer neue Beiträge sagen, das ist ein Link. Und lassen Sie uns diesem eine neue Klasse von js toggle modal geben. Und lassen Sie uns unser Frontend Jazz main.js öffnen. Und lassen Sie uns einfach nach unten scrollen und einen neuen Ereignis-Listener erstellen. Also Dokument, Punkt auf Punkt klicken oder nicht Punkt klicken, einfach Punkt js klicken, modal umschalten. Funktion E. Für Ereignis e Punkt verhindern Standardeinstellung. Also, wenn es eine Verbindung ist, geh nirgendwohin, tu nichts. Und sagen wir einfach console.log. Hallo, ich wurde angeklickt. Jetzt, wenn Sie mit jQuery nicht vertraut sind, können
Sie immer meine jQuery 101-Klasse nehmen, die all dies auch abdeckt. Aber vorerst gehe
ich davon aus, dass Sie jQuery an diesem Punkt kennen, wenn Sie jQuery nicht kennen, sind Sie
im Grunde dieses Projekt erledigt. Es gibt ein bisschen mehr, was wir hinzufügen können, können
Sie überspringen, wo wir eine Detailansicht für alle unsere Profile hinzufügen. Aber wenn Sie jQuery nicht kennen, müssen
Sie sich keine Sorgen um das Ajax-Zeug machen. Also einige dieser Lektionen können Sie einfach überspringen. Also gehen wir weiter und öffnen unsere Konsole. Und jedes Mal, wenn ich darauf klicke, steht es, dass ich geklickt wurde Hallo, ich wurde geklickt, klickt es 11 mal. Ich werde es noch 11 Mal anklicken. Und sag nur weiter, dass ich angeklickt wurde, damit es funktioniert. Was wir jetzt tun müssen, ist, dass wir in unserer Modellierung oder Basispunkt-HTML JS modal haben und wir müssen diese Klasse versteckt ein- und ausschalten. So können wir jetzt wählen, dass modale Toggle-Klasse versteckt. Und lasst uns das einfach machen. Mal sehen, ob das funktioniert. Da gehen wir hin. Das funktioniert. Und jetzt müssen wir herausfinden, wie man das schließt, so dass SVG, müssen
wir es mit diesem SVG schließen. Und wir könnten das Gleiche hier anwenden, js umschalten modal. Und weil alles, was wir hier sagen, jedes
Mal ist , wenn eine Klasse namens js toggle modal geklickt wird
, wird dieses Modal diese Klasse ein- und ausschalten. Und weil wir nichts anderes außerhalb von hier anklicken können, können
wir einfach auf das x klicken und jetzt ist es genug für uns umschalten.
35. Neue Beiträge hinzufügen: Okay, lassen Sie uns voran und beginnen, Beiträge dynamisch mit Ajax und jQuery zu erstellen. So als wenig Referenz, Lassen Sie uns unsere Basispunkt-HTML öffnen. Und in unserem Modal, das ist unser Modal hier, wir wollen dieses Ajax-Formular hinzufügen. Und so müssen wir überhaupt kein Formular hinzufügen weil wir feststellen, dass dies bereits JavaScript unterstützt wird. Wir müssen nicht sicherstellen, dass es nicht unbedingt nicht JavaScript bereit ist, so dass wir sicher davon ausgehen können, dass jeder JavaScript verwendet. Also lassen Sie uns hier eine Eingabe hinzufügen. Mit Nein, nicht ohne Eingabe. Lassen Sie uns eine Textbereichsklasse machen. Rand an Rand, blau 500. Ich glaube, das wird tun, was ich will. Und sagen wir, die Reihen werden drei Reihen sein. Und es wird einen gewissen Rand geben, um den Rand oben und unten von sechs Pixeln sind nicht sechs Pixel. Und das wird für REMS zu REMS sein, ich kann mich nicht erinnern. Jedenfalls wird etwas Rand oben hinzufügen und wir können immer ändern, dass, wenn wir vier nicht mögen, wir können immer acht oder 16 oder so etwas verwenden. Schrägstrich Textbereich. Und für JavaScript, und um dies zu greifen, müssen
wir eine JavaScript-Basisklasse hinzufügen. Ich mag es, meinen Klassen nur Jazz vorzustellen. Also JS, neuer Beitrag. Jetzt nenne ich es einfach Post. Und wir können diese Aufgabe loswerden. Okay? Okay. Wir müssen etwas Whitman hinzufügen. Also mit voll und das hat nicht getan, was ich will. Lassen Sie uns also zum Rückenwind CSS Docs Typ in der Breite gehen. Und es ist W voll. Warum hat das nicht für mich funktioniert? W full könnte das übergeordnete Element sein. Da gehen wir. Cool. Also haben wir einen Textbereich und dort lassen Sie uns auch einen Platzhalter hinzufügen. Platzhalter. Geben Sie Ihren Beitrag ein. Lassen Sie uns auch eine maxlength hinzufügen ist gleich. Und wie lange sind diese Posten soll sein. Als maximale Feed Modelle 240 Zeichen. Also werden wir sagen, das hat eine maximale Länge von 240 Zeichen. Also, was passiert, wenn wir auf diese nichts klicken. Wir müssen sicherstellen, dass etwas passiert, wenn wir auf „Post erstellen“ klicken. Wenn wir also auf Create Post klicken
, der eine Klasse von JS eingibt, können
wir damit arbeiten. Wir können sagen, Dokument Punkt auf. Und ich ändere die nur zusammen. Klicken Sie auf Punkt js Submit-Funktion
e, e dot verhindern Standard, weil ich nicht möchte, dass es tut was seine natürliche Sache im Browser ist. Und sagen wir einfach console.log. Senden Sie mich offen. Und da ist es, taucht auf. Reichen Sie mich ein, cool. Jetzt müssen wir diesen Text bekommen. Und bevor wir einen Ajax machen, müssen
wir tun, wir müssen die Texte, OJS, Post Texte, das ist, was wir greifen wollen. Geh einfach weiter und schnapp dir den Text. Const. Text ist gleich diesem Element Punkttext, beachten Sie nicht dot txt, es ist dot val. Und lasst es uns auch trimmen. Dann können wir sagen, wenn es nichts drin ist, wenn keine Textpunktlänge, wenn es keinen Beitrag gibt, einfach falsch zurückgeben. Sonst schnappen wir uns das Modal und lassen Sie es uns verstecken. Also werde ich das schnappen und es verstecken. Klasse ausgeblendet hinzufügen. Und das wird nur bestätigen, dass das tatsächlich für mich funktionieren wird. Also passiert nichts. Wenn ich hier etwas Text hinzufüge. Es schließt für mich. Cool. Aber jetzt, wenn ich es öffne, den Texas Zylinder, also müssen wir das klären. Also werde ich hier nicht ziemlich jQuery schreiben, nur weil dies kein jQuery-Modul ist, Jin Django to1 soll jQuery nicht zu viel abdecken. Und wir werden nur einen Haufen
davon mit jQuery durchblasen , weil es schön und schnell ist. Und so wollen wir auch Slashdot posten und geben , dass Val keinen Wert, 123123. Und es löscht es aus, gut, gut, gut, gut, gut. Das ist genau das, was wir wollen. Jetzt. Wir müssen diese Daten irgendwo schicken. Und was ich tun werde, ist, dass ich hier
einen Code einfüge und ich werde ihn durchlaufen. Ich will nur nicht, dass du den ganzen Tag damit verbringen musst, mich zu tippen. Also, was wir hier tun werden, ist, dass ich ein paar Sachen reinfüge. Und wir werden unseren Code anpassen. Also haben wir bis hier geschrieben, alles unten ist nagelneu ist, was ich gerade eingefügt habe. Also btn prop deaktiviert. Und lasst uns voran gehen und nun, zuerst, lesen Sie das durch. Dies wird die Schaltfläche auswählen. Es wird es deaktiviert,
und es wird dazu bringen, dass der Text „Posting“ sagt. Also müssen wir das btn auswählen. So können wir jetzt sagen, konstante btn ist gleich diesem. Und das ist dieser JS Submit-Button. Dann gehen wir zu Ajax und posten Textbereiche auf der Suche nach einem Datentyp Post URL. Lass uns das machen. Daten. Host-URL ist gleich einem Ort, und wir werden sehen, dass dies bricht, aber das ist in Ordnung. können wir in ein bisschen ändern. Die Daten selbst, Text wird Text sein und das ist in Ordnung. Und das wird dies nur im Backend zugänglich machen , so dass Python und Django sagen können, oh, nur nachschlagen, Outpost Punkttext anfordern, und es wird sein, was auch immer Text ist. Das ist also unser Schlüssel. Das ist unser Wert. auf_Erfolg. Wir werden einige HTML zurückgeben. Wir werden dann dieses JS-Modell nehmen und wir werden eine Klasse versteckt hinzufügen. haben wir schon getan. Lass uns das verbergen. Der Textbereich, val nichts. Wir können das durch das ersetzen, was wir geschrieben haben. Und wir werden sagen, Post Container anhängen HTML. Wir haben keinen Postcontainer. Die Idee hier ist also, dies sehr, sehr dynamisch aussehen zu lassen. Also, wenn wir hier zurück zu unserem HTML gehen, wird es
tatsächlich auf unserer Homepage sein. Alle unsere Beiträge müssen in dieses Ding
namens Posts-Container eingewickelt werden und müssen nicht als Beiträge bezeichnet werden. Behälter. Es könnte alles genannt werden. Ich nenne es nur Postcontainer. Egal, welchen Namen Sie verwenden, stellen Sie sicher, dass er konsistent ist. Also verwende ich ID-Posts-Container. Sie werden ID-Posts-Container verwenden möchten. Und das wird dem HTML vorangestellt, was auch immer das ist. Wir wissen noch nicht, was das ist. Auf der Fehlerkonsole gewarnt, dass ein Fehler aufgetreten ist, und ändern Sie dann diesen Schaltflächenstatus von deaktiviert auf false. Es ist also nicht mehr deaktiviert. Und ändern Sie den Text innerhalb dieser Schaltfläche, um zu sagen, dass ein Fehler aufgetreten ist. Nun sollte dies den Fehler für uns auslösen. Also lasst uns voran gehen und das versuchen. Lassen Sie uns auf neuen Beitrag klicken. Helloworld und sagt, dass es Textbereiche nicht definiert ist. Der Textbereich ist nicht definiert und das liegt daran, dass wir ihn dort nicht gesetzt haben. Was wir tun können, ist nur das, weil das hier der Textbereich ist. Das wird also unseren Textbereich bekommen. Und dann die Dateneigenschaft, das Datenattribut, Datenstrich, Post, Bindestrich URL. Und das verwendet jQuery wieder. Los geht's, Kuckuck, Kuckucksefer. Also bekommen wir hier einen Fehler. Und im Grunde localhost Port 8 Tausend Schrägstrich Platz existiert nicht. Und das ist es von hier drin zu bekommen. Also müssen wir diesem eine URL irgendeiner Art geben. Also, wo soll das hingehen? Nun, wir haben eine Ansicht bereits eingerichtet, also lassen Sie uns voran und minimieren einige dieser Dinge in unserem Feed solche Ansichten, wir haben eine Create New Post Ansicht in hier. Wir können einfach sagen, wenn es eine Post-Anfrage gibt, etwas in dieser Richtung, taub Post, Selbstanfrage, Argumente, Rückkehr. Sagen wir etwas hier drin. Und das wird nicht wirklich etwas zurückgeben, was wir wollen, noch
nicht, dies wird nicht HTML oder irgendetwas zurückgeben. Dies ist bisher nur ein Beispiel. Aber weil wir diese URL verwenden können, können
wir hier zu unseren URLs gehen, Create New Post, und wir können Feed Doppelpunkt, neue Post verwenden. Also lasst uns hier reingehen. Lassen Sie uns URL hinzufügen, Feed Doppelpunkt, Neuer Beitrag. Und das wird sicherstellen, dass wir tatsächlich Logins sind. Also, wenn ich mit der rechten Maustaste gehe zur Definition, wird
es sicherstellen, dass wir mit dem Login erforderlichen Mixin angemeldet sind. Und wenn wir posten, wird es etwas tun. Also sollte das für mich brechen, aber lassen Sie uns das als Beispiel trotzdem tun, das ist eine Post-Anfrage, tun, tun, tun, tun, tun, tun. Und das wird meine Konsole unten links hier verbringen. Gehen Sie voran und aktualisieren Sie diese hallo Welt und das wird nicht wirklich funktionieren. Es ging an einen anderen Ort dieses Mal ging ich neue Schrägstrich. Das ist genau das, was wir eingerichtet haben. Also lassen Sie uns diese URL in ihrem URL-Slash Schrägstrich überprüfen. Genau dort wollten wir es hin. Und hier ist es. Dies ist eine Post-Anfrage. Dies ist eine Post-Anfrage. Wir wissen also, dass das funktioniert. Jetzt müssen wir hier nachbearbeiten. Was können wir tun, um ein neues Post-Objekt zu erstellen? Also hier, weil wir bereits Post importiert haben, können
wir sagen, der Beitrag wird post-dot-dot-dot Objekte sein, dot create. Der Text wird angefordert Outpost Punkttext. Nein, das ist falsch. Wer hat Außenposten Punkt bekommen Text? Und der Autor wird
Anfrage Dot User sein , weil wir Zugriff auf dieses Anforderungsobjekt hier haben. Wir müssen keine Selbstpunktanforderung verwenden. Jetzt, wo ich diesen Text bekomme, ist in main.js. Nicht unbedingt dieses, aber das hier. Es ist der Schlüssel, den wir bekommen, und es wird zu diesem Wert kommen, was auch immer dieser Wert ist, es ist zufällig, dass sie dasselbe genannt werden. Wir könnten sie anders benennen, wenn wir wollten. Und schließlich lassen Sie uns etwas HTML rendern. Also lassen Sie uns rendern. Es nimmt immer Anfrage als ersten Parameter. Dann muss es eine Zeichenfolge
als Parameter nehmen , für die bestimmte Vorlage wir verwenden möchten. Also lassen Sie uns einschließen oder enthält Schrägstrich post.html. Wenn wir gehen, um umfasst Schrägstrich post.html, wir wollen all dies in hier zu rendern. Und was das tun wird, ist, dass er diesen Block ein drittes Mal benutzen wird. Also wird es auf der Homepage verwendet werden, wird auf der Detailseite verwendet werden. Und würden wir Ajax einen neuen Posten hier drin? Es wird ganz oben mit diesem exakten Styling und allem auftauchen. Schließlich müssen wir ihm einen gewissen Kontext geben. Also, dass der neue Beitrag posten wird, und dieser neue Beitrag kommt von post.html. Wir suchen diesen Namen genau hier. Post. Das ist der Kontext, den wir hineinwerfen. Und es wird mit diesem neuen Posten hier oben übereinstimmen. Es wird also Texte, Datum und Autor haben. Jetzt auf unserer Homepage haben wir auch zeigen Detaillink ist gleich wahr. Weil wir auf der Homepage sind, wollen wir das auch weitergeben. Also zeigen Sie Detaillink, wir werden das wahr machen. Schließlich wollen wir festlegen, dass Inhaltstyp wird Anwendung Schrägstrich HTML sein. Nein, wir haben noch kein Rendering importiert. Also müssen wir weitermachen und rendern importieren. Und das kommt aus, das ist leicht zu merken. Django-Punkt-Verknüpfungen, importieren, rendern. Und stellen wir sicher, dass sich unser Django hier unten nicht beschwert. Wir haben noch keine Beschwerden. Okay. Sind wir bereit, das zu testen? Das war eine Menge zu durchlaufen. wir sicher, dass dies so funktioniert, wie wir es erwarten. Sonst wird es brechen. Wird das brechen? Und wenn es kaputt geht, beheben wir einfach alle Fehler einzeln, wie wir es normalerweise als Entwickler tun. Sieh dir das an, wird diese Pause mehr lesen, wird auf ID Nummer sechs gehen. Ich habe es gepostet. Ich habe es gerade gepostet. Und das funktioniert perfekt. Gehen wir weiter und stellen sicher, dass wir das noch einmal tun können. Noch ein Mal. Und lasst uns das öffnen und sicherstellen, dass das alles geschlossen war und alles. Da steht New Post, oh, das ist gut. Gute Dinge passieren bei. Wir haben jetzt eine Ajax-Anfrage. Das ist das Senden von Daten an eine dynamische URL. Und so lasst uns das noch einmal durchgehen. Wenn jemand auf JS einreichen klickt, werden wir diesen Text greifen. Wir werden sicherstellen, dass der Text eine Länge hat. Wenn keine Länge vorhanden ist, überspringen Sie sie. Dann greifen wir den Knopf,
das ist dieser spezielle Knopf, den Knopf
, auf den du gerade geklickt hast. Wir werden sagen, dass es in der Tat deaktiviert ist und wir werden den Text in Posting ändern. Und das stellt sicher, dass die Leute nicht zweimal darauf klicken können. Dann richten wir Ajax ein. Und tatsächlich wurde Ajax bereits eingerichtet, um zu bestätigen, dass es nach einem CSRF-Token suchen muss. Also brauchen wir nichts darüber hinaus zu tun. Wir werden sagen, dass dieser Typ Post ist. Und wenn wir hier reingehen, das passt zu tauben Posts
, wird diese URL js Post Text,
Punktdaten, Post URL sein . Und das wird von unserem Basispunkt-HTML kommen. Nein, ja, ja, da ist unser Textbereich. Also JS posten Text, das ist unsere Klasse wird das packen. Und es wird Daten sammeln, URL
posten, und wir werfen eine Django-URL ein. Es ist also völlig dynamisch. Und auf diese Weise müssen wir keine hartcodierte URL in unser JavaScript einfügen. Wir können es am Django-Ende ändern. Stellen Sie Ihre Anwendung neu bereit und dies wird immer für uns funktionieren. Es ist also diese Art von Zukunft, eine Art Zukunft, die unser JavaScript bestätigt. Welche Art von Daten senden wir dann an unser Python Backend? Und wir sagten, senden Sie den Text. Und der Text kommt von Anfrage postdoc get text. Und der Textwert wird sein, was auch immer unser Beitrag war. Bei Erfolg werden wir HTML-Daten zurückgeben, die hier unten sind. Rendern von HTML-Daten. Wir werden tatsächlich die beinhaltet post.html rendern. Und wir werden in
einigen Kontexten Post werfen ist Post und zeigen Detaillierung qs gleich wahr. Und wenn das Erfolg ist, wird JS modal dann versteckt werden. Der Postcontainer, der von unserer Homepage hier kommt, Postcontainer. Wir werden diese Daten vorangestellen,
HTML, was immer von Django zurückkommt, was auch immer von hier zurück kommt, wir werden das vorangehen, wir werden es an den Anfang unserer Liste setzen. Dann werden wir sagen, dass der gleiche Button, den wir sammeln deaktiviert wird, falsch sein wird. Es ist also wieder anklickbar und wir werden nur New Post sagen. Und dann werden wir diesen JS nach Steuern in diesen Textbereich nehmen und wir werden ihn leeren
, damit jemand sofort einen weiteren Beitrag machen kann und es
sieht nicht so aus, als wären sie alte Daten, die noch herumliegen. Auf Fehler. Wir werden zu trösten warnen, dass Fehler. Und wir werden sagen, dass der Button, auf den wir klicken, deaktiviert wird. Nein, es wird nicht mehr deaktiviert sein. Und dieser Text wird einfach nur Fehler sagen. Und das ist alles, was wir tun müssen. Nun, wenn Sie nicht sehr vertraut mit jQuery oder JavaScript sind, ist
das in Ordnung. Sie können immer einfach den Quellcode herunterladen und haben etwas Spaß damit. Sie müssen diesen Code nicht unbedingt kennen, aber fühlen Sie sich frei zu erkunden und zu tun, was Sie wollen. Und ehrlich gesagt können Sie
diesen Code völlig brechen und einfach später heruntergeladen lesen und es wird für Sie funktionieren.
36. Profile: In Ordnung, lassen Sie uns weitermachen und eine Profildetailansicht hinzufügen. Also zuerst müssen wir zuerst unsere Profile, Profil-URLs öffnen. Oh, sieh dir das an. Das haben wir nicht. Also lassen Sie uns in unsere Profil-App gehen und eine neue Datei namens URLs dot py erstellen. Und hier müssen wir von Django-Punkt-URLs, Importpfad und von,
von Punkt-Importansichten. Weil wir das in nur einer Sekunde benutzen werden. Wir möchten uns einen App-Namen von Profilen geben. Dies wird uns mit Namespace und auf der Straße helfen. URL-Muster wird ein Pfad sein. Und das wird den Benutzer zu meinem website.com Schrägstrich Profil senden. Nehmen wir eine Zeichenfolge und das wird der Benutzername sein. Das ist, was wir es nennen werden, ist Benutzername. Und wenn wir es aus unserer Sicht verwenden. Und lassen Sie uns diese Renderansichten Punkt-Profil, Detailansicht, die wir noch nicht haben. Aber das ist okay. Das machen wir in einem Augenblick. Und der Name wird detailliert sein. Und beachten Sie, wie wir dieses wiederkehrende benannte Musterdetail hier haben wir auch Post Detail. Aber unsere Beiträge heißt Feed Detail und unsere Profile werden Profildetails genannt werden. Okay, lassen Sie uns das speichern und beobachten, wie Django sich beschwert hat, dass es hier keine
Datei gibt , die Profildetailansicht genannt wird. Eigentlich, ja, es wird sich nicht beschweren, weil es noch nichts davon weiß. Also lassen Sie uns in unsere Haupt-URLS-Datei gehen hier. Und lassen Sie uns aus Profilen importieren URLs als Profile URLs. Und lassen Sie uns im Grunde unseren Weg hier kopieren. Und wir werden Profile,
URLs verwenden , und dieser Namespace wird Profile sein. Nun, was wir stattdessen tun können, ist, dass wir Profil mit einem Schrägstrich sagen können. Komm her und werde das loswerden. Und das wird nicht erforderlich sein, weil es ihm sowieso ein Profil vorangestellt wird. Und dann wird es Ihr website.com Schrägstrich,
Profilschrägstrich und dann der Benutzername dieser Person sein . Jetzt können wir sehen, dass Django erkannt hat , dass es sich beschwert, dass es keine Profildetailansicht gibt. Also lasst uns zu unseren Ansichten gehen. Und wir müssen diese Profildetailansicht erstellen. Also lassen Sie uns das loswerden, weil wir klassenbasierte Ansicht verwenden werden. So können wir von Django.com Trip Dot Auth Dot Modelle importieren Benutzer tun. Wir haben dies vorher von Django-Punktansichten, dot generisch, eine Detailansicht importiert. Und dann müssen wir hier eine Klasse erstellen, die
Profildetailansicht genannt wird , weil das ist, wonach die URL in unseren URL-Mustern gesucht hat. Und das wird eine Detailansicht sein. Jetzt werden wir sagen, HTTP-Methodennamen ist gleich zu bekommen. Ich mag es einfach, das zu wissen, dass, wenn jemand das lesen wird, dass sie keine Art von Post akzeptieren,
setzen oder löschen oder irgendeine Art von Ansicht. Es ist buchstäblich nur eine Get Anfrage. Der Name der Vorlage wird Profile Schrägstrich detaillierte Punkt HTML sein. Und unser Modell wird ein Benutzer sein. Dann haben wir unseren Kontextobjektnamen. Ich neige dazu, dies immer so zu setzen, dass es nicht nur ein Objekt in unserer Vorlage weil es in unserer Vorlage wie dieser Objektpunkt-Benutzername aussehen würde. Stattdessen möchte ich dies als etwas nützlicheres festlegen. Es wird diesen Benutzer anrufen. Und in unserer Vorlage könnten wir stattdessen den Benutzer-Punkt-Benutzernamen verwenden. Machen Sie es einfach ein bisschen sinnvoller, wenn Sie den Code lesen. Schließlich brauchen wir ein Slug Feld ist gleich dem Benutzernamen. Und das slug URL-Schlüsselwort-Argument erworben wird Benutzername sein. Und so ist das Slug Feld ist, wie werden wir diesen Benutzer nach was suchen? Sloggen? Und wir werden sagen, schauen Sie, suchen Sie den Benutzer nach dem Benutzernamen. Und das ist das führte URL-Schlüsselwort arg, der Quark wird von hier kommen, Benutzername. Also sagen wir, dass dies eine Zeichenfolge akzeptiert und es wird ein Benutzername sein. Und das wird unser Schlüsselwortargument sein. Dann kann dieses Schlüsselwortargument hier übergeben werden. Weise können wir einen Benutzer finden. Jetzt müssen wir nicht in alle Arten von ORM-Abfragen,
objekt-relationale Management-Abfragen schreiben . Wir müssen nicht manuell nach einem Benutzer suchen. Das wird es nur für uns tun. Also lasst uns post.html öffnen. Und das ist, wir brauchen das nicht mehr, während unser To Do, wir müssen hier eine neue URL erstellen. Also öffne unsere Syntax. URL-Profile waren der Namespace, den wir verwenden. Also werden wir das in einer Zeichenfolge verwenden. Wir verwenden Profile Detail. Und das akzeptiert was als Parameter, eine Zeichenfolge. Also dann können wir einfach Post Punkt Autor Punkt Benutzername setzen. Und das wird als unsere Schnur dienen, um voranzugehen und das zu speichern. Und lassen Sie uns unsere Seite aktualisieren und sehen, ob es irgendwelche Fehler oder Beschwerden gibt. Und das wird zu localhost Port 8 Tausend gehen und dies unten
links sehen , Schrägstrich, Profil Schrägstrich. Caleb, wenn wir jetzt hierher gehen, werden
wir sehen, dass die Vorlage nicht existiert. Aber das ist gut genug. Das funktioniert für uns. Lassen Sie uns in der nächsten Lektion eine neue Profilvorlage erstellen.
37. Profile: Okay, in der letzten Lektion haben wir eine Profildetailansicht erstellt. Und wir sagten, verwenden Sie eine Vorlage namens Profile Schrägstrich Details. Also, wenn wir zu Profilen gehen, lassen Sie uns einen neuen Ordner in hier namens Vorlagen Schrägstrich Profile erstellen. Das wird unser Namensabstand für unsere Vorlage und dann detaillierte Punkt-HTML sein. Und lassen Sie uns einfach diese Detailansicht hier aufrufen, nur um sicherzustellen, dass dies funktioniert, dass es keine Tippfehler gibt. Und so gehen wir zurück. Und wenn ich auf mein animiertes Gesicht klicke, heißt
es Profile, detailliertes Punkt-HTML existiert nicht. Also ist eins von zwei Dingen hier passiert. Entweder habe ich eine Vorlage und keine Vorlage, aber ich habe irgendwo einen Tippfehler. Lassen Sie uns diese Profile nochmals überprüfen. - Ja. Schrägstrich Detail und das sieht gut aus. Die zweite Sache ist, dass Django einfach nichts davon weiß. Möglicherweise muss sie neu gestartet werden. Lasst uns das versuchen. Und tatsächlich musste
Django nur neu gestartet werden, das war alles, was es war. Also lassen Sie uns voran und beginnen, dies zu bearbeiten. Wir werden sagen, dies erstreckt sich von Basispunkt-HTML. Blocktitel wird Benutzer sein. Und das bekomme ich aus unserem Kontext. Objektname, Benutzer. Dieser Benutzername. Und Block Body wird ein paar Sachen hier drin haben. wir einfach sicher, dass das auch funktioniert. Kuckuck, das funktioniert alles und hat ein paar Sachen hier drin, sagt Caleb da oben. Das sieht gut aus. Ich habe eine andere Komponente. Ich möchte eine Rückenwind Komponente verwenden, und es ist diese hier. Also gehen wir weiter und schauen uns den Quellcode an. Und ja, das ist es, was ich will. Gehen wir also weiter und wählen Sie all das aus und kopieren Sie es. Und ich werde das hier reinkleben. Und cool, wir haben einen Profilnamen. Also lassen Sie uns voran gehen und beginnen, als einige der Dinge zu bearbeiten, die wir in ein Bild werfen können. Wir können einen Namen oder einen Benutzernamen,
Anzahl der Beiträge, Anzahl der Anhänger setzen . Und das können wir loswerden. Und wir werden damit nicht zu viel machen. Wir werden das nicht den ganzen Weg erweitern, aber wenn du es wolltest, könntest
du wie ein Hintergrundfoto hinzufügen und Benutzern
erlauben, ihre Fotos und solche Dinge zu ändern. Also statt einer Livia Dunham, sagen
wir Benutzer Punkt, Benutzername. Lasst uns das loswerden. Cool, cool. Nehmen wir an, wie viele Beiträge hat dieser Benutzer? X, X, und lassen Sie uns ein To-Do hinzufügen. Fügen Sie insgesamt Beiträge hinzu. Und lassen Sie uns nach Followern suchen, die wir noch keine Follower erstellt haben, aber wir werden in nur ein wenig, um insgesamt Follower hinzuzufügen. Gut genug. Jetzt müssen wir gehen und das Bild dort hinzufügen. Und was wir tun können, ist, dass wir auf eine andere Homepage verweisen können, butter post.html. Wir wissen also, dass wir unser Thumbnail laden müssen und wir wissen, dass es so aussehen wird. Also werde ich das wirklich einfach kopieren. Laden Sie die Miniaturansicht dort hinein. Und wo ist das Bild? Das Bild wird genau hier sein. Und ich habe das gerade aus meiner Zwischenablage eingefügt. Und so wird dies nicht post.All hat ein Profilbild erstellt. Dies wird Benutzerpunktprofil,
Punktbild sein und sucht nicht nach 372 von 372. Eigentlich ist das nicht richtig. Das soll 373 mal drei 73. sein. Du könntest das genauso gut beheben, während wir dabei sind. Und wie groß dieses Bild ist, wissen wir nicht wirklich. Sagen wir mal, machen wir es zu 200 mal 200. Mal sehen, ob das funktioniert. Und es verschiebt nicht das ursprüngliche Quellbild nach oben und ersetzt einfach die URL. Und ich habe gerade das alte gelöscht,
das, das ich ursprünglich in die IM-Punkt-URL eingefügt habe. Okay, nicht schlecht, nicht schlecht. Mein Gesicht ist ein bisschen da. Versuchen wir mal 100 mal 100. Das ist besser. Und jetzt, wenn jemand einen Beitrag wie dieses Gen macht, sehen Sie
tatsächlich ihr Profil. Jetzt können Sie das so weit erweitern, wie Sie möchten. Sie können ein neues Hintergrundbild hinzufügen und dort können Sie sie Ihr Hintergrundbild ändern lassen, alle möglichen Sachen. Die einzige andere Sache, die wir wirklich in
diesem speziellen Kurs tun werden , ist, dass wir die Anzahl der Beiträge, die
Anzahl der Follower hinzufügen und dann in der Lage sein, Menschen tatsächlich zu folgen und zu entfolgen. Als nächstes fügen wir die Gesamtzahl der Beiträge hinzu.
38. Gesamtposten, die: Okay, wenn wir also nur einen Blick hier auf unsere Profilseite werfen, heißt
es Ex Post und Ex-Anhänger. Was ich tun werde, ist, dass ich Ihnen zeigen werde, wie man X Beiträge hinzufügt. Und ich werde hier ein To-Do hinterlassen, damit du deine eigene Anzahl von Followern hinzufügen kannst. Also lass uns weitermachen und unseren Redakteur öffnen. Und wo es x Beiträge sagt, müssen
wir die Gesamtzahl der Beiträge dort setzen. Also lasst uns das einfach machen. Insgesamt Beiträge, wir werden uns für den Erfolg aufstellen. Wir werden insgesamt Beiträge schreiben,
aber jetzt müssen wir das hinzufügen, denn wenn wir aktualisieren, sagt es nichts aus. Also, was wir tun können, ist aus unserer Sicht, in unseren Profilen Schrägstrich Ansichten Punkt PY Datei. Und wir können sagen, def, getContext-Daten. Selbstfinanzierung jede Art von Schlüsselwort-Argumente bei einem nehmen könnte. Lasst uns den Kontext packen. Wir werden also Superpunkt-GetContext-Daten sagen, jede Art von Quarks
übergeben, die möglicherweise an uns übergeben wurden, und jetzt den
Kontext zurückgeben , um etwas zu bekommen, das wir sagen können oder etwas nicht zu bekommen, aber etwas zu unserer Vorlage hinzuzufügen, , um einige neue Kontexte oder eine Vorlage hinzuzufügen, die wir sagen können, Kontext. Und wie nannten wir das? Wir nennen es Gesamtbeiträge. Die Gesamtzahl der Beiträge ist gleich, Wow, hallo. Und das war's. Das ist alles, was wir tun werden. Warten Sie, bis Django neu gestartet wurde. Flip over, und es wird sagen, Wow, Hallo Beiträge. Nun, das funktioniert. Das bekommt etwas aus dem Backend, aber nicht wirklich dynamisch. Lassen Sie uns es dynamisch durch Völlerei machen, indem Sie die Anzahl der Beiträge sammeln. Also müssen wir dies von Fi-Punkt-Modellen importieren, Post importieren. Und dann können wir sagen, Post-Punkt-Objekte, Punkt-Filter vom Autor. Der Autor wird sein, wer auch immer dieser bestimmte Benutzer ist. Punktanzahl. Nein, wir wissen nicht, wer dieser Benutzer ist, weil der Benutzer gerade
eine nicht zugewiesene Variable in dieser Methode ist . Also lassen Sie uns voran und erstellen Sie diese Benutzervariable , die einfach von self.age kommen wird, get object. Und wenn ich das richtig buchstabieren kann, wird
get object dieses Benutzerobjekt erhalten. Es wird also nachschlagen, ein Benutzer wird es nachschlagen, es ist Benutzername und es wird es mit dem Benutzernamen in der URL übereinstimmen. Wenn es einen Benutzer findet, dass Benutzer dann werden, zum Beispiel, Caleb oder Test oder Sie, oder Ihr Lehrer, oder ein Stuhl, wenn Sie wollten, oder irgendeine Art von meme-Konto. Und was wir hier sagen, sind alle Beiträge, alle Post-Objekte, filtern sie nach dem Autor,
stellt sicher, dass der Autor ist, wer auch immer dieser aktuelle Benutzer auf seiner Profilseite ist, und dann alle diese Beiträge zählen. Und lasst uns erfrischen. Und ich habe sechs Posten. Ist das richtig? 123456. In der Tat habe ich sechs Beiträge, und so fügen wir das da drin hinzu. Nun, was ich tun werde, ist, dass ich Sie herausfinden lassen, wie Sie Follower dort hinzufügen können. Jetzt haben wir noch keine Follower-App, also musst du es jetzt nicht tun, aber ich werde hier ein To-Do hinzufügen, insgesamt Follower. Und du wirst herausfinden müssen, wie man die Follower da drin hinzufügt. Ich werde hier ein To-Do hinzufügen, um insgesamt Follower hinzuzufügen, die bereits da drin haben. Also werde ich das für dich überlassen.
39. Eine Follow Knopf hinzufügen: Okay, machen wir uns bereit, den Menschen folgen zu können. Also, was wir hier tun wollen, ist wir eine Art Folgen-Button brauchen, jetzt gibt es keine Aktion. Sie können das Konto von jemandem sehen, aber Sie können ihm nicht folgen. Also lassen Sie uns voran und fügen Sie einen Folgen-Button hinzu. Also direkt darunter, wo Caleb steht, oder was auch immer der Benutzername ist, wird
Ihr Benutzername anders sein. Ich werde einen kleinen Knopf hinzufügen. Und so öffne ich Profile Detail. Und ich suche hier nach meinem Benutzernamen. Und ich werde einen Knopf einfügen. Und dieser Knopf haben wir diesen Knopf schon mal gesehen. Diesen Knopf werde ich Ihnen zeigen. Sieht sehr ähnlich wie dieser Knopf aus, nicht wahr? Also alles, was ich getan habe, war, das zu kopieren. Und was ich hier tun möchte, ist sicherzustellen, dass ich etwas JavaScript angehängt habe. Der Typ wird also nicht Submit sein, der Typ wird einfach eine Schaltfläche sein. Und in der Tat muss es kein Knopf sein. Es könnte eine URL sein oder keine URL, sondern ein Tag. Also ein Anker-Tag, wenn Sie einen Knopf verwenden wollten. Und ich werde sagen, das heißt JS folgen. Und wir müssen schließlich herausfinden, wem das folgen wird. Also Daten, der Benutzername ist gleich dem Benutzer Punkt Benutzername. Und das wird es unserem JavaScript erlauben, herauszufinden, wer dieser Benutzer ist. Und wir könnten eine Benutzer-ID verwenden, wenn wir wollten oder einen Namen verwenden. Es spielt keine Rolle, nur eine einzigartige Art, den Benutzer zu suchen. Und ich werde diesen Text hier setzen, damit JS Text folgt. Und wieder richten wir uns nur für zukünftige JavaScript-Brunnen-Selektoren ein. So können wir diesen bestimmten Knoten auswählen oder wir können
diesen bestimmten Knoten auswählen und wir können sicherstellen, dass etwas tatsächlich passiert. Gehen wir weiter und lassen Sie uns sicherstellen, dass das nicht auftaucht. Der Benutzer ist nicht angemeldet. Also, wenn der Anforderungsbenutzer authentifiziert ist, dann können sie diese Schaltfläche sehen. Ansonsten, sagen wir Klasse der Marge,
Top 3, beachten Sie, dass ich das falsch gemacht habe. Punkt m t Strich drei. Melden Sie sich an, um diesem Benutzer zu folgen Sonst und beende das. Da gehen wir. Okay, es sieht so aus, als hätte es nichts getan. Das ist gut. Lassen Sie uns neue private Browser-Login öffnen , um diesem Benutzer zu folgen, dass Text ein wenig zu groß ist. Können wir den Text verkleinern? - Text? Klein? Ja, das sieht ein bisschen besser aus. Und weil ich hier eingeloggt bin, kann
ich das jetzt schon tun. Ich will nicht in der Lage sein, mir selbst zu folgen. Also lasst uns dies auch in eine weitere if-Anweisung einschließen. Was wir hier tun können, ist, wenn Sie eingeloggt sind, ja, großartig. Sie müssen in der Lage sein, zu überprüfen, ob Sie mit sich selbst vergleichen. Nehmen wir also an, wenn der Anforderungspunkt-Benutzer nicht der aktuelle Benutzer ist, wird
dies sonst überhaupt nichts anzeigen. Da gehen wir. Das funktioniert nicht. Oder vielmehr soll es nicht funktionieren, aber es taucht nicht für mich auf. Ich lass uns gehen und Test-Konto sehen und sehen, ob ich Test-Konto folgen kann. Ich kann dem Testkonto folgen. Cool, cool, cool. Aber ich darf mir nicht folgen. Das sind gute Neuigkeiten. Wir wollen nicht in der Lage sein, uns selbst zu folgen, denn dann können unsere Features voll von unseren eigenen Sachen sein. Jedenfalls.
40. Die follower: Okay, wir reden von Anhängern. Wir müssen in der Lage sein, Menschen zu folgen und zu verfolgen, wer wem folgt. Also lassen Sie uns voran und erstellen Sie eine neue App namens Follower. Also in meinem Terminal hier werde ich Python managed i pi eingeben, App-Follower starten. Und zu meiner Linken siehst du einen neuen Ordner namens Follower. Gehen wir in unsere Einstellungen dot pi und unsere installierten Apps. Und lassen Sie uns Follower hier irgendwo hinzufügen. Es spielt keine Rolle, wo an diesem Punkt Follower genannt wird, Django neu starten wird. Alles sieht in Ordnung aus. Öffnen wir unsere Anhänger und gehen wir zu model.predict. Und lassen Sie uns hier unser neues Modell erstellen. Also nennen wir dies eine Follower-Klasse folgen oder ist ein Modell Punkt-Modell, Modell, mongoose.model, Modell. Interessante Art, das zu sagen. Und dann haben wir gefolgt von ist gleich Modellen dot foreign, key, user. Beim Löschen. Wir haben noch keinen Benutzer importiert, aber das ist okay. Modelle Dot Kaskade. Also, wenn der Benutzer „Gefolgt von“ gelöscht wird, werden
wir diese Beziehung löschen. Und geben wir ihm einen verwandten Namen. Verwandter Name wird von gefolgt werden, weil ich das eigentlich auskommentieren werde. Ich werde Ihnen zeigen, warum wir das in einer Sekunde tun müssen. Dann müssen wir sehen, wer diese Person folgt, ist gleich zwei Modelle, Punkt Fremdschlüssel. Dies wird auch ein Benutzer auf Löschen ist gleich zwei Modelle Punkt Kaskaden. Also, wenn wir diesen bestimmten Benutzer löschen, wird
es auch diese Beziehung löschen. Wenn Sie also das Konto löschen, dem Sie folgen oder diese Person ihr eigenes Konto löscht, wird diese Beziehung gelöscht. Andernfalls wird die Beziehung
auch gelöscht, wenn die Person , die Ihnen
folgt und ihr Konto löscht. Dies wird also von zwei folgenden Beziehungen gefolgt. Lassen Sie uns diesem einen String def String geben, so dass es eine String-Darstellung hat, geben Sie eine Art von F String
zurück, den wir selbst tun können. view gefolgt von DID, was auch immer diese Benutzer-ID
ist, folgt self.age, folgende Punkt-ID. Und lassen Sie uns auch eine Klasse Meta geben. Und sagen wir, einzigartig zusammen wird folgen und folgen. Dies wird also einen eindeutigen Index erstellen. Du kannst also sehen, ob dir jemand folgt, ob du ihnen folgst und dass es immer nur einen geben kann. Damit man den Menschen nicht immer und immer und immer und immer wieder folgen kann. Und stellen wir sicher, dass das ein Tupel oder ein Tupel ist. Ich weiß es nicht. Manchmal ist dieses Tupel, manchmal ist es Tupel. - Ja. Ok. Name Benutzer ist nicht definiert. Lassen Sie uns den Kopf wieder von Django Dot Vertrag, Dot Auth Dot Modelle importieren Benutzer. Und schauen wir uns an, was das hier sagt. Lass uns das erledigen. Und es steht, und deshalb werden wir hier verwandte Namen hinzufügen. Es sagt, gefolgt von Zusammenstößen mit Reverse Accessor für Follower Follower folgen. Diese sind also im Grunde widersprüchlich im Land der Django-Magie. Was wir tun können, um dies zu vermeiden, wenn Sie jemals so etwas sehen, ist, dass wir
diesem einfach einen verwandten Namen geben können und wir geben diesem einen verwandten Namen. Und wir nennen es nur folgt und Follower, die gefolgt werden und folgen. Und dieser Fehler verschwindet. Als Nächstes müssen wir Migrationen vornehmen und das auch richtig buchstabieren. Und dann migrieren. Cool. Also haben wir das da drin. Lassen Sie uns dies auch bei unserem Admin registrieren. Wir haben das schon mal gemacht. Und so lasst uns in unser Futter gehen. Wir werden diesen Admin kopieren. Follower gehen hier zu unserem Admin, fügen Sie das dort ein. Und anstatt von Modellen zu importieren und Post zu bekommen, wollen
wir Anhänger bekommen. So nannten wir diese Modellierung hier, Anhänger. Und lassen Sie uns einfach all diese auswählen. Django sollte neu starten und es sollte keine Probleme geben. Jetzt gehen wir zurück zu unserem Admin und wir werden in der Lage zu sehen, dass wir
eine neue App hier haben , genannt Follower und es gibt niemanden folgen. Und ich kann Caleb auswählen, um Test zu folgen. Speichern Sie und fügen Sie eine weitere hinzu. Lasst uns das versuchen. Caleb wird den Test nochmal folgen und speichern. Und es sagt, Follower mit diesem gefolgt von in der folgenden bereits existiert. kann also nur einer existieren. Und so ist das eine einzigartige Einschränkung für unsere Datenbank. Und Django wird das für uns durchsetzen. Also zu diesem Zeitpunkt sollten Sie eine Follower Django-Anwendung haben.
41. Folgende folgender und folgen: In Ordnung, wir brauchen einen Weg, um einem Benutzer zu folgen und zu entfolgen. Wenn wir also unsere App öffnen, kann
ich diesem Testkonto folgen. Aber wenn ich anklicke, tut es nichts. Also brauchen wir das, um etwas zu tun. Wir brauchen eine Art Interaktivität. Dann müssen wir Ajax diese Daten zu und von den Servern. Wir müssen Daten an den Server senden und Daten vom Server akzeptieren und ändern Sie das Wort folgen zwei oder unfollow oder so etwas. Vielleicht möchten wir auch die Anzahl der Follower dort ändern. Also überlasse ich das dir, weil ich das nicht absichtlich gemacht habe. Das überlasse ich dir. Aber wenn Sie in JavaScript
möchten, können Sie das auch dynamisch aktualisieren. Und wenn wir damit fertig sind, werden
wir unsere Homepage ändern, um sicherzustellen, dass wir nur
Beiträge anzeigen , die für uns relevant sind von Leuten, denen wir folgen. Also lasst uns weitermachen und daran arbeiten. Wir müssen Profildetail dot HTML öffnen. Und wir haben diese JS folgen. Und so wollten wir etwas JavaScript damit schreiben. Gehen wir also in unser Frontend,
main.js, und fügen wir hier einen weiteren Ereignis-Listener hinzu. Also, wenn Sie auf diese Funktion klicken, verhindert
E Punkt Standard. Und das wird nur verhindern, dass ein Link irgendwo hingeht oder eine Schaltfläche ein Formular einreicht, auf das console.log geklickt wurde. Und wir wollen nur sicherstellen, dass das funktioniert. Cool. Angeklickt. Und lasst uns weitermachen und auch einige Daten sammeln. Also müssen wir, was ich tun kann, ist vielleicht das aufteilen. Nein, das ist zu voll. Okay, lassen Sie uns das teilen. Also in unserer detaillierten layout.html, wenn Sie auf folgen klicken, gibt es einen Benutzernamen und es sollte eine Art von Aktion geben. So können wir Daten Aktion ist gleich folgen oder unfollow. Das wird es sein. Gehen wir voran und holen Sie sich diesen Benutzernamen und lassen Sie uns diese Aktion bekommen. Und wir brauchten auch Daten-URL irgendwo tatsächlich Ajax ist Daten von Tür zu eher. Und so wird das URL sein. Profile. Folgen Sie. Und wir werden sagen Benutzer Punkt, Benutzername. Jetzt wird das nicht existieren. Wenn wir also unsere Vorlage laden, wird
dies uns einen Fehler geben. Genau so, umgekehrt für folgen nicht gefunden. Und so wie alle Django-Dinge, müssen
wir irgendwie mehrere Dinge auf einmal tun. Und so geht es zu unseren Profilen und es geht zu unseren URLs. Lassen Sie uns dies einfach kopieren und folgen Sie am Ende und Profil Detailansicht. Gehen wir der Ansicht folgen. Jetzt gibt es diese Folgeansicht nicht. Also lassen Sie uns in unsere URL oder unsere Ansichten Mutter oder URLs gehen. Es sei denn, Sie folgen der Ansicht. Und wir wollen nicht, dass das wirklich etwas Besonderes ist. Wir wollen nur, dass dies ein regelmäßiger Blick ist. Aber wir müssen auch sicherstellen, dass dies einloggen ist,
dass der Benutzer Login . So. Login erforderlich Ansicht und ich glaube nicht, dass das in Ihrem noch. Also, wo haben wir das hingestellt? Ansichten füttern? Wir scrollen hier nach oben, wir können einfach hier rüber gehen. Ich werde buchstäblich nur kopieren und einfügen diese Kopie einfügen. Und anstelle der Detailansicht werden
wir hier eine Ansicht hinzufügen. Und nicht zuletzt mag
Python keine leeren Zeilen. Sagt Login erforderlich Ansicht Nüsse, weil es keine Ansicht ist, es ist ein Mixin. Da gehen wir. Django beschwert sich nicht mehr. Also zuerst, was wir tun müssen ist, dass wir sicherstellen müssen, dass eine unsere Vorlage geladen wird. Lassen Sie uns aktualisieren, diese Vorlage wird immer noch nicht geladen. Ich frage mich, warum es das nicht tut? Weil ich es nicht das Richtige nannte. Ich kopierte und eingefügt. Das war eine Kopie, die ein Problem bestanden hat. Wenn Sie kopieren und einfügen, tun Sie nicht, was ich tue. Vergewissern Sie sich immer, dass Sie alles durchlesen, was Sie kopiert und eingefügt haben. Okay, stellen wir sicher, dass das funktioniert. Lassen Sie uns das untersuchen und sehen, was wir hier drin haben. Wir haben eine Schaltfläche mit einer Daten-URL,
ein Daten-Ist-Daten-Username . Und wir wissen, dass, wenn wir darauf klicken, darauf geklickt werden wird. Also, jetzt müssen wir etwas tun. Wir müssen hier ein paar Daten sammeln. Also gehen wir zurück in, ich werde einige davon in unsere main.js schließen und wo wir diese Ajax-Datei haben. Was ich tun werde, ist, dass ich das komplett kopieren werde. Bumm. Und wir werden ein sehr, sehr einfaches Jahr schreiben. Wir werden nicht viel Verarbeitung oder JavaScript-Validierung durchführen. Welche Art von Daten möchten wir senden? Wir wollen senden, die Aktion wird eine Art Aktion sein. Also, weil es auf diesem JS-Folgen-Button ist
, der genau da ist, ist
es eine Eigenschaft hier. Wir können dies sagen, diese ATTR, Datenaktion. Und der Grund, warum ich Datenaktion anstelle von Punktdaten verwende. Und dann nur Action da rein. Ich zeige Ihnen, dass es zwei verschiedene Möglichkeiten gibt, dies zu schreiben. Datenaktion wird eingelöst werden. Das wird für Sie nicht funktionieren, wenn wir es in Zukunft ändern, was wir tun werden. Während ATTR, Attributdatenaktion wird nicht zwischengespeichert werden und es wird es jedes Mal nachschlagen. Das ist also nur ein netter kleiner Weg, das Caching-Problem. Wir müssen einen Benutzernamen überprüfen. Benutzername wird also dieser Punktdaten-Benutzername sein, oder wir können Daten hier verwenden, weil es kein Problem sein wird, wenn er zwischengespeichert wird, dieser Benutzername wird nie geändert werden. Während sich die Aktion hier von folgen zu unfollow ändern wird, um zu folgen, um zu folgen. Aber der Benutzername wird sich nie ändern. Der Benutzername wird in jeder Profildetailansicht gleich sein. Zuletzt brauchen wir die Daten-URL, und das wird von Django kommen. Das wird rechts innere Vorlage gerendert werden. Und wir werden sicherstellen, dass JavaScript dynamisch ist. Und so werden wir diese URL zu dieser Punktdaten-URL ändern. Das nenne ich es, richtige URL. Ja, ja. Und lassen Sie uns einfach sicherstellen, dass es danach ein Komma gibt. Also im Grunde werden wir sagen, gehen Sie zu dieser URL, wo immer das ist. Und wir könnten das auf dem Django-Backend ändern und JavaScript wird in Zukunft nicht tragen. Die Aktion wird entweder folgen oder nicht folgen. Der Benutzername wird sein, was auch immer dieser Benutzername auf dieser Seite ist. Und lasst uns das Zeug loswerden, weil wir das nicht brauchen. Und wir werden das einfach schön und einfach halten. Dieser wird keine Daten, Daten HTML zurückgeben. Dieser wird nur regelmäßige Daten in Form von JSON zurückgeben, wie wir normalerweise eine,
a, a, eine Ajax-Anfrage erwarten . Okay, also lass uns das retten. Und mal sehen, was hier passiert. Lasst uns darauf klicken. Und wir bekommen eine 405-Methode nicht erlaubt. Cool. Das bedeutet also, dass wir etwas damit machen können. Das bedeutet, dass unser Endpunkt funktioniert. Also gehen wir zurück, wo unsere Bewertungen nicht im Feed sind. Wir sind nicht in Front-End-Profilansichten, HTTP-Methodennamen. Und wir werden sagen, dass der einzige Methodenname, der hier erlaubt ist,
Post ist . Versuchen wir es noch einmal. Und dieses Mal bekommen wir eine Methode, die nicht erlaubt ist. Das ist eigentlich in Ordnung. Ich denke, was wir hier suchen, ist, wenn ich mich richtig erinnere, taub post self request, arggs und quarks. Und wir wollen hier nur etwas zurückgeben. Also lassen Sie uns eine JSON-Antwort von w1 zurückgeben ist gleich wahr. Und wir müssen diese JSON-Antwort von Django dot HTTP-Import JSON-Antwort importieren. Ok, probieren wir das aus. Okay, es scheint, als würde es alles tun, was XHR hier eingeschaltet ist. Jetzt sieh dir das an. Wir kommen jetzt zu Hunderten, das ist gut, und jedes Mal, wenn wir darauf klicken, bekommen wir eine 200. Also, was wir hier tun wollen, ist, dass wir sagen, Daten sind gleich Anfrage und Dot Post-Doc. Weil ich gerne mit Wörterbüchern arbeite. Dann können wir sagen, wenn Aktion nicht in Daten oder Benutzername nicht in Daten, geben Sie eine HTTP-Antwort, schlechte Anfrage. Ich werde das kopieren, damit ich nicht alle 300 Mal die Funktion eingeben muss. Und ich vermisse leicht Daten, und das kommt auch von HTTP. Und was das sagen wird, ist, wenn jemand versucht, auf diese URL zuzugreifen, selbst wenn sie eingeloggt sind, wird
es nach einer Aktion und einem Benutzernamen suchen. Und wenn sie das vermissen, werden
sie eine schlechte Antwort bekommen. Jetzt gehen wir weiter und versuchen, diesen Benutzer zu finden. Also versuchen wir es. Der andere Benutzer. Ist gleich dem Benutzer Punktobjekte dot get, und dann wird der Benutzername Daten Benutzername sein. Und das kommt von unserem Ajax angeforderten Datenobjekt ist unsere Ajax-Anfrage, und das ist der Benutzername auf unserem Benutzerobjekt. Wird vom Benutzer importiert. In der Tat ist
es, das sind gute Nachrichten. Und das ist nur das. Wenn der Benutzer nicht vorhanden ist. Also, wenn jemand versucht, böswillig zu sein, und er ist ziemlich gut darin, böswillig zu sein. Nehmen wir an, der Benutzer existiert keine Ausnahme und gibt eine HTTP-Antwort, eine
schlechte Anfrage und einen fehlenden Benutzer zurück . Oder wir könnten 404 oder was auch immer du willst. Also, jetzt können wir sagen, ob Daten Aktion ist
gleich folgen, sonst, unfollow. Und ich mag es, kleine Kommentare hier zu hinterlassen, damit die Leute wissen, was ich tue, wenn sie den Quellcode lesen. Und so ist die Idee hier, dass du jemandem folgen sollst. Lassen Sie uns, machen Sie ein get oder erstellen. So können wir sagen, der Anhänger und erstellt, weil dies nicht zurückkehren wird. Ein Tupel ist gleich Follower Punkt Objekte, Punkt, get oder create. Und wir werden sagen, gefolgt von ist gleich ihrem Quest Punkt-Benutzer. Und folgendes ist der andere Benutzer. Und dass andere Benutzer von hier oben kommen. Und ich persönlich stelle diese Bitte, jemandem zu folgen. Also werde ich sagen, dass diese Person von mir oder der Anfrage, dass Benutzer gefolgt wird. So habe ich diese Logik bekommen. Es ist zunächst ein bisschen verwirrend, aber es macht mehr Sinn, wenn man hier und da ein wenig damit arbeitet. Andernfalls wollen wir dieser Person entfolgen. Follower ist also gleich Follower Punktobjekte dot get gefolgt von ist gleich der Anforderung dot user, und folgende ist gleich dem anderen Benutzer. Mal sehen, ob wir diese Person kriegen können. Lassen Sie uns dies jedoch versuchen, weil dieses Folgende möglicherweise nicht existiert. Also müssen wir das akzeptieren. Und wir können sagen, Anhänger existiert nicht. Pass. Oder wir könnten sagen, dass Follower gleich None ist. Und dann hier unten können wir sagen, wenn es einen Anhänger gab, der gefunden wurde, Follower dot löschen. Dann können wir in unserer JSON-Antwort sagen, dass getan wahr ist oder in der Regel Erfolge wahr oder so etwas ist. Und dann können wir sagen, wir wollen eine Formulierung zurückgeben. Die Formulierung wird unfolgen. Und das wird der Wortlaut sein, den wir in das DOM zurücksetzen. Also unfollow, wenn Daten Action gleich ist zu folgen und dies ist eine ternäre Anweisung in Python. Sonst folgen. Also, wenn jemand jemandem folgt, werden
wir die Formulierung unfollow zurückgeben. Andernfalls, wenn jemand unfollow hat,
jemand, geben Sie das Wort zurück, folgen Sie. Und ich werde Ihnen zeigen, wie das hier aussieht. Wir können console.log
Daten tun und wir erhalten einen internen Serverfehler. Ok, gehen wir und sehen, welche Art von Fehler wir haben. Follower sind nicht definiert. Oh ja, das ergibt Sinn. Und wir müssen gehen und importieren, dass von Followern
Dot Modelle Import Follower . Das ist Erfrischung. Um voranzugehen und zu folgen. Und es sagt, Erfolg mit wahrer Formulierung unfollow. Jetzt gehen wir zu unseren Anhängern hier drinnen. Einer folgt zwei, ich persönlich, Caleb, M1 Test ist zwei. können wir in Caleb sehen und testen. Lassen Sie uns fortfahren und das löschen. Stellen Sie nur sicher, dass dies funktioniert. Lassen Sie uns erneut klicken, aktualisieren Sie unseren Admin. Da ist es. Jetzt müssen wir das wechseln. Wenn also jemand verfolgt wird, müssen
Sie ihm entfolgen und wenn jemand nicht gefolgt wird oder es ungültig ist, müssen
Sie in der Lage sein, ihm wieder zu folgen. Also gehen wir in unseren Hauptpunkt js hier und unseren Knopf. Wir können sagen, dass dies 0.2x Datenpunktwortformulierung sein wird. Lass uns sehen, wie das jetzt aussieht, wenn ich dieses unfollow aktualisiere und oh, das hat sich tatsächlich zu viel von dem geändert, was ich will. Ich will immer noch diesen Knopf und alles. Ich möchte, dass sich JS Folgetext ändert, aber ich möchte, dass dieser SVG dort bleibt. Also lassen Sie uns das nicht tun, aber lassen Sie uns diesen bestimmten Knoten auswählen. Da gehen wir, unfolgend. Wir müssen diese Aktion auch ändern, und diese Aktion, wo ihr folgt, muss nicht folgen. Also, was wir hier sagen können, ist, wenn die Aktion gleich zu folgen ist, ändern Sie den Wortlaut zu unfollow, sonst, das Gegenteil. Und so könnten wir das sagen, weil wir hier keine
Funktionen verwenden , wo wir Pfeilfunktionen verwenden. Wir verwenden also keine Funktionen mit diesem Schlüsselwort. Wir betrügen jQuery ein wenig hier. Wir können dies weiterhin in Bezug auf JS verwenden, folgen Sie diesem Punkt ATTR. Datenaktion wird unfolgen. Sonst wird es sein. Und lassen Sie uns einfach sicherstellen, dass das funktioniert. Also haben wir Benutzername Test. Datenaktionen müssen folgen und hier nicht folgen, lassen Sie uns voran und klicken Sie darauf. Und es tut nicht, was ich erwartet habe. Warum tust du das? Lassen Sie uns diese Konsole debuggen. Dot Log, Debuggen. Folgen Sie nicht. Folgen Sie. Aktion ist nicht definiert. Und das liegt daran, dass ich es hier aufstelle, die in eine Variable
verwandle. Da gehen wir. Konstante Aktion ist gleich, was auch immer die Aktion ist tatsächlich gleich Aktion. Und dann können wir sagen, ob diese Aktion gleich ist Yada zu folgen, yada. Okay, mal sehen, ob das jetzt funktioniert und das sollte besser funktionieren. Da gehen wir. Es ändert sich von folgen zu unfollow. Eine letzte Sache, die wir tun müssen, und wir werden das in der nächsten Lektion tun,
ist, dass wir sehen müssen, ob ich gerade jemandem folge. Ich muss diese Schaltfläche und diese Standardaktion von folgen in unfollow ändern. machen wir in der nächsten Lektion.
42. Dynamisches Folge und Entfolgen: Wir müssen schon sehen, ob jemand jemandem folgt oder nicht. Also, wenn ich das tue, gehen Sie zu Anhängern. Cool, cool. Es sagt also, ich folge dem, was ich diese Seite aktualisiere. Es heißt nicht, dass ich ihnen folge. Es will, dass ich ihnen folge. Es veranlasst mich, jemandem zu folgen, und das muss eigentlich das Gegenteil sein. Und was wir tun müssen, ist, dass wir in
unsere Verwendung dot pi und unsere Profildetailansicht gehen müssen . Wir müssen hier einen Kontext hinzufügen. Also müssen wir sagen, wenn Anfrage Punkt user_data authentifiziert ist, ist
der Kontext von Ihnen folgen gleich Follower-Punkt-Objekte, Punktfilter. Und wem folge ich? Dieser spezielle Benutzer, den wir hier eingerichtet haben, Benutzer gleich self.age SetObject. Und gefolgt von ist mir gleich, Anfrage Punkt-Benutzer. Und dann müssen wir nur sehen, ob das existiert. Gibt es das? Und das, anstatt Filter zu sagen und möglicherweise mehrere Zeilen zu erhalten, es wird einfach sagen, es existiert nicht ja oder nein, und es wird wahr oder falsch zurückgeben. Jetzt ist die Sache, Anfrage Punkt Benutzer existiert nicht. Wir haben keine Anfragen in Kontext-Daten, also müssen wir dies in unseren Versand hinzufügen. Also taub Dispatch, Self-Request, Argumente, Quarks und Return Super Dot Dispatch-Anfrage Args und Quarks. Und alles, was wir hier tun wollen, ist eine Self.age Anfrage ist gleich diesem Anforderungsobjekt. Und jetzt, anstatt hier unten Anfrage zu sagen, können
wir sagen, wenn Selbstpunkt-Anfrage, dass der Benutzer authentifiziert ist und wir können das Gleiche hier tun. Wenn Autodidakt Anforderungsbenutzerpunkt vorhanden ist, sagen Sie, Sie folgen. Jetzt in unserer Detailansicht, können
wir sagen, aufgrund, aufgrund aufgrund aufgrund. Wir können den Wortlaut hier ändern. Geben Sie uns etwas Raum, um innerhalb der Spannweite zu arbeiten. Wenn Sie folgen, folgen Sie nicht, sonst folgen Sie. Und wenn und mal sehen, ob das funktioniert. Sie sind echt. Verfolge ich dieser Person? Ich folge dieser Person. Es will jetzt, dass ich den Folgen entziehe. Wir wissen, dass es noch eine Sache gibt, die wir hier tun müssen, ist, dass wir uns als Aktion ändern müssen. Und so können wir sagen, wenn folgt, nein, wenn Sie eher folgen, lassen Sie uns einfach Präfixe mit dem Wort auf. Und wenn ja, wird es entweder befolgt oder unfolgt. Das ist unfollow und delete. Und wir sehen, dass das Folgende gelöscht wurde. Und wenn ich zurückgehe und wieder folge und nur meinen Admin aktualisiere, erscheint
es in einem weiteren Beispiel, unfollow, und es geht weg. Genau so. Wir haben jetzt eine folgende. Wir können mehreren Menschen folgen. Jetzt ist die Sache, wenn ich dieser Person folge und hierher zurückgehe, es ist immer noch nur auftaucht, was Beiträge hier drin sind, wir müssen uns ändern, das. Wir müssen tatsächlich dort reingehen und ändern, wessen Beiträge wir sehen. Und das werden wir in der nächsten Lektion tun.
43. Dynamische HomePage: In Ordnung, wir nähern uns dem Ende hier. Was wir also tun müssen, ist, dass wir unseren Homepage-Feed anpassen müssen. Und was wir tun werden, ist, dass wir unsere Feed-Ansichten öffnen werden. Und wir haben diese Homepage, ListView. Und es gibt ein paar verschiedene Möglichkeiten, wie wir das tun können. Wir können die hier gesetzte Abfrage überschreiben, indem
wir def schreiben, query set, self, eine Reihe von Sachen dort
machen, was wahrscheinlich der richtige Weg ist, es zu tun. Aber ich wollte einen etwas anderen Ansatz verfolgen. Und ich möchte dies von einer ListView in eine einfache Template-Ansicht konvertieren. Und so lassen Sie uns gehen und ändern Sie diese ListView in eine Vorlagenansicht, indem Sie das importieren. Und ich glaube, es gibt nichts anderes als okay,
was ich suchte, war eine andere Listenansicht. Ich kann das löschen. Nun, hier ist die Sache, ist, selbst wenn ich das in lösche, Django hört auf zu beschweren, es gibt keine Abfrage mehr für uns. Es gibt kein Modell mehr, das wir gehen müssen und eigentlich auch keine Beiträge mehr. Also müssen wir tatsächlich gehen und diese löschen und sie unserem Kontext hinzufügen. So können wir taub, getContext-Daten tun. Selbstanfrage, Argumente und Quarks. Kontext ist gleich super und die get Kontextdaten, Anfrage. Argumente. Und Quarks. Geben Sie diesen Kontext zurück. Jetzt können wir sagen, dass Kontext-Posts gleich sind, ich denke, das haben wir es genannt. Sagen wir mal, hoffen wir, dass ich das zu klein gemacht habe. Ihre Homepage, ja, wir nannten es Beiträge. Wir müssen das also zu unseren Kontexten hinzufügen. Post.alle Objekte, Punkt alle. Abrufen von Kontextdaten, die eine erforderliche Positionsargumentanforderung fehlen. Oh, okay. Wir haben keine Anfrage in unseren GetContext-Daten. Das war ein bisschen ein Hirnfurz, den ich dort hatte. Warten Sie, bis es neu geladen wird. Okay, also denke ich, die sind tatsächlich in umgekehrter Reihenfolge. Diese sind jetzt in umgekehrter Reihenfolge. Also müssen wir das auch ändern. Und wir müssen sehen, ob sich jemand eingeloggt hat, um diese Beiträge dynamisch zu ändern. Also zuerst, lasst uns das tun, lasst uns das löschen. Und sagen wir, wenn Autodidakt Anfrage Benutzer authentifiziert wird, wird
folgende eine benutzerdefinierte Liste sein. Sonst werde ich das nicht verfolgen. Post wird eine angepasste Liste und Post sein. Andernfalls, wenn jemand nicht angemeldet ist, wird einfach Post-Punkt-Objekte,
Punkt, Punkt-Reihenfolge nach ID sein . Und zeigen wir die ersten 30, wie wir es ursprünglich getan haben. Keine Selbstpunkt-Anfrage ist noch nicht definiert, daher müssen wir taub versenden. Selbstanfrage. Args, Quarks, Return Super Dot Dispatch, Anfrage. Args-Anfrage. Und Selbstpunkt-Anfrage wird sein, und die Frage ist gleich Anfrage. Und das erlaubt uns, Selbstpunkt-Anfrage hier zu verwenden. Also jetzt, wenn jemand eingeloggt ist und wir nicht wissen, was diese Beiträge sein sollen. Wir müssen eine Liste aller unserer Follower bekommen. Sagen wir also eine Liste von wem wir folgen. Also folgendes ist gleich Follower Punkt-Punkt-Punkt-Objekte, Punkt-Filter. Und die Leute, die von mir verfolgt werden, self.age Anfrage dot user. Und das wird uns ein riesiges Abfrage-Set geben. Jetzt wollen wir nicht eine riesige Abfragen, die wir wollen nur eine Liste dieser Benutzer. So könnten wir Punktwerte tun, Liste folgen. Wir wollten nur alle Leute auflisten, denen sie folgen. Und wir wollen sicherstellen, dass das flach ist, und das ist drucken. Drucken Sie folgende. Ich werde diese Zeile auskommentieren, damit sie sich nicht beschwert, wenn ich die Vorlage lade. Und lasst uns das neu laden. Sie wird nichts zeigen. Und mit nichts, ich meine, es wird einen Importfehler wie erwartet zeigen. Also lassen Sie uns dies von Follower-Punkt-Modelle Import Follower tun. Jetzt lasst uns das neu laden und wir sollten, wir sollten sehen, dass es keine Beiträge gibt. Und hier unten sollten wir etwas sehen. Dieser Abfragesatz von zwei. Nein, wir wollen nicht, dass das ein Abfragesatz ist und es sagt nur zwei da drin. Wir möchten, dass dies eine Liste ist, also können wir diese als Liste eingeben, wenn wir wollten. Und in der Tat, lassen Sie uns dies auf mehrere Zeilen setzen, nur weil Python uns das erlaubt. Nun, was wir sagen können, ist, dass Posts diese ganze Sache kopieren. Aber statt allem können wir filtern. Und wir können sagen, dass der Autor in einer Liste der folgenden ist. Und anstatt 30 zu bekommen, wenn Sie eingeloggt sind, lassen Sie uns voran und zeigen 60 an. Und lass uns voran gehen und sicherstellen, dass das funktioniert. Und das hat für mich nicht funktioniert. Und das liegt daran, dass ich keine Beiträge in meinen Kontext geworfen habe. Kontext. Beiträge sind gleich Beiträge. Und dieser Kontext, dieser Beitrag kommt von genau da, genau hier. Das ist wichtig. Es gibt nichts zu durchlaufen, wenn wir es nicht dem Kontext hinzufügen. Da gehen wir. Lassen Sie uns voran und klicken Sie auf diesen Kerl ist Name, unfollow, Gehen Sie nach Hause. Da ist nichts. Jetzt noch eine Sache. Wenn es nichts gibt, was zeigen wir dann? Also lassen Sie uns sagen, wenn diese Liste leer ist, also wenn nicht folgt, zeigte die Standardeinstellung 30. Sonst werden die Beiträge ein bisschen dynamischer sein. Los geht's. Standard 30. Lass uns das machen. Da gehen wir. Und diese Arbeit, die allen zeigt, dass jeder die letzten 30 Posten hat. Gehen wir weiter und folgen. Nun, ich kann mir nicht folgen. taucht nicht auf. Es ist keine Option für mich. Aber was ich tun kann, ist, dass ich dieser Person folgen kann, nach Hause
gehen kann, und es ändert meine Liste für mich. Also jetzt haben wir eine funktionierende Anwendung. Wir können das auch loswerden. Es ist nicht von Nutzen. Und so haben wir jetzt eine funktionierende Anwendung. Es gibt einige Bits und Bobs, die ich möchte, dass Sie an ihnen arbeiten und
Ihnen dann in der nächsten Lektion von denen in Ihrem Projekt erzählen.
44. DEIN PROJEKT: Ok. Hallo und herzlich willkommen zu Ihrem abschließenden Projekt. In Ihrem endgültigen Projekt haben wir, während dieser ganze Django zu u1 ein großes Projekt an sich gewesen ist. Aber ich ließ ein paar Dinge offen für die Interpretation. Und so zum Beispiel, wenn ich nach Caleb gehe, wird
es Ihnen zeigen, dass ich XX Follower habe. Du musst das ausfüllen. Wie viele Follower haben Sie? Eine andere Sache, die ich möchte, dass Sie tun, ist ein bisschen Front-End-Arbeit. Wenn Sie sich also anmelden, müssen Sie diese Vorlagen tatsächlich ändern. Sie sehen also ein bisschen schöner aus, weil sie im Moment nicht sehr schön aussehen, aber das liegt ganz an dir. Die andere Sache, die ich gerne tun möchte, ist, wenn Sie eingeloggt sind.
Ich möchte, dass Sie hier einen neuen Abschnitt hinzufügen, der es dem Benutzer ermöglicht, seinen Vornamen,
Nachname, seinen Benutzernamen, sein Passwortzu aktualisieren Nachname, seinen Benutzernamen, sein Passwort und vielleicht ein Bild hochzuladen. Wenn Sie nun nicht wissen, wo Sie mit dem Image-Upload beginnen sollen, haben wir das in Django 101 behandelt. Also möchten Sie vielleicht darauf hinweisen, dass man all das in Django 101 tatsächlich wiederhergestellt hat, Sie können ein Modellformular verwenden oder Sie können ein normales Formular verwenden und die Benutzerinformationen
manuell aktualisieren. Aber so oder so, ich möchte, dass Sie hier
einen neuen kleinen Kontobereich erstellen , in dem jemand Ihren Benutzernamen, Ihr
Passwort, Vorname, Nachname und ihren Avatar ändern kann . Das wird ein bisschen googeln,
ein wenig Forschung, ein wenig Lesen der Django-Enten erfordern . Und das ist alles echte Lebenserfahrung, denn sobald Sie einen Job als Webentwickler haben, werden
Sie nicht mehr mit Ihrem Handheld. Und ein Klient wird sagen, hey, ich brauche eine bestimmte Funktion. Und leider müssen Sie gehen und lernen,
wie Sie herausfinden können, wie Sie diese Funktion lösen können. Du könntest genauso gut diese Erfahrung jetzt bekommen, während du lernst. Und wenn Sie wirklich, wirklich wissen wollen, was Sie tun
könnten, könnten Sie versuchen, dieses mobile
reaktionsschnell zu machen , wenn Sie eher eine Front-End-Person
mit mehr Front-End-Wissen als Back-End-Wissen sind. Sie können immer versuchen, dies zu einer ansprechenden Seite zu machen, denn im Moment glaube
ich nicht, dass dies tatsächlich zu reagieren ist, wenn überhaupt reaktionsschnell ist. So sieht es auf Mobilgeräten nicht gut aus, aber Sie möchten vielleicht voran gehen und es auf Mobilgeräten aussehen lassen. Wenn Sie das getan haben, vergessen Sie nicht, Ihr Projekt mit dem Rest der Klasse zu teilen. Vor allem ich. Ich will sehen, woran du arbeitest. Ich will sehen, wie sich das für dich ergibt. Aber vor allem haben Sie etwas Spaß damit. Und vergiss nicht, dich selbst zu schieben. Es ist wichtig, sich selbst zu drängen, denn so wächst man. Und vergessen Sie nicht, Ihr endgültiges Projekt
und Ihr Endergebnis mit dem Rest der Klasse zu teilen und vor allem mir, ich sehe wirklich gerne die Arbeit aller. Zeigen Sie es unten. Ich würde gerne einen Blick werfen.