Aunque esto no está enteramente en el espíritu SO, me encanta esta pregunta, porque tuve el mismo problema cuando comencé, así que te daré una guía rápida. Obviamente no entiendes los principios detrás de ellos (no lo tomes como una ofensa, pero si lo hicieras no lo estarías preguntando).
Django es del lado del servidor . Significa que, digamos que un cliente va a una URL, tiene una función dentro views
que representa lo que ve y devuelve una respuesta en HTML. Vamos a dividirlo en ejemplos:
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'),
Ese es un ejemplo del uso más simple. Ir a 127.0.0.1:8000/hello
significa una solicitud a la hello()
función, ir a 127.0.0.1:8000/home
devolverá index.html
y reemplazará todas las variables según lo solicitado (probablemente ya sepa todo esto).
Ahora hablemos de AJAX . Las llamadas AJAX son código del lado del cliente que realiza solicitudes asincrónicas. Eso suena complicado, pero simplemente significa que hace una solicitud en segundo plano y luego maneja la respuesta. Entonces, cuando haces una llamada AJAX para alguna URL, obtienes los mismos datos que obtendrías como usuario yendo a ese lugar.
Por ejemplo, una llamada a AJAX 127.0.0.1:8000/hello
devolverá lo mismo que lo haría si la visitara. Solo que esta vez, lo tienes dentro de una función de JavaScript y puedes manejarlo como quieras. Veamos un caso de uso 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');
}
});
El proceso general es este:
- La llamada va a la URL
127.0.0.1:8000/hello
como si abriera una nueva pestaña y lo hiciera usted mismo.
- Si tiene éxito (código de estado 200), realice la función para el éxito, que alertará a los datos recibidos.
- Si falla, realice una función diferente.
¿Y ahora qué pasaría aquí? Recibirías una alerta con 'hola mundo' en él. ¿Qué sucede si haces una llamada AJAX a casa? Lo mismo, recibirá una alerta que indica <h1>Hello world, welcome to my awesome site</h1>
.
En otras palabras, no hay nada nuevo sobre las llamadas AJAX. Son solo una forma de permitir que el usuario obtenga datos e información sin salir de la página, y permite un diseño suave y muy ordenado de su sitio web. Algunas pautas que debe tener en cuenta:
- Aprende jQuery . No puedo enfatizar esto lo suficiente. Tendrás que entenderlo un poco para saber cómo manejar los datos que recibes. También necesitará comprender alguna sintaxis básica de JavaScript (no muy lejos de Python, se acostumbrará). Recomiendo encarecidamente los videos tutoriales de Envato para jQuery , son geniales y lo pondrán en el camino correcto.
- ¿Cuándo usar JSON? . Verá muchos ejemplos en los que los datos enviados por las vistas de Django están en JSON. No entré en detalles sobre eso, porque no es importante cómo hacerlo (hay muchas explicaciones abundantes) y mucho más importante cuando . Y la respuesta a eso es: los datos JSON son datos serializados. Es decir, datos que puede manipular. Como mencioné, una llamada AJAX buscará la respuesta como si el usuario lo hiciera él mismo. Ahora digamos que no desea meterse con todo el html, y en su lugar desea enviar datos (quizás una lista de objetos). JSON es bueno para esto, porque lo envía como un objeto (los datos JSON se ven como un diccionario de Python), y luego puede iterar sobre él o hacer otra cosa que elimine la necesidad de filtrar html inútil.
- Añádelo al final . Cuando crea una aplicación web y desea implementar AJAX, hágase un favor. Primero, compila toda la aplicación completamente desprovista de AJAX. Ver que todo está funcionando. Entonces, y solo entonces, comience a escribir las llamadas AJAX. Ese es un buen proceso que también te ayuda a aprender mucho.
- Utiliza las herramientas de desarrollador de Chrome . Dado que las llamadas AJAX se realizan en segundo plano, a veces es muy difícil depurarlas. Debe usar las herramientas de desarrollador de Chrome (o herramientas similares como Firebug) y
console.log
cosas para depurar. No lo explicaré en detalle, solo busque en Google y descubra al respecto. Sería muy útil para ti.
- Conciencia CSRF . Finalmente, recuerde que las solicitudes de publicación en Django requieren el
csrf_token
. Con las llamadas AJAX, muchas veces le gustaría enviar datos sin actualizar la página. Probablemente enfrentará algunos problemas antes de que finalmente lo recuerde: espere, olvidó enviar el csrf_token
. Este es un obstáculo para principiantes conocido en la integración de AJAX-Django, pero después de que aprenda cómo hacer que funcione bien, es fácil.
Eso es todo lo que se me ocurre. Es un tema vasto, pero sí, probablemente no haya suficientes ejemplos por ahí. Solo trabaje hasta allí, lentamente, lo obtendrá eventualmente.