Bibliothèques AJAX rapides et simples pour les applications Django.
3.x
2.x
Installez Django-ajax dans votre environnement Python
1- Téléchargez et installez le package :
$ pip install djangoajax
Via GitHub :
pip install -e git://github.com/yceruto/django-ajax#egg=djangoajax
ou simplement avec :
$ python setup.py install
2- Ajoutez 'django_ajax'
dans la liste INSTALLED_APPS
.
3- Lisez la section d'utilisation et profitez de cette fonctionnalité !
from django_ajax . decorators import ajax
@ ajax
def my_view ( request ):
do_something ()
Lorsque la vue ne renvoie rien, vous recevrez cette réponse (format JSON) :
{ "status" : 200 , "statusText" : "OK" , "content " : null }
Envoi de contenu
@ ajax
def my_view ( request ):
c = 2 + 3
return { 'result' : c }
L'ensemble du résultat est converti au format JSON dans le cadre de l'élément de contenu :
{ "status" : 200 , "statusText" : "OK" , "content" : { "result" : 5 } }
Combiner avec d'autres décorateurs
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 }
L'emplacement ou le chemin de la réponse de redirection sera indiqué dans l'élément de contenu, et le statut et le texte d'état refléteront également ce qui se passe :
{ "status" : 302 , "statusText" : "FOUND" , "content" : "/login" }
Réponse du modèle
from django . shortcuts import render
from django_ajax . decorators import ajax
@ ajax
def my_view ( request ):
return render ( request , 'home.html' )
La réponse JSON :
{ "status" : 200 , "statusText" : "OK" , "content" : "<html>...</html>" }
Détecter les exceptions
@ ajax
def my_view ( request ):
a = 23 / 0 # this line throws an exception
return a
La réponse JSON :
{ "status" : 500 , "statusText" : "INTERNAL SERVER ERROR" , "content" : "integer division or modulo by zero" }
Si vous utilisez AJAX à tout moment dans votre projet, nous vous suggérons d'activer l'AJAXMiddleware décrit ci-dessous.
Ajoutez django_ajax.middleware.AJAXMiddleware
à la liste MIDDLEWARE_CLASSES
dans settings.py
et toutes vos réponses seront converties en JSON alors que la demande a été faite via AJAX, sinon elle renverra une HttpResponse normale.
Prudence!
Si ce middleware est activé, vous ne pouvez pas utiliser le décorateur @ajax
. Cela entraînera une double conversion JSON.
AJAXMixin
est un objet qui appelle le décorateur AJAX.
from django . views . generic import TemplateView
from django_ajax . mixin import AJAXMixin
class SimpleView ( AJAXMixin , TemplateView ):
template_name = 'home.html'
La réponse JSON :
{ "status" : 200 , "statusText" : "OK" , "content" : "<html>...</html>" }
Profitez-en et partagez !