Skip to main content

templatetag 调用 urlconf 并将其有效负载存储到模板上下文中

项目描述

django-rest-caller

用于调用 urlconf 视图端点的简单 django 模板标签。

限制

  • 它仅适用于 GET 方法
  • 它不处理没有正文的请求
  • 它不适合登录所需的视图(它假设调用者处理访问端点所需的一切)
  • 它假设端点返回一个 json

安装

使用 pip 安装

    $ python3 -m pip install django-rest-caller

添加caller.apps.CallerConfigINSTALLED_APPS

    INSTALLED_APPS = [
        ...
        'caller.apps.CallerConfig',
        ...
    ]

用法

称呼

在您的模板中加载模板标签

    {% load caller_tags %}

并将call标签用作

    {% call 'urlconf' arg1=42 arg2='X' with param1='1' param2='2' as 'object_name' %}

或者

    {% call 'urlconf' 42 'X' with param1='1' param2='2' as 'object_name' %}
  • 'urlconf' arg1=42 arg2='X'这是通常的 {% url %} 参数(记住:使用 args 参数列表或 kwargs 参数,不能同时使用)
  • param1='1' param2='2'这些参数将被转换为 GET 查询字符串
  • as 'object_name'将调用的对象存储到 object_name 对象中。它可以是字符串或变量名。

所以被调用的 url 等价于

    {% url 'urlconf' arg1=42 arg2='X' %}?param1=1&param2=2

会将结果calljson 对象注入到模板上下文中,因此您可以

  • 用作上下文对象
    {% load caller_tags %}

    {%  call  'api:blog-list'  as  'posts'  %} 
    {%  for  post  in  posts  %} 
    < div > 
    < h2 > {{  post.title  }} </ h2 > 
    < p > {{  post.body  } } </ p > 
    </ div > 
    {%  endfor  %}
  • 喂给 json 标签
    {% load caller_tags %}

    {%  call  'api:blog-list'  as  'posts'  %} 
    {{  posts | json_script :"posts-data"  }} 
    <脚本>
        函数get_json 节点{  
          变量el =文档getElementById (节点);   
          返回JSON 解析el.textContent || el.innerText _ _ _   
        }
        var posts = get_json ( "posts-data" );   
        控制台日志帖子);
    </脚本>

json_script

此标签将反向移植 django >= 2.1json_script过滤器,该过滤器将 Python 对象安全地输出为 JSON,包装在<script>标签中,可与 JavaScript 一起使用。

例子

    value = {'hello': 'world'}

    {{ value|json_script:"hello-data" }}

将输出

    <script id="hello-data" type="application/json">{"hello": "world"}</script>

并且可以使用

    function get_json(name) {
      var el = document.getElementById(name);
      return JSON.parse(el.textContent || el.innerText);
    }
    var data = get_json("hello-data");
    console.log(data);

变化

开发者

  • 在init中导出 utils.call ,所以可以from caller import call

0.2.1

  • 修复 VERSION 导入错误

0.2.0

  • 从模板标签中提取通用代码

0.1.5

  • 正确的 url 取消引用 arg 参数
  • 可以在模板标签参数中使用模板过滤器

0.1.4

  • 在被调用的视图中显示引发的异常,而不是通用的

0.1.3

  • 总是需要as 'varname'
  • 能够按照文档使用 args 或 kwargs 进行 urlconf
  • 更新文档

0.1.1 - 0.1.2

  • 更新文档

0.1.0

  • 初始发行

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

内置分布

django_rest_caller-0.2.2-py3-none-any.whl (28.0 kB 查看哈希

已上传 py3