Eine Geschichte, die Django mit einer Funktion wie before_action ausführen wollte, die in Schienen verwendet wird [Anfänger lernt Python mit einem Nachschlagewerk]

Einführung

Mit Takashi Otaka, "Lernen durch Bewegen! Einführung in die Python Django-Entwicklung" Ich bin ein Anfänger, der angefangen hat, Python und Django zu lernen. Ich habe ungefähr 4 Monate lang Programmieren mit Ruby / Rails studiert. Als ich meinen Job als Ingenieur wechselte, entschied ich mich für Python und begann mit diesem Buch in einer Hand zu lernen. Da ich ein Amateur ohne Klasse bin, wäre ich Ihnen sehr dankbar, wenn Sie Ergänzungen und Vorschläge kommentieren könnten.

Überblick

Wie die before_action, mit der ich die Rails-App erstellt habe, Fügen Sie vor der angegebenen Gesamtansicht einen festen Prozess ein. Ich wollte das auch mit Django machen.

Speziell,,,, Überprüfen Sie, ob die Sitzung einen bestimmten Wert hat, bevor Sie die Vorlage in der klassenbasierten generischen Ansicht anzeigen. → Ja: Anzeige wie sie ist → Keine: Zum Indexbildschirm umleiten Ich möchte es verarbeiten.

Erwägung

Wenn Sie bestätigen können, dass Sie mit @login_required angemeldet sind, Vielleicht kann ich etwas ähnliches machen ...? Nein, das geht nicht. ↓ Anscheinend ist "@ ~" ein Dekorateur. Und schließlich scheint es, dass Sie Ihre eigenen machen können.

Beschreiben Sie die Verarbeitung, die Sie gemeinsam ausführen möchten.

Diesmal "ob die Sitzung einen bestimmten Wert enthält".

def is_hoge_in_session(func):
    def hoge_checker(request):
        if 'hoge' in request.session:
            return func(request)
        else:
            return redirect("hogeApp:index")
    return hoge_checker

In Bezug auf den Inhalt des Codes frage ich mich, ob die Erklärungen der großen Vorfahren leicht zu verstehen sind. ・ [Python] Erklärung der Dekorateure für AnfängerWie man Decorator in Django benutzt und wie man es macht

Platzieren Sie es einfach über der Zielklassenansicht.

# method_Dekorateur importieren
from django.utils.decorators import method_decorator

、、、(Unterlassung)、、、

@method_decorator(is_hoge_in_session, name='dispatch')
class HogeFugaView(LoginRequiredMixin, generic.ListView):
、、、(Folgendes wird weggelassen)

Übrigens, wie man mit Funktionsdekoratoren in der klassenbasierten Ansicht umgeht Wir haben Weisheit von der folgenden Seite erhalten. [Django] Verwendung von Funktionsdekoratoren in klassenbasierten Ansichten

Diese Zusammenfassung

Zeit, die in der Taube weggeworfen wurde → 2 Stunden Impressionen: → Auch wenn Sie ein Anfänger sind, auch wenn Sie keinen Senior haben, der auf die Sprache, die Sie entwickeln, spezialisiert ist Gut, ich habe einen Google-Professor. Der Rest ist begeistert.

Toller Referenzartikel

Recommended Posts

