Der richtige Weg ist es, die verschiedenen Funktionen zu verwenden, mit denen wir die Routen entweder von einer Ansicht zu einer URL oder von einer URL zu einer Ansicht lösen können. Dafür haben wir einige Tools, die als Dekoratoren bezeichnet werden .
Auflösen von URL zu Ansichten
Die Aufrufe werden nach empfohlenen Vorgehensweisen nicht direkt von unserem Code aufgerufen , sondern über Aufrufe in der URL aufgerufen. Diese Aufrufe werden vom Django Dispatcher-System verarbeitet und bereitgestellt.
Einer der Schlüsselaspekte in diesem Punkt ist, dass Django reguläre Ausdrücke verwendet , um die URL zu erstellen, die unsere Ansicht aufruft. Dank dieser Funktion können wir verschiedene Parameter übergeben und dadurch unseren Ansichten Funktionen hinzufügen.
Ein URL-Muster enthält die folgenden Aspekte:
- Der reguläre Ausdruck, mit dem wir die URL erfassen können, die wir als Muster platziert haben.
- Ein Verweis auf die Ansicht, die aufgerufen wird.
- Ein Wörterbuch mit Argumenten, das bei jedem Aufruf der Ansicht übergeben wird.
- Ein Name, der als Referenz verwendet wird, um Reverse-Sight-Aufrufe durchführen zu können.
Auflösen von URL-Ansichten
In unseren Anwendungen müssen wir oft andere Ansichten oder Ressourcen über URLs aufrufen. Eine Hardcopy oder ein Hardcode dieser URLs ist jedoch keine gute Vorgehensweise, da wir uns zum Beispiel vorstellen müssen, dass sich etwas in unserem Programm ändert Ändern Sie 20 oder 30 Verweise auf eine URL. Dazu können wir unsere Anwendung auf verschiedene Arten nach der URL suchen lassen, ohne sie kopieren zu müssen. Eine dieser Methoden ist die Verwendung des Permalink-Dekorators , den wir im nächsten Punkt sehen können.
Der Dekorateur Permalink
Innerhalb jedes Modells haben wir Zugriff auf die Methode get_absolute_url () , mit der wir direkt auf eine Detailseite eines Objekts zugreifen können, ohne dass wir wissen müssen, wie die URL erstellt werden soll. Mit dieser Methode können wir jedoch keine Argumente übergeben, da es sich nur um eine handelt Link zurückgegeben.
Um die Funktionalität zu erweitern, haben wir die Möglichkeit, Parameter so zu verwenden und zurückzugeben, als wären sie von der Methode get_absolute_url ().
Dazu müssen Sie folgende Struktur einhalten:
- Der erste Wert ist der Name der aufzurufenden Ansicht. Wenn die Ansicht einen Namen hat, sollte dieser verwendet werden. Andernfalls können wir den Importpfad der Ansicht verwenden. Dieser Wert ist immer erforderlich.
- Der zweite Wert ist ein Tupel von Positionsargumenten, die auf die Ansicht angewendet werden sollen. Wenn Sie nicht besitzen, können Sie diesen Parameter leer lassen.
- Der dritte Wert ist ein Wörterbuch, das Argumente mit ihren jeweiligen Werten verbindet. Diese Werte müssen an die Ansicht übergeben werden, falls die Ansicht nichts erhält, können wir diesen Wert vom Aufruf ausschließen.
Nachfolgend sehen wir, wie wir dies in Django in einen Code übersetzen. Dazu werden wir den Decorator in einem Modell verwenden:
Wie wir im Code des Bildes sehen, rufen wir library_article view auf, der zweite Wert ist leer, da er nicht erforderlich ist, und im dritten Wert geben wir an, dass die object_id an die self.id gebunden sein muss, dh die ID der eigenen Modell, dann verwenden wir in der letzten Zeile den Dekorateur .