Même si ce n'est pas entièrement dans l'esprit SO, j'adore cette question, car j'ai eu le même problème quand j'ai commencé, alors je vais vous donner un petit guide. De toute évidence, vous ne comprenez pas les principes qui les sous-tendent (ne le prenez pas comme une offense, mais si vous le faisiez, vous ne le demanderiez pas).
Django est côté serveur . Cela signifie, disons qu'un client accède à une URL, que vous avez une fonction à l'intérieur views
qui rend ce qu'il voit et renvoie une réponse en HTML. Décomposons-le en exemples:
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'),
C'est un exemple des utilisations les plus simples. Aller à 127.0.0.1:8000/hello
signifie une requête à la hello()
fonction, va 127.0.0.1:8000/home
retourner index.html
et remplacer toutes les variables comme demandé (vous savez probablement tout cela maintenant).
Parlons maintenant d' AJAX . Les appels AJAX sont du code côté client qui effectue des requêtes asynchrones. Cela semble compliqué, mais cela signifie simplement qu'il fait une demande pour vous en arrière-plan, puis gère la réponse. Ainsi, lorsque vous effectuez un appel AJAX pour une URL, vous obtenez les mêmes données que celles que vous obtiendriez en tant qu'utilisateur se rendant à cet endroit.
Par exemple, un appel AJAX à 127.0.0.1:8000/hello
retournera la même chose que si vous le visitiez. Seulement cette fois, vous l'avez dans une fonction JavaScript et vous pouvez le gérer comme vous le souhaitez. Regardons un cas d'utilisation simple:
$.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');
}
});
Le processus général est le suivant:
- L'appel est dirigé vers l'URL
127.0.0.1:8000/hello
comme si vous aviez ouvert un nouvel onglet et l'aviez fait vous-même.
- S'il réussit (code d'état 200), effectuez la fonction de réussite, qui alertera les données reçues.
- En cas d'échec, effectuez une fonction différente.
Maintenant, que se passerait-il ici? Vous obtiendrez une alerte avec «bonjour le monde». Que se passe-t-il si vous passez un appel AJAX à domicile? Même chose, vous recevrez une alerte indiquant <h1>Hello world, welcome to my awesome site</h1>
.
En d'autres termes, les appels AJAX n'ont rien de nouveau. Ils ne sont qu'un moyen pour vous de permettre à l'utilisateur d'obtenir des données et des informations sans quitter la page, et cela permet une conception fluide et très soignée de votre site Web. Quelques lignes directrices dont vous devriez prendre note:
- Apprenez jQuery . Je ne peux insister assez sur ce point. Il va falloir que vous le compreniez un peu pour savoir comment gérer les données que vous recevez. Vous aurez également besoin de comprendre une syntaxe JavaScript de base (non loin de python, vous vous y habituerez). Je recommande fortement les didacticiels vidéo d'Envato pour jQuery , ils sont excellents et vous mettront sur la bonne voie.
- Quand utiliser JSON? . Vous allez voir de nombreux exemples où les données envoyées par les vues Django sont en JSON. Je ne suis pas entré dans les détails à ce sujet, car il n'est pas important de savoir comment le faire (il y a beaucoup d'explications) et beaucoup plus important quand . Et la réponse est: les données JSON sont des données sérialisées. Autrement dit, les données que vous pouvez manipuler. Comme je l'ai mentionné, un appel AJAX récupère la réponse comme si l'utilisateur l'avait fait lui-même. Supposons maintenant que vous ne vouliez pas jouer avec tout le code HTML et que vous souhaitiez envoyer des données (une liste d'objets peut-être). JSON est bon pour cela, car il l'envoie en tant qu'objet (les données JSON ressemblent à un dictionnaire python), puis vous pouvez itérer dessus ou faire autre chose qui supprime la nécessité de passer au crible le html inutile.
- Ajoutez-le en dernier . Lorsque vous créez une application Web et que vous souhaitez implémenter AJAX, faites-vous plaisir. Tout d'abord, créez l'application entière complètement dépourvue de tout AJAX. Assurez-vous que tout fonctionne. Ensuite, et alors seulement, commencez à écrire les appels AJAX. C'est un bon processus qui vous aide également à apprendre beaucoup.
- Utilisez les outils de développement de Chrome . Étant donné que les appels AJAX sont effectués en arrière-plan, il est parfois très difficile de les déboguer. Vous devez utiliser les outils de développement Chrome (ou des outils similaires tels que Firebug) et des
console.log
choses à déboguer. Je ne vais pas expliquer en détail, juste google autour et découvrir à ce sujet. Ce serait très utile pour vous.
- Sensibilisation à la CSRF . Enfin, n'oubliez pas que les demandes de publication dans Django nécessitent le
csrf_token
. Avec les appels AJAX, vous souhaitez souvent envoyer des données sans rafraîchir la page. Vous rencontrerez probablement des problèmes avant de vous en souvenir - attendez, vous avez oublié d'envoyer le csrf_token
. Il s'agit d'un barrage routier débutant connu dans l'intégration AJAX-Django, mais après avoir appris à le rendre agréable à jouer, c'est aussi simple que ça.
C'est tout ce qui me vient à l'esprit. C'est un vaste sujet, mais oui, il n'y a probablement pas assez d'exemples. Il vous suffit de vous y rendre, lentement, vous finirez par l'obtenir.