Bitte ertragen Sie mich, da ich gerade erst mit Pyramid angefangen habe. Ich habe Probleme beim Verständnis von Kontext und Ressourcen in Pyramid, was URL Dispatch betrifft. Ich bin nicht ganz sicher, was es aus der Beschreibung in der Dokumentation, Kontext und Ressource bedeutet, ist etwas zirkulär (für mich).
/organization/add_users
ist, ist die Ressourcenorganisation oder Benutzer? Auch
Was soll das Kontextobjekt enthalten? Das Beispiel im Lernprogramm hat nur die ACL und hat in der init-Methode nichts.
%Vor%Wenn eine Ausnahme ausgelöst wird (zum Beispiel verboten), an welcher Stelle ändert sich der Kontext genau?
Ich kann den Zweck des sich ändernden Kontextes sehen, wenn es etwas wie einen verbotenen Fehler gibt, aber wenn ich etwas wie Validierung mache, warum sollte ich eine Ausnahme werfen, die mit einem anderen view_callable registriert ist, das zu einem anderen rendert Vorlage, wenn ich einfach auf eine andere Vorlage innerhalb der gleichen view_callable rendern kann, anstatt die Ausnahme zu werfen? (Ich habe ein Beispiel für einen Validierungsfehler für add_view in den Dokumenten gesehen)
Zunächst einmal ist der Hauptgrund, dass Sie sich bei der Verwendung von URL Dispatch auch nur um diese Dinge kümmern sollten, die Verwendung des Auth-Systems der Pyramide. Wenn Sie sich nicht darum kümmern, können Sie Kontexte und Ressourcenbäume vollständig ignorieren und mit dem Versand fortfahren.
Pyramid hat ein einzigartiges Konzept eines Ressourcenbaums, der buchstäblich ein Baum von Objekten ist, der einem Pfad zugeordnet ist. Dieser Baum wird von der Wurzel bis zum Ende eines gelieferten Pfades durchlaufen. Während der Traversierung, wenn der Pfad erschöpft ist oder der Baum auf einen Verlassenknoten trifft, ist dieses Objekt in der Struktur jetzt context
.
In URL Dispatch tritt traversal (standardmäßig) nicht auf, daher ist der Kontext immer der Stamm des Ressourcenbaums.
Im Allgemeinen können Sie den Kontext für alles verwenden, was Sie in Ihrer Anwendung möchten. Es wird explizit von der ACLAuthorizationPolicy zum Ermitteln von Berechtigungen verwendet. Dies ist ein ganzes Thema und ich würde vorschlagen, dass ich meine Demo anschaue, in der erklärt wird, wie man Pyrids Authentifizierungssystem mit URL Dispatch [ 1 verwendet ].
Die Ausnahmebehandlung in Pyramid erfolgt auf zwei verschiedene Arten:
try: except:
in Ihrer Ansicht verwenden, um eine andere Antwort zurückzugeben. Beachten Sie, dass der zweite Weg für das Rendern von 404 Seiten benötigt wird und wenn Sie die verbotenen Seiten von Pyramid verwenden. Dies liegt daran, dass Pyramid intern die NotFound- und Forbidden-Ausnahmen auslöst, die Sie abfangen und rendern müssen, wenn Sie sie anpassen möchten.
Wenn eine Ausnahme ausgelöst wird und eine Ausnahmesicht registriert wird, die mit diesem Typ übereinstimmt, ruft Pyramid die Ausnahmesicht auf und übergibt die Ausnahme als neuen Kontext, so dass sich der Kontext ändert.
Ich bin nicht sicher, ob die Validierung ein gutes Beispiel für eine Ausnahmesicht ist. In der Regel werden die Ansichten für Fehlerfälle oder für die Ausführung von Kurzschlüssen in nicht sichtbaren Teilen der Anwendung verwendet. Beispielsweise möchten Sie möglicherweise verschiedene Seiten verarbeiten und zurückgeben, wenn Ihre Ansicht keine Verbindung zu Ihrer Datenbank herstellt oder wenn Sie eine 4xx- oder 5xx-Antwort zurückgeben möchten. Wenn die Ausnahme nicht behandelt wird, wird der WSGI-Server standardmäßig in eine generische 500-Seite umgewandelt. Mit Ausnahmeansichten können Sie dieses Verhalten anpassen.
Der wichtige Vorteil von all dem ist, dass alles optional ist. Wenn Sie verwirrt sind, machen Sie sich keine Sorgen, denn Sie können Pyramid ohne diese Dinge nutzen, und wenn Sie es gemütlicher haben, können Sie damit beginnen, sie in Ihre Anwendung zu integrieren.
Tags und Links python resources url-routing pyramid