"Beste" Möglichkeit, Django mit einer Ajax-Bibliothek zu integrieren

8

Offensichtlich Pferde für Kurse, aber was sind einige gute Möglichkeiten, JavaScript-Bibliotheken mit der eigenen Django-Anwendung zu integrieren?

Ich plane die Verwendung von jQuery, hauptsächlich, weil es populär scheint und mächtig aussieht (aber ich bin offen für andere Vorschläge).

Gibt es python-seitige Bibliotheken, die sehr hilfreich oder wesentlich sind? Oder ist es am einfachsten, JSON-Ansichten zu erstellen und das JavaScript manuell zu codieren (unter Verwendung eines geeigneten Javascript-Frameworks)?

Ich habe (kurz) Dajax angeschaut, aber aufgrund der dürftigen Dokumentation ist nicht klar, dass es mir wirklich sehr viel gibt. Ich würde sicherlich etwas mit etwas mehr Dokumentation bevorzugen.

Andere Antworten deuten darauf hin, dass pjax bei vielen Browsern nicht unbedingt gut funktioniert, also ist das nicht möglich.

Bearbeiten: Danke an alle. Ich schaue mir tastypie an, um einige JSON-Ansichten zu enthüllen, und jemanden, der ein bisschen Javascript von Hand schreibt (was etwas früher in diesem Jahr gemacht wurde, scheint viel besser zu sein als in den späten 90ern).

    
Marcin 10.06.2011, 14:45
quelle

5 Antworten

2

Auf Python-Seite würde ich vorschlagen, piston und tastypie ."

(Beginnend mit AJAX + Django selbst, fand ich auch Dajax, aber ging mit piston -felt mehr 'unix-way' für mich, mag diese All-in-One-Lösungen nicht. Obwohl Kolben nicht war seit langer Zeit aktualisiert, also würde ich tastypie empfehlen, das aktiv gepflegt wird.)

BEARBEITEN. Es gibt auch ein ähnliches Projekt, django-rest-framework . Habe es noch nie selbst benutzt, es ist ziemlich neu.

Grundsätzlich helfen Ihnen diese Bibliotheken, eine voll funktionsfähige Lese-Schreib-API für Ihre Modelle zu erstellen, so dass Sie von Ihrem JavaScript über HTTP HTTP-Dateien erstellen, lesen, aktualisieren und löschen können. Sie müssen keine Ansichten oder Serializer definieren. Stattdessen definieren Sie resources , was eine vernünftige Abstraktion ist, denke ich.

Und es dauert normalerweise nur ein paar Zeilen Code, besonders wenn Ihre Ressourcen an Modelle gebunden sind.

Wenn Sie jedoch etwas Komplizierteres brauchen, können Sie Ihr Design überdenken schreiben Sie Ihre Ansichten. Mit klassenbasierten Ansichten ist es auch ziemlich einfach. Sehen Sie sich beispielsweise dieses Snippet an.

    
Tony 10.06.2011, 15:48
quelle
8

Denken Sie daran, nur weil es Ajax ist, bedeutet das nicht, dass Sie einen Json-Dump zurückgeben müssen. Sie können tatsächlich eine gerenderte Vorlage zurückgeben.

Es stimmt, dass der "richtige Weg" darin besteht, all Ihre Tags in Javascript zu konstruieren und diese Daten mit den json-Daten zu füllen, aber seien wir ehrlich, das ist so ein Schmerz im Hinterteil ... so sehr, dass Sie entwickeln eine jquery Template-Sprache.

Sie können nicht nur einen Abfragesatz ausgeben. Sie müssen Ihre JSON-Daten manuell erstellen. All diese Tutorials und Vorschläge scheinen diese Tatsache zu beschönigen. Aus den Django-Dokumenten:

%Vor%

Was ich gemacht habe, ist eigentlich ein Mixin für die neuen klassenbasierten Ansichten zu schreiben, das eine Auswahl von Vorlagen abhängig davon macht, ob es eine Ajax-Seitenladung ist oder nicht. Ich legte dann das Fragment von dem, was ich in einem Fragment zurückgeben möchte, und in einem anderen Wrapper-Template, base.html erweitern und die Fragment-Vorlage einfügen.

%Vor%

Dies ermöglicht mir, die Vorlage nur einmal zu schreiben, ohne dom-Elemente in JavaScript manuell erstellen zu müssen. Es ist sehr wenig zusätzliche Arbeit, und vor allem, wenn Sie nicht eine API schreiben, ist es der Weg zu gehen.

    
Hutch 10.06.2011 15:29
quelle
5

Ich würde vorschlagen, dass Sie einfach Ihre eigenen Javascript- und AJAX-Ansichten erstellen. Ruby on Rails hatte lange das gegenteilige Problem: Leute zu zwingen, AJAX auf eine bestimmte Art zu tun, und es war immer ein Konfliktpunkt für Leute. Vor kurzem haben sie endlich ihre Torheit erkannt und AJAX vom Framework entkoppelt, so dass Sie einfach die Bibliothek benutzen können, die Sie mögen.

Dies ist eine Funktion von Django. Es mag schwieriger erscheinen, aber vertraue mir, es ist unendlich viel besser, die Kontrolle Ende-zu-Ende zu haben.

    
Chris Pratt 10.06.2011 14:56
quelle
2

Ich habe immer nur meine eigenen Ansichten erstellt, die JSON unterstützen, und selbst JavaScript geschrieben (normalerweise mit jQuery). Offensichtlich hängt das alles davon ab, was Sie zu tun versuchen - wenn es ein bestimmtes Bedürfnis gibt, das Sie haben, das eine vorhandene Anwendung löst, dann verwenden Sie es auf jeden Fall.

Das Bereitstellen von JSON ist ziemlich trivial (einfach JSON ausgeben und als HttpResponse zurückgeben), so:

%Vor%

Code oben soll demonstrativ sein, ich schlage nicht vor, dass Sie eine Ansicht machen, die alle Ihre Benutzerkennungen zeigt.

    
Dominic Rodger 10.06.2011 14:54
quelle
1

Dajax ist ziemlich geradlinig. Sie sollten uns mehr darüber erzählen, was Sie in Dajax verwirrt.

    
Georgie Porgie 10.06.2011 16:25
quelle

Tags und Links