Auch wenn dies nicht ganz im Sinne von SO ist, ich liebe diese Frage, weil ich die gleichen Probleme hatte, als ich anfing, also werde ich Ihnen eine Kurzanleitung geben. Offensichtlich verstehen Sie die Prinzipien dahinter nicht (nehmen Sie es nicht als Beleidigung, aber wenn Sie es tun würden, würden Sie nicht fragen).
Django ist serverseitig . Angenommen, ein Client geht zu einer URL, Sie haben eine Funktion views
, die das, was er sieht, rendert und eine Antwort in HTML zurückgibt. Lassen Sie es uns in Beispiele aufteilen:
views.py:
def hello(request):
return HttpResponse('Hello World!')
def home(request):
return render_to_response('index.html', {'variable': 'world'})
index.html:
<h1>Hello {{ variable }}, welcome to my awesome site</h1>
urls.py:
url(r'^hello/', 'myapp.views.hello'),
url(r'^home/', 'myapp.views.home'),
Das ist ein Beispiel für die einfachste Verwendung. Going to 127.0.0.1:8000/hello
Mittel zur Anfrage - hello()
Funktion, zu gehen 127.0.0.1:8000/home
die zurückkehrenindex.html
die Variablen zurückgegeben und alle Variablen wie gewünscht ersetzt (wahrscheinlich wissen Sie das alles inzwischen).
Lassen Sie uns jetzt über AJAX sprechen . AJAX-Aufrufe sind clientseitiger Code, der asynchrone Anforderungen ausführt. Das klingt kompliziert, bedeutet aber einfach, dass es im Hintergrund eine Anfrage für Sie ausführt und dann die Antwort bearbeitet. Wenn Sie also einen AJAX-Aufruf für eine URL ausführen, erhalten Sie dieselben Daten, die Sie als Benutzer erhalten würden, wenn Sie an diesen Ort gehen.
Zum Beispiel ein AJAX-Aufruf an 127.0.0.1:8000/hello
das gleiche Ergebnis zurück, als ob Sie es besucht hätten. Nur dieses Mal haben Sie es in einer JavaScript-Funktion und können damit umgehen, wie Sie möchten. Schauen wir uns einen einfachen Anwendungsfall an:
$.ajax({
url: '127.0.0.1:8000/hello',
type: 'get', // This is the default though, you don't actually need to always mention it
success: function(data) {
alert(data);
},
failure: function(data) {
alert('Got an error dude');
}
});
Der allgemeine Prozess ist folgender:
- Der Anruf geht an die URL
127.0.0.1:8000/hello
als hätten Sie einen neuen Tab geöffnet und selbst gemacht.
- Wenn dies erfolgreich ist (Statuscode 200), führen Sie die Funktion für den Erfolg aus, die die empfangenen Daten alarmiert.
- Wenn dies fehlschlägt, führen Sie eine andere Funktion aus.
Was würde hier nun passieren? Sie würden eine Warnung mit "Hallo Welt" darin erhalten. Was passiert, wenn Sie einen AJAX-Anruf nach Hause tätigen? Gleiches gilt für Sie<h1>Hello world, welcome to my awesome site</h1>
.
Mit anderen Worten - AJAX-Anrufe sind nichts Neues. Sie sind nur eine Möglichkeit für Sie, dem Benutzer das Abrufen von Daten und Informationen zu ermöglichen, ohne die Seite zu verlassen, und sorgen für ein reibungsloses und sehr übersichtliches Design Ihrer Website. Einige Richtlinien, die Sie beachten sollten:
- Lernen Sie jQuery . Ich kann das nicht genug betonen. Sie müssen es ein wenig verstehen, um zu wissen, wie Sie mit den empfangenen Daten umgehen sollen. Sie müssen auch einige grundlegende JavaScript-Syntax verstehen (nicht weit von Python, Sie werden sich daran gewöhnen). Ich empfehle Envatos Video-Tutorials für jQuery nachdrücklich. Sie sind großartig und bringen Sie auf den richtigen Weg.
- Wann soll JSON verwendet werden? . Sie werden viele Beispiele sehen, in denen sich die von den Django-Ansichten gesendeten Daten in JSON befinden. Ich habe darauf nicht näher eingegangen, weil es nicht wichtig ist, wie es geht (es gibt viele Erklärungen) und viel wichtiger, wann . Und die Antwort darauf lautet: JSON-Daten sind serialisierte Daten. Das heißt, Daten, die Sie bearbeiten können. Wie bereits erwähnt, ruft ein AJAX-Aufruf die Antwort ab, als ob der Benutzer dies selbst getan hätte. Angenommen, Sie möchten sich nicht mit dem gesamten HTML-Code herumschlagen und stattdessen Daten senden (möglicherweise eine Liste von Objekten). JSON ist dafür gut geeignet, da es als Objekt gesendet wird (JSON-Daten sehen aus wie ein Python-Wörterbuch). Anschließend können Sie darüber iterieren oder etwas anderes tun, das das Durchsuchen von nutzlosem HTML überflüssig macht.
- Fügen Sie es zuletzt hinzu . Wenn Sie eine Web-App erstellen und AJAX implementieren möchten, tun Sie sich selbst einen Gefallen. Erstellen Sie zunächst die gesamte App ohne AJAX. Sehen Sie, dass alles funktioniert. Beginnen Sie dann und erst dann mit dem Schreiben der AJAX-Aufrufe. Das ist ein guter Prozess, mit dem Sie auch viel lernen können.
- Verwenden Sie die Entwicklertools von Chrome . Da AJAX-Aufrufe im Hintergrund ausgeführt werden, ist es manchmal sehr schwierig, sie zu debuggen. Sie sollten die Chrome-Entwicklertools (oder ähnliche Tools wie Firebug) und
console.log
Dinge zum Debuggen verwenden. Ich werde es nicht im Detail erklären, sondern nur googeln und es herausfinden. Es wäre sehr hilfreich für Sie.
- CSRF-Bewusstsein . Denken Sie zum Schluss daran, dass für Post-Anfragen in Django das erforderlich ist
csrf_token
. Bei AJAX-Aufrufen möchten Sie häufig Daten senden, ohne die Seite zu aktualisieren. Sie werden wahrscheinlich Probleme haben, bevor Sie sich endlich daran erinnern - warten Sie, Sie haben vergessen, das zu senden csrf_token
. Dies ist eine bekannte Straßensperre für Anfänger in der AJAX-Django-Integration, aber nachdem Sie gelernt haben, wie man es schön spielt, ist es ganz einfach.
Das ist alles, was mir in den Sinn kommt. Es ist ein großes Thema, aber es gibt wahrscheinlich nicht genug Beispiele. Arbeiten Sie sich einfach langsam dorthin vor, Sie werden es irgendwann bekommen.