Быстрые и простые библиотеки AJAX для приложений django.
3.x
2.x
Установите django-ajax в вашей среде Python.
1- Загрузите и установите пакет:
$ pip install djangoajax
Через Гитхаб:
pip install -e git://github.com/yceruto/django-ajax#egg=djangoajax
или просто с:
$ python setup.py install
2- Добавьте 'django_ajax'
в список INSTALLED_APPS
.
3- Прочтите раздел об использовании и наслаждайтесь этой функцией!
from django_ajax . decorators import ajax
@ ajax
def my_view ( request ):
do_something ()
Если представление ничего не возвращает, вы получите такой ответ (формат JSON):
{ "status" : 200 , "statusText" : "OK" , "content " : null }
Отправка контента
@ ajax
def my_view ( request ):
c = 2 + 3
return { 'result' : c }
Весь результат преобразуется в формат JSON как часть элемента контента:
{ "status" : 200 , "statusText" : "OK" , "content" : { "result" : 5 } }
Сочетание с другими декораторами
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 }
Местоположение или путь ответа на перенаправление будут указаны в элементе контента, а статус и statusText будут отражать происходящее:
{ "status" : 302 , "statusText" : "FOUND" , "content" : "/login" }
Шаблон ответа
from django . shortcuts import render
from django_ajax . decorators import ajax
@ ajax
def my_view ( request ):
return render ( request , 'home.html' )
Ответ JSON:
{ "status" : 200 , "statusText" : "OK" , "content" : "<html>...</html>" }
Перехват исключений
@ ajax
def my_view ( request ):
a = 23 / 0 # this line throws an exception
return a
Ответ JSON:
{ "status" : 500 , "statusText" : "INTERNAL SERVER ERROR" , "content" : "integer division or modulo by zero" }
Если вы постоянно используете AJAX в своем проекте, мы предлагаем вам активировать AJAXMiddleware, описанное ниже.
Добавьте django_ajax.middleware.AJAXMiddleware
в список MIDDLEWARE_CLASSES
в settings.py
, и все ваши ответы будут преобразованы в JSON, тогда как запрос был сделан через AJAX, в противном случае он вернет обычный HttpResponse.
Осторожность!
Если это промежуточное программное обеспечение активировано, вы не сможете использовать декоратор @ajax
. Это приведет к двойному преобразованию JSON.
AJAXMixin
— это объект, вызывающий декоратор AJAX.
from django . views . generic import TemplateView
from django_ajax . mixin import AJAXMixin
class SimpleView ( AJAXMixin , TemplateView ):
template_name = 'home.html'
Ответ JSON:
{ "status" : 200 , "statusText" : "OK" , "content" : "<html>...</html>" }
Наслаждайтесь и делитесь!