Anche se questo non è interamente nello spirito SO, adoro questa domanda, perché ho avuto lo stesso problema quando ho iniziato, quindi ti darò una guida rapida. Ovviamente non capisci i principi dietro di loro (non prenderlo come un'offesa, ma se lo facessi non te lo chiederesti).
Django è lato server . Significa, ad esempio, che un client passa a un URL, al suo interno ha una funzione views
che rende ciò che vede e restituisce una risposta in HTML. Dividiamolo in esempi:
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'),
Questo è un esempio del più semplice degli usi. Andare a 127.0.0.1:8000/hello
significa una richiesta alla hello()
funzione, andare a 127.0.0.1:8000/home
restituirà index.html
e sostituirà tutte le variabili come richiesto (probabilmente saprete già tutto questo).
Ora parliamo di AJAX . Le chiamate AJAX sono codice lato client che esegue richieste asincrone. Sembra complicato, ma significa semplicemente che ti fa una richiesta in background e quindi gestisce la risposta. Quindi, quando esegui una chiamata AJAX per alcuni URL, ottieni gli stessi dati che otterresti quando un utente si reca in quel luogo.
Ad esempio, una chiamata AJAX 127.0.0.1:8000/hello
restituirà la stessa cosa che se la visitassi. Solo che questa volta ce l'hai all'interno di una funzione JavaScript e puoi gestirla come preferisci. Diamo un'occhiata a un semplice caso d'uso:
$.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');
}
});
Il processo generale è questo:
- La chiamata va all'URL
127.0.0.1:8000/hello
come se avessi aperto una nuova scheda e l'hai fatto tu stesso.
- Se ha esito positivo (codice di stato 200), eseguire correttamente la funzione, che avviserà i dati ricevuti.
- In caso contrario, eseguire una funzione diversa.
Cosa sarebbe successo qui? Riceverai un avviso con "ciao mondo". Cosa succede se si effettua una chiamata AJAX a casa? Stessa cosa, riceverai un avviso indicante <h1>Hello world, welcome to my awesome site</h1>
.
In altre parole: non c'è nulla di nuovo nelle chiamate AJAX. Sono solo un modo per consentire all'utente di ottenere dati e informazioni senza uscire dalla pagina e consentono un design fluido e molto ordinato del tuo sito Web. Alcune linee guida che dovresti prendere in considerazione:
- Scopri jQuery . Non posso sottolineare abbastanza. Dovrai capirlo un po 'per sapere come gestire i dati che ricevi. Dovrai anche comprendere alcune sintassi JavaScript di base (non lontano da Python, ti ci abituerai). Consiglio vivamente i tutorial video di Envato per jQuery , sono fantastici e ti metteranno sulla buona strada.
- Quando usare JSON? . Vedrai molti esempi in cui i dati inviati dalle viste Django sono in JSON. Non sono entrato nei dettagli, perché non è importante come farlo (ci sono molte spiegazioni abbondanti) e molto più importante quando . E la risposta è: i dati JSON sono dati serializzati. Cioè, i dati che puoi manipolare. Come ho già detto, una chiamata AJAX recupererà la risposta come se l'utente l'avesse fatto da solo. Ora dì che non vuoi scherzare con tutto l'html e invece vuoi inviare dati (forse un elenco di oggetti). JSON è utile per questo, perché lo invia come oggetto (i dati JSON sembrano un dizionario Python), quindi puoi iterare su di esso o fare qualcos'altro che elimina la necessità di setacciare HTML inutili.
- Aggiungilo per ultimo . Quando crei un'app Web e desideri implementare AJAX, fatti un favore. Innanzitutto, crea l'intera app completamente priva di qualsiasi AJAX. Vedi che tutto funziona. Quindi, e solo allora, inizia a scrivere le chiamate AJAX. È un buon processo che ti aiuta anche a imparare molto.
- Utilizza gli strumenti per sviluppatori di Chrome . Poiché le chiamate AJAX vengono eseguite in background, a volte è molto difficile eseguirne il debug. Dovresti usare gli strumenti di sviluppo di Chrome (o strumenti simili come firebug) e
console.log
cose per eseguire il debug. Non spiegherò in dettaglio, basta google in giro e scoprirlo. Ti sarebbe molto utile.
- Consapevolezza CSRF . Infine, ricorda che le richieste di post in Django richiedono il
csrf_token
. Con le chiamate AJAX, molte volte ti piacerebbe inviare dati senza aggiornare la pagina. Probabilmente dovrai affrontare alcuni problemi prima di ricordartelo finalmente: aspetta, hai dimenticato di inviare il csrf_token
. Questo è un noto blocco per principianti nell'integrazione AJAX-Django, ma dopo aver imparato a farlo funzionare bene, è facile come una torta.
Questo è tutto ciò che mi viene in mente. È un argomento vasto, ma sì, probabilmente non ci sono abbastanza esempi là fuori. Lavora lì, lentamente, alla fine ce la farai.