Erstellen einer tastypie-Ressource für ein "singleton" Nichtmodellobjekt

8

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 ...:

  1. Die Felder, die ich für diese URL zurückgebe, werden für dieses Resource benutzerdefiniert erstellt - es gibt kein Modell, das diese Informationen enthält.
  2. Ich möchte eine einzelne URL, die die Daten z. a GET Anfrage auf /api/v1/settings .
  3. Die zurückgegebenen Daten sollten in einem Format zurückgegeben werden, das einer Detail-URL ähnelt. d. h., sie sollte keine meta und objects parts enthalten. Es sollte nur die Felder aus den Einstellungen enthalten.
  4. Es sollte nicht möglich sein, 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).
  5. Optional: Es sollte gut mit 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?

    
Andy Thomas 05.01.2014, 11:51
quelle

2 Antworten

8

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%     
miraculixx 16.01.2014 17:47
quelle
1

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.

    
Craig Labenz 08.01.2014 19:55
quelle

Tags und Links