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>" }
享受并分享!