Ich verwende tastypie und ich möchte ein Resource
für ein "Singleton" Nicht-Modell-Objekt erstellen.
Für die Zwecke dieser Frage nehmen wir an, dass ich möchte, dass die URL einige Systemeinstellungen repräsentiert, die in einer ini
-Datei vorhanden sind.
Was das bedeutet ist, dass ...:
Resource
benutzerdefiniert erstellt - es gibt kein Modell, das diese Informationen enthält. GET
Anfrage auf /api/v1/settings
. meta
und objects
parts enthalten. Es sollte nur die Felder aus den Einstellungen enthalten. GET
eine Liste von solchen Objekten zu erstellen, noch ist es möglich, POST
, DELETE
oder PUT
(diesen Teil kann ich tun, aber ich füge das hier hinzu für die Vollständigkeit). tastypie-swagger
für API-Explorationszwecke funktionieren. Ich habe das zur Arbeit gebracht, aber ich denke, meine Methode ist irgendwie Arsch-rückwärts, also möchte ich wissen, was hier die allgemeine Weisheit ist. Was ich bisher versucht habe ist, dehydrate
zu überschreiben und die ganze Arbeit dort zu erledigen. Dies erfordert, dass ich obj_get
überschreibe, aber es leer lasse (was ziemlich hässlich ist) und auch die Notwendigkeit von id
in der Detail-URL durch Überschreiben von override_urls
entfernen.
Gibt es einen besseren Weg, dies zu tun?
Sie sollten dies mit folgendem erreichen können. Hinweis: Ich habe dies noch nicht getestet, daher sind möglicherweise einige Optimierungen erforderlich. Ein reichhaltigeres Beispiel finden Sie in der Tastypie Docs
%Vor%Das SettingObject muss die Methoden getattr und setattr unterstützen. Sie können dies als Vorlage verwenden:
%Vor% Das klingt nach etwas völlig außerhalb von TastyPies Steuerhaus. Warum nicht eine einzige Ansicht irgendwo mit @require_GET
dekoriert, wenn Sie Header steuern wollen, und ein HttpResponse
-Objekt mit der gewünschten Nutzlast als application/json
zurückgeben?
Die Tatsache, dass Ihr Objekt ein Singleton ist und alle anderen REST-konformen Interaktionen damit verboten sind, legt nahe, dass eine REST-Bibliothek das falsche Werkzeug für diesen Job ist.