Eine Geschichte, die Django mit einer Funktion wie before_action ausführen wollte, die in Schienen verwendet wird [Anfänger lernt Python mit einem Nachschlagewerk]
Eine Geschichte, bei der ich das Teilungsergebnis (%) in HTML mit einer Anwendung mit Django anzeigen wollte [Anfänger lernt Python mit einem Nachschlagewerk in einer Hand]
Eine Geschichte, die ich nicht wusste, wie man Mixin lädt, wenn ich mit der Django-App eine Front mache [Anfänger lernt Python mit einem Nachschlagewerk]
Eine Geschichte, die nicht funktioniert hat, als ich versucht habe, mich mit dem Python-Anforderungsmodul anzumelden
order_by ('-created_at') ← Was ist "ー"? ?? ?? [Anfänger lernt Python mit einem Nachschlagewerk]
Eine Geschichte, der ich nach der SFTP-Kommunikation mit Python verfallen war
Ich möchte mit einem Roboter in Python arbeiten.
Eine Geschichte, die vorbereitet werden musste, wenn versucht wurde, ein Django-Tutorial mit einfachen Centos7 zu erstellen
Ich wollte eine DLL erstellen, um eine in C von Python in ctypes geschriebene Funktion zu verwenden, aber es fiel mir schwer
Eine Geschichte, die verschwunden ist, als ich einen Pfad angegeben habe, der mit tilda (~) in Python Open beginnt
Ich habe mit Tkinter of Python ein Puzzlespiel (wie) gemacht
Ich habe auch versucht, die Funktionsmonade und die Zustandsmonade mit dem Generator in Python nachzuahmen
Ich möchte einen Platzhalter verwenden, den ich mit Python entfernen möchte
[Road to Intermediate Python] Rufen Sie eine Klasseninstanz wie eine Funktion mit __call__ auf
[Python] Ein Memo, das ich versucht habe, mit Asyncio zu beginnen
Ich möchte den vollständigen Text mit elasticsearch + python durchsuchen
Ich habe eine Funktion zum Laden des Git-Erweiterungsskripts in Python geschrieben
Ich wollte das ABC164 A ~ D-Problem mit Python lösen
Ich möchte die Effizienz mit Python auch in einem experimentellen System verbessern. (3) Ich möchte mit Pandas so etwas wie Excel machen
Ich habe eine Webanwendung in Python erstellt, die Markdown in HTML konvertiert
Es ist neuer, aber ich wollte die BMI-Berechnung mit Python ausprobieren.
Ich habe versucht, einen Formatierer zu entwickeln, der Python-Protokolle in JSON ausgibt
Ich möchte Affenpatches nur teilweise sicher mit Python machen
Ich habe Python mit den minimal erforderlichen Kenntnissen verwendet, aber ich habe ein Nachschlagewerk gekauft und erneut studiert, um zusammenzufassen, was ich neu gelernt und was ich nützlich fand
Spiralbuch in Python! Python mit einem Spiralbuch! (Kapitel 14 ~)
Ich wollte ABC160 mit Python lösen
Ich wollte ABC159 mit Python lösen
Ich wollte ABC172 mit Python lösen
Ich wollte schnell einen Mailserver erstellen, der mit postfix + dovecot auf EC2 frei verwendet werden kann
Ich möchte eine API erstellen, die ein Modell mit einer rekursiven Beziehung im Django REST Framework zurückgibt
Eine Geschichte über das Konvertieren von HTML in PDF mit WeasyPrint + matplotlib und das Einbetten von Grafiken [Anfänger lernen Python mit einem Nachschlagewerk]
Ich habe versucht, eine Klasse zu erstellen, mit der Json in Python problemlos serialisiert werden kann
Eine verwirrende Geschichte mit zwei Möglichkeiten, XGBoost in Python + zu implementieren
Ich möchte eine Prioritätswarteschlange erstellen, die mit Python (2.7) aktualisiert werden kann.
Eine Geschichte, die in 4 Monaten nach dem Start von AtCoder mit Python hellblau wurde
Ich habe PyQCheck, eine Bibliothek, die QuickCheck mit Python ausführen kann, in PyPI registriert.
[Anfänger] Was passiert, wenn ich ein Programm schreibe, das in Python auf PHP läuft?
Einführung in das Buch "Erstellen einer profitablen KI mit Python", mit dem Sie in kürzester Zeit maschinelles Lernen erlernen können
Ich möchte Dunnetts Test in Python machen
Ein Memo, das ich schnell in Python geschrieben habe
Ich wollte den NOMURA Contest 2020 mit Python lösen
Ich wollte Python 3.4.3 mit Homebrew + pyenv installieren
Ich möchte mit Python in eine Datei schreiben
[Mac] Ich möchte einen einfachen HTTP-Server erstellen, auf dem CGI mit Python ausgeführt wird
Ein Anfänger versuchte, eine Strichzeichnung mit einem Kettenmesser zu färben. Ich konnte es schaffen.
Ich habe versucht, eine Funktion zu erstellen, um zu beurteilen, ob die wichtigsten Aktien der Welt Sommerzeit mit Python sind
Beim Schreiben in eine CSV-Datei mit Python habe ich einen kleinen Fehler gemacht und den Liefertermin nicht eingehalten
So konvertieren / wiederherstellen Sie einen String mit [] in Python
Ich möchte eine Variable in einen Python-String einbetten
Ich möchte Timeout einfach in Python implementieren
Ich habe einen Twitter BOT mit GAE (Python) gemacht (mit einer Referenz)
Ich möchte mit einem Knopf am Kolben übergehen
Ich möchte in Python schreiben! (2) Schreiben wir einen Test
Ich habe versucht, einen Pseudo-Pachislot in Python zu implementieren
Ich möchte eine Datei mit Python zufällig testen
Ich war süchtig danach, 2020 mit Selen (+ Python) zu kratzen