Bibliotecas AJAX rápidas y sencillas para aplicaciones Django.
3.x
2.x
Instale django-ajax en su entorno Python
1- Descargar e instalar el paquete:
$ pip install djangoajax
A través de Github:
pip install -e git://github.com/yceruto/django-ajax#egg=djangoajax
o simplemente con:
$ python setup.py install
2- Agregue 'django_ajax'
a la lista INSTALLED_APPS
.
3- ¡Lea la sección de uso y disfrute de esta función!
from django_ajax . decorators import ajax
@ ajax
def my_view ( request ):
do_something ()
Cuando la vista no devuelva nada, recibirá esta respuesta (formato JSON):
{ "status" : 200 , "statusText" : "OK" , "content " : null }
Enviando contenido
@ ajax
def my_view ( request ):
c = 2 + 3
return { 'result' : c }
Todo el resultado se convierte a formato JSON como parte del elemento de contenido:
{ "status" : 200 , "statusText" : "OK" , "content" : { "result" : 5 } }
Combinando con otros decoradores
from django . contrib . auth . decorators import login_required
from django_ajax . decorators import ajax
@ ajax
@ login_required
def my_view ( request ):
# if the request.user is anonymous then this view not proceed
return { 'user_id' : request . user . id }
La ubicación o ruta de la respuesta de redirección se proporcionará en el elemento de contenido, además el estado y el texto de estado reflejarán lo que está sucediendo:
{ "status" : 302 , "statusText" : "FOUND" , "content" : "/login" }
Respuesta de plantilla
from django . shortcuts import render
from django_ajax . decorators import ajax
@ ajax
def my_view ( request ):
return render ( request , 'home.html' )
La respuesta JSON:
{ "status" : 200 , "statusText" : "OK" , "content" : "<html>...</html>" }
Capturar excepciones
@ ajax
def my_view ( request ):
a = 23 / 0 # this line throws an exception
return a
La respuesta JSON:
{ "status" : 500 , "statusText" : "INTERNAL SERVER ERROR" , "content" : "integer division or modulo by zero" }
Si estás utilizando AJAX en todo momento en tu proyecto, te sugerimos activar el AJAXMiddleware que se describe a continuación.
Agregue django_ajax.middleware.AJAXMiddleware
a la lista MIDDLEWARE_CLASSES
en settings.py
y todas sus respuestas se convertirán a JSON mientras que la solicitud se realizó a través de AJAX; de lo contrario, devolverá una HttpResponse normal.
¡Precaución!
Si este middleware está activado no podrás utilizar el decorador @ajax
. Eso provocará una doble conversión JSON.
AJAXMixin
es un objeto que llama al decorador AJAX.
from django . views . generic import TemplateView
from django_ajax . mixin import AJAXMixin
class SimpleView ( AJAXMixin , TemplateView ):
template_name = 'home.html'
La respuesta JSON:
{ "status" : 200 , "statusText" : "OK" , "content" : "<html>...</html>" }
¡Disfruta y comparte!