templateTag调用urlconf并将其负载存储到模板上下文中
django-rest-caller的Python项目详细描述
django rest呼叫者
用于调用urlconf视图终结点的简单django templatetag。
限制
- 它仅适用于get方法
- 它不处理没有主体的请求
- 它不能很好地处理需要登录的视图(它假设调用方处理访问端点所需的所有内容)
- 它假设端点返回一个json
安装
使用pip安装
$ python3 -m pip install django-rest-caller
将caller.apps.CallerConfig
添加到INSTALLED_APPS
INSTALLED_APPS=[...'caller.apps.CallerConfig',...]
用法
呼叫
在模板中加载templateTag
{%loadcaller_tags%}
并使用call
标记作为
{%call'urlconf'arg1=42arg2='X'withparam1='1'param2='2'as'object_name'%}
或
{%call'urlconf'42'X'withparam1='1'param2='2'as'object_name'%}
'urlconf' arg1=42 arg2='X'
这是常用的{%url%}参数(请记住:使用args参数列表或kwargs参数,而不是两者都使用)param1='1' param2='2'
这些参数将被转换为get querystringas 'object_name'
将调用的对象存储到object\u name对象中。它可以是字符串或变量名。
所以被调用的url相当于
{%url'urlconf'arg1=42arg2='X'%}?param1=1¶m2=2
call
将把结果json对象注入到模板上下文中,这样您就可以
- 用作上下文对象
{%loadcaller_tags%}{%call'api:blog-list'as'posts'%}{%forpostinposts%}<div><h2>{{post.title}}</h2><p>{{post.body}}</p></div>{%endfor%}
- 输入到json标记
{%loadcaller_tags%}{%call'api:blog-list'as'posts'%}{{posts|json_script:"posts-data"}}<script>functionget_json(node){varel=document.getElementById(node);returnJSON.parse(el.textContent||el.innerText);}varposts=get_json("posts-data");console.log(posts);</script>
json脚本
此标记将反向传输django>;=2.1^{<script>
标记中,可以与javascript一起使用。
示例
使用
value={'hello':'world'}
以及
{{value|json_script:"hello-data"}}
将输出
<scriptid="hello-data"type="application/json">{"hello":"world"}</script>
可使用
functionget_json(name){varel=document.getElementById(name);returnJSON.parse(el.textContent||el.innerText);}vardata=get_json("hello-data");console.log(data);
更改
0.2.1
- 修复版本导入错误
0.2.0
- 从templateTag中提取泛型代码
0.1.5
- 正确的url unquote arg参数
- 可以在templateTag参数中使用templateFilters
0.1.4
- 在调用视图中显示引发的异常,而不是常规视图
0.1.3
- 始终需要
as 'varname'
- 能够在urlconf中使用args或kwargs,如文档所述
- 更新文档
0.1.1-0.1.2
- 更新文档
0.1.0
- 初始版本