这允许django将json兼容的数据导出到浏览器。
django_client_data的Python项目详细描述
这允许django将json兼容的数据导出到浏览器。这个 客户端代码作为javascript对象访问数据。
安装
从pypi获得最新的稳定版本
pip install django_client_data
安装应用程序、中间件和上下文处理器
INSTALLED_APPS=(...,'django_client_data',)MIDDLEWARE_CLASSES=(...'django_client_data.middleware.ClientDataMiddleware',)TEMPLATE_CONTEXT_PROCESSORS=(...'django_client_data.context_processors.client_data',)
用法
在视图中调用set_client_data()导出值
fromdjango.views.genericimportTemplateViewfromdjango_client_dataimportset_client_dataclassIndexView(TemplateView):template_name='index.html'defget(self,request,*args,**kwargs):set_client_data(request,**{'foo':'bar'})returnsuper(IndexView,self).get(request,*args,**kwargs)
在页面中包含client_data.html。
{%include'django_client_data/client_data.html'%}
javascript对象DJANGO.client_data看起来像
{"DEBUG":false,"STATIC_URL":"/static/","csrftoken":"gSlpOPyxHrdQH3KWUEkXx1wfyqGE7MDo","foo":"bar","url_args":[],"url_kwargs":{},"url_name":"index","user_full_name":null,"user_pk":null,"username":null}
设置
client_data_namespace(默认为'django')是将 创建为包含客户端数据的命名空间。数据是属性 此全局的,名为“客户端数据”。
机制
django客户端数据通过在请求上附加一个client_data属性来工作 反对。client_data.html模板附加了一个client_data属性 到由客户机数据命名空间指示的javascript全局。
待办事项
- 将“上下文处理器”功能添加到客户端数据,以便自定义值可以 注入
运行测试
./configure.sh source venv/bin/activate python django_client_data/tests/manage.py test