django项目的ajax goodies。
django-ajax-toolkit的Python项目详细描述
django ajax工具包
依赖项
- msgpack python>;=0.2.4
- django>;=1.3
ci状态(travis)
安装
从PYPI中获取:
pip install django-ajax-toolkit
或:
easy_install django-ajax-toolkit
在视图中返回数据对象
jsonresponse
如果要扩展视图以使用ajax,可以选择在响应中返回json数据。 为了更方便,您可以使用ajaxtoolkit.http:
中的JsonResponse。from ajaxtoolkit.http import JsonResponse class MyView(TemplateView): def get(self, request, *args, **kwargs): if request.is_ajax: context = self.get_context_data() return JsonResponse(context) # ...
这将设置正确的mimetype(application/json)并将上下文数据序列化为json对象。
msgpackresponse
MsgpackResponse的工作方式与JsonResponse类似,但使用msgpack提供二进制序列化。 用法与JsonResponse:
相同def get(self, request, *args, **kwargs): if request.is_ajax: context = self.get_context_data() return MsgpackResponse(context) # ...
ajax中间件
如果使用的是django的消息框架,还可以在 中间件。
这将把请求中生成的所有消息插入到JsonResponse对象:
from django.contrib import messages from ajaxtoolkit.http import JsonResponse class MyView(TemplateView): def get(self, request, *args, **kwargs): if request.is_ajax: context = self.get_context_data() messages.info(request, "This is very useful") messages.warning(request, "Be careful!") return JsonResponse(context) # ...
这将呈现如下:
{ //... 'django_messages': [ {"extra_tags": "info", "message": "This is very useful", "level": 20}, {"extra_tags": "warning", "message": "Be careful!", "level": 30} ] }
绕过消息中间件
如果您想在不附加消息的情况下发送http响应,可以这样做 通过设置响应对象的message_support属性:
context = self.get_context_data() response = JsonResponse(context) response.message_support = False return response
您还可以选择对原始响应类进行子类划分,例如:
class MsgpackResponseWithoutMessages(MsgpackResponse): message_support = False # ...
贡献
克隆,创建一个virtualenv并运行:
make install
这将安装所有依赖项。然后可以使用以下命令运行测试:
./runtests.py