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 }
リダイレクト応答の場所またはパスはコンテンツ項目で指定され、ステータスと 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
settings.py
のMIDDLEWARE_CLASSES
リストに追加すると、リクエストが 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>" }
楽しんでシェアしましょう!