/ / Was passiert in einer einfachen Django Rest Framework-Anwendung mit einem Angular-Frontend? - Django, Angularjs, Django-Rest-Framework, Angularjs-Routing, Page-Lifecycle

Was passiert in einer einfachen Django Rest Framework-Anwendung mit einem eckigen Frontend? - django, angularjs, django-rest-framework, angularjs-routing, Seitenlebenszyklus

Ich lerne seit einiger Zeit Django und fand dieses Bild hilfreich:

Django Request-Response-Zyklus

Ich beschäftige mich jetzt mit Angular JS und versuche herauszufinden, wie die einzelnen Komponenten (Direktiven, Controller und Services?) Interagieren und ob es einen ähnlichen "Zyklus" gibt. Diese Blog sieht so aus, als wäre es fast soweit, meine Frage zu beantworten.

Aber wie ist das Bild anders, wenn wir einen Django-Rest-Framework-Endpunkt haben, der die Bücher im obigen Beispiel bereitstellt?

Wollen wir eine URL-Auflösung von Django oder Angular? Oder mehr Verantwortung, die Präzedenzfall hat?

Was ist die allgemeine Reihenfolge, in der Dinge passieren, wenn wir sagen gehen localhost:8000/books ?

  • Tut urls.py Fang das?

    urls(r"^books",angular_redirect)
    

    Wenn ja, was muss diese Funktion (angular_redirect) rendern, um eckig zu werden und zu antworten?

  • Fängt Angular Routing dies auf?

     $routeProvider.when("/books", {templateUrl: "partials/book_partial.html", controller: "MyBookCtrl"});
    

    Heißt das, mein Controller registriert dann einen Dienst, der angeschlossen ist, um zu sagen localhost:8000:/book_list.json und muss das in der registriert sein? urls.py?

Woher weiß Angular, wo er den DRF-JSON bekommt, wenn wir uns beim Routing vollständig auf Angular verlassen Dies Paket, mit dem Sie die Django-Modelle in der eckigen JS verwenden können, aber ich bin nicht sicher, ob das Bild dadurch mehr oder weniger kompliziert wird.

Entschuldigung, wenn dies zu weit gefasst ist, bin ich sehr neuund zu versuchen, mich mit einigen allgemeinen Konzepten dieser Technologien vertraut zu machen. Jeder Rat, diese Frage so einzugrenzen, dass sie beantwortet werden kann, wäre willkommen.

Antworten:

1 für die Antwort № 1

Ihre Frage hat eine einfache Antwort: Angular behandelt das Front-End und Django (und DRF) das Back-End, einschließlich URLs. Benutzer einer vollständig Angular-basierten Site sollten niemals direkt eine von Django bereitgestellte URL aufrufen, mit Ausnahme der ersten Seite, die die Seitenstruktur und JS selbst bereitstellt.

Abgesehen davon ist die einzige Interaktion zwischen derzwei ist, wenn Angular über einen Ajax-Aufruf speziell JSON von Django anfordert. Dies kann durchaus in Bezug auf ein Navigationsereignis durch den Benutzer stehen, kann jedoch ebenso zeitgesteuert oder über eine Art Websocket-Funktionalität ausgelöst werden.