2017-06-23 3 views
0

Ich bin ziemlich neu in Django und habe einige Anforderungen, die die Erstellung einer Django-Anwendung als Frontend für einen API-Server beinhalten.Django-Modelle mit API anstelle der Datenbank

Diese App sollte kaum jemals Daten in einer lokalen Datenbank speichern müssen. Stattdessen sollten wir auf eine REST-API zugreifen, um Daten abzurufen und zu veröffentlichen.

Da ich mit dem Framework weniger vertraut bin, wo sollte ich die Logik zum Abrufen und Bearbeiten von Daten auf der Remote-API platzieren? Mein erster Gedanke war, dies in die models.py-Datei zu stellen, aber die Modelle scheinen speziell für den Datenbankzugriff in Django entwickelt worden zu sein.

Also dann habe ich Anfrage Aufrufe in meine Form Klassen Get/Post-Funktionen. Dies scheint jedoch, als würde ich die Datenlogik mit den Ansichten vermischen. Außerdem bemerkte ich, dass das erneute Laden von Seiten nach dem Senden eines Formulars dazu führen würde, dass das Formular die ursprüngliche GET-Anforderung für das Formular enthielt, bis ich den Server neu startete.

Es scheint, dass ich diese Logik woanders platzieren sollte, aber ich möchte, dass jemand erklärt, was "Standard" in diesem Zusammenhang ist.

Ich bin mir sicher, dass ich nicht die erste Person bin, die darauf stößt und möchte etwas darüber wissen, wie andere Projekte in Django damit umgehen. Danke für deine Beratung.

Antwort

0

Ich bin nicht sicher, ob Django das richtige Framework für die reine Handhabung von Ajax GETs und POSTs und dergleichen ist.

Wenn ich Sie richtig verstanden habe, verwenden Sie im Grunde nur das Frontend von Django. Eine der Stärken von Django ist das ORM mit Datenbanken im Hintergrund.

Wäre eine Javascript-Frontend-only-App nicht besser, schneller und sogar schlanker? Wie ein Vue.js basierend ein

+0

Vielen Dank für den Vorschlag, aber Javascript-only funktioniert nicht wegen der Herkunft Grenzen zu überqueren. Auch Django wird verwendet, um ein paar Apps auf dem Projekt wie ein Admin-System und einige andere Anforderungen zu erstellen. Aber dieser spezielle Teil in unserem Teil besteht nur darin, einige API-Aufrufe an einen anderen Server zu senden, um ihn zu manipulieren. Auch wenn es vielleicht ein Verdienst wäre, ein anderes Framwork oder eine andere Sprache zu verwenden, bin ich in diesem Fall mehr als wahrscheinlich mit Django "festgefahren". Die Kontinuität des Projekts ist wahrscheinlich langfristig wichtiger als die Auswahl des besten Tools für eine Aufgabe. – Terry

1

Ich arbeite an einem ähnlichen Problem, wenn ich versuche, die Django ORM um eine API zu wickeln, und ich bin überrascht, dass niemand sonst so etwas zuvor getan hat. (Oder zumindest haben sie keinen öffentlichen Kern oder Blogpost darüber gemacht.)

Ich denke, Ihre Intuition ist richtig, dass die Logik wahrscheinlich nicht in der Ansicht oder Formen gehen sollte. Im Idealfall wäre es eine niedrigere Ebene (Model, Manager, Queryset oder niedriger), so dass Sie alle Vorteile des Rests von Django erhalten.

Ich denke, der beste Weg, dies zu tun wäre, ein benutzerdefiniertes Datenbank-Backend zu erstellen, das die Funktionalität einer Datenbank simuliert und dabei direkt mit der API interagiert.

Hier ist ein High-Level-Überblick darüber, was das mit sich bringt: http://reinout.vanrees.org/weblog/2016/11/04/database-backends.html

Auch wenn man sich den Sourcecode Django suchen, werden Sie wahrscheinlich django/db/backends/dummy/als Ausgangspunkt dafür, wie nutzen könnten Der Code sollte strukturiert sein.

Verwandte Themen