Bibliotecas AJAX rápidas e fáceis para aplicações Django.
3.x
2.x
Instale Django-ajax em seu ambiente python
1- Baixe e instale o pacote:
$ pip install djangoajax
Através do Github:
pip install -e git://github.com/yceruto/django-ajax#egg=djangoajax
ou simplesmente com:
$ python setup.py install
2- Adicione 'django_ajax'
na lista INSTALLED_APPS
.
3- Leia a seção de uso e aproveite esse recurso!
from django_ajax . decorators import ajax
@ ajax
def my_view ( request ):
do_something ()
Quando a view não retornar nada, você receberá esta resposta (formato JSON):
{ "status" : 200 , "statusText" : "OK" , "content " : null }
Envio de conteúdo
@ ajax
def my_view ( request ):
c = 2 + 3
return { 'result' : c }
Todo o resultado é convertido em formato JSON como parte do elemento de conteúdo:
{ "status" : 200 , "statusText" : "OK" , "content" : { "result" : 5 } }
Combinando com outros 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 }
A localização ou caminho da resposta de redirecionamento será fornecida no item de conteúdo, também o status e statusText refletirão o que está acontecendo:
{ "status" : 302 , "statusText" : "FOUND" , "content" : "/login" }
Resposta do modelo
from django . shortcuts import render
from django_ajax . decorators import ajax
@ ajax
def my_view ( request ):
return render ( request , 'home.html' )
A resposta JSON:
{ "status" : 200 , "statusText" : "OK" , "content" : "<html>...</html>" }
Capturar exceções
@ ajax
def my_view ( request ):
a = 23 / 0 # this line throws an exception
return a
A resposta JSON:
{ "status" : 500 , "statusText" : "INTERNAL SERVER ERROR" , "content" : "integer division or modulo by zero" }
Se você estiver usando AJAX em todos os momentos do seu projeto, sugerimos que você ative o AJAXMiddleware descrito abaixo.
Adicione django_ajax.middleware.AJAXMiddleware
à lista MIDDLEWARE_CLASSES
em settings.py
e todas as suas respostas serão convertidas para JSON enquanto a solicitação foi feita via AJAX, caso contrário retornará um HttpResponse normal.
Cuidado!
Se este middleware estiver ativado você não poderá usar o decorador @ajax
. Isso causará conversão dupla de JSON.
AJAXMixin
é um objeto que chama o decorador AJAX.
from django . views . generic import TemplateView
from django_ajax . mixin import AJAXMixin
class SimpleView ( AJAXMixin , TemplateView ):
template_name = 'home.html'
A resposta JSON:
{ "status" : 200 , "statusText" : "OK" , "content" : "<html>...</html>" }
Aproveite e compartilhe!