django ajax
v3.3.0
django 애플리케이션을 위한 빠르고 쉬운 AJAX 라이브러리입니다.
3.x
2.x
Python 환경에 django-ajax 설치
1- 패키지 다운로드 및 설치:
$ pip install djangoajax
Github를 통해:
pip install -e git://github.com/yceruto/django-ajax#egg=djangoajax
또는 간단히 다음을 사용하여:
$ python setup.py install
2- INSTALLED_APPS
목록에 'django_ajax'
추가합니다.
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 }
리디렉션 응답의 위치 또는 경로는 콘텐츠 항목에 제공되며, status 및 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를 활성화하는 것이 좋습니다.
settings.py
의 MIDDLEWARE_CLASSES
목록에 django_ajax.middleware.AJAXMiddleware
추가하면 요청이 AJAX를 통해 이루어진 반면 모든 응답은 JSON으로 변환됩니다. 그렇지 않으면 일반 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>" }
즐기고 공유하세요!