Django - Ayax

Lenguajes dinamicos, hojas de estilo, frameworks, CMS...

Moderadores: frank, dxfiles

Responder
Avatar de Usuario
lway
Mensajes: 57
Registrado: Lun, 26 Nov 2012, 12:45

Django - Ayax

Mensaje por lway » Lun, 26 Nov 2012, 13:03

Hace un tiempo que vengo trabajando con Django, pero nunca he había tocado Ajax en jquery; lo cual es obligado hacer para que la Web mejore. Ahora estoy intentándolo mas no consigo que funcionen juntos. Necesito documentación y códigos testeados para probar y aprender. Espero que el tema les guste y que me ayuden.
Solo que, falto de almas en quienes verter la suya desbordante, muere ahogado el poeta.
José Martí

Avatar de Usuario
lway
Mensajes: 57
Registrado: Lun, 26 Nov 2012, 12:45

Re: Django - Ayax

Mensaje por lway » Mar, 27 Nov 2012, 09:26

Lo primero que me llama la atención a la hora de ejecutar una consulta Ajax para Django es que las url de Django no se refieren en sí a un recurso en específico, por ejemplo: si se desea consultar el recurso "r.html" que se encuentra en "/static/r.html", no se pone dicha url, sino una url ficticia (podría ser "/resource") que luego llama a una vista, la cual retorna el recurso "r.html".


Pero según me han dicho Symfony tomo la misma filosofía de url, donde la url es virtual y no indica en sí misma a un recurso.
Solo que, falto de almas en quienes verter la suya desbordante, muere ahogado el poeta.
José Martí

Avatar de Usuario
Barcelo
Mensajes: 22
Registrado: Mar, 15 Ene 2013, 08:44

Re: Django - Ayax

Mensaje por Barcelo » Mar, 26 Mar 2013, 15:26

He realizado algunos trabajos con Django, pero he tocado muy poco ajax, pero les comento que se habla muy bien de "Dajaxie" (creo que así se llama).
investiguen... :idea:

Avatar de Usuario
lway
Mensajes: 57
Registrado: Lun, 26 Nov 2012, 12:45

Re: Django - Ayax

Mensaje por lway » Mié, 05 Jun 2013, 10:02

Luego de un tiempo de estudio regreso al foro para que conectarme con la gente. La conexión entre Django y Ajax se realiza a través del objeto Responde que tiene que retornar una View en Django. A este Response se le puede poner una cabecera mine-type que indique el recurso que se retorna.
Solo que, falto de almas en quienes verter la suya desbordante, muere ahogado el poeta.
José Martí

Avatar de Usuario
ozkar
Mensajes: 176
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: /home/ozkar/public_html/

Re: Django - Ayax

Mensaje por ozkar » Mié, 05 Jun 2013, 11:49

lway escribió:Luego de un tiempo de estudio regreso al foro para que conectarme con la gente. La conexión entre Django y Ajax se realiza a través del objeto Responde que tiene que retornar una View en Django. A este Response se le puede poner una cabecera mine-type que indique el recurso que se retorna.
Una forma muy, pero muy trivial de trabajar con Ajax en django es retornar tus consultas en formato json, una vista sencilla seria algo como:

Código: Seleccionar todo

from django.core import serializers

def ajax_city_request(request):
    try:
        data = serializers.serialize("json", City.objects.all())
    except:
        data = None
    return HttpResponse(data, mimetype="application/javascript")
Y desde tu javascript con jquery, pues tenemos un super-método llamado .getJSON().
Otra forma mucho mas trivial es, por ejemplo, con un login:

Código: Seleccionar todo

def loginsystem(request):
    if request.is_ajax():
        user = authenticate(username=request.POST['username'],
                            password=request.POST['passwd'])
        if user is not None:
            if user.is_staff:
                login(request, user)
                return HttpResponse('4')
                print 4
            else:
                return HttpResponse('2')
        else:
            return HttpResponse('3')
    else:
        return render_to_response('login.html',
                            RequestContext(request))
Y en tu javascript seria como:

Código: Seleccionar todo

<script>
  $("#form-login").submit(function(){
  var usuario = $("#username").val();
  var clave = $("#passwd").val();
  var dataString = $('#form-login').serialize();
    $.ajax({
      type: "POST",
      url: '{% url 'loginsystem' %}',
      data: dataString,
      success: function(msg){
        if (msg == 1){
            window.location = '{% url 'dashboard' %}';
        }
        if (msg == 4){
            window.location = '{% url 'dashboard_admin' %}';
        }
        if (msg == 2){
            $('#alert').removeClass("hide");
            $('#alert').removeClass("alert-error");
            $('#alert').addClass("alert-info");
            $('#alertheadingmsg').html('Información');
            $('#alertmsg').html('Su cuenta se encuentra desactivada');
        }
        if (msg == 3){
            $('#alert').removeClass("hide");
            $('#alert').removeClass("alert-info");
            $('#alert').addClass("alert-error");
            $('#alertheadingmsg').html('Error!!');
            $('#alertmsg').html('Usuario y/o clave no válida');
        }
      }
    });
    return false;
});
En esa view, como tengo varios user-levels, pues en dependencia de su nivel(staff, users) hago los redirect.
Saludos.
Linux Registered User #530387
Fedora 24 User.
Plasma 5 User.

Responder