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- 將'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 }
重定向回應的位置或路徑將在內容項目中給出,狀態和狀態文字也將反映正在發生的情況:
{ "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
清單中,所有回應都會轉換為 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>" }
享受並分享!