在 django 中将 JSON 显示为模板列表

Posted

技术标签:

【中文标题】在 django 中将 JSON 显示为模板列表【英文标题】:Display JSON as template list in django 【发布时间】:2015-09-28 05:27:07 【问题描述】:

我有以下 JSON 文档:


  "document": 
    "section1": 
      "item1": "Item1Value",
      "item2": "Item2Value"
    ,
    "section2": 
      "item1": "Item1Value",
      "item2": "Item2Value"
    ,
    "section3": 
      "item1": "Item1Value",
      "item2": "Item2Value"
    
  

我想在我的 django 模板中显示。该文档将是动态的,因此我想动态显示每个部分。我正在将解析的(通过 json.loads())字符串传递给模板。

我尝试了类似的方法:

% for section in json.document %
    <div class="section">
        <h4><a href="#" class="section_toggle"></a>   section|title :</h4>
        <table class="table table-condensed">
            % for field in json.document.section %
                 field  # <---- THIS should print item1, item2... Instead, its printing "section1" letter by letter etc #
            % endfor %
        </table>
    </div>

% endfor %

但它不能正确打印部分的项目。有什么帮助吗?

【问题讨论】:

您的 Json 格式已关闭。 document 值需要是您的代码(至少在理论上)工作的列表。 这实际上是一个 JSON 字符串,还是一个字典?显示您从哪里获取它以及如何将它传递给视图。 【参考方案1】:

您可以改为将字典传递给您的模板,并通过在模板中使用 dict.items 迭代值来访问它。

% for key1,value1 in json.document.items %
    <div class="section">
        <h4><a href="#" class="section_toggle"></a>   key1|title :</h4>
        <table class="table table-condensed">
            % for key2,value2 in value1.items %
                 key2  
            % endfor %
        </table>
    </div>

% endfor %

在您上面的代码中,它正在逐个字母地打印"section1",因为您没有迭代section1 键的值,而是迭代section1 字符串本身。如果您需要访问字典中的项目,则需要为键和值使用单独的变量并使用dict.items

例如,下面的代码将打印模板中data 字典的键和值。

% for key, value in data.items %
     key :  value 
% endfor %

【讨论】:

以上是关于在 django 中将 JSON 显示为模板列表的主要内容,如果未能解决你的问题,请参考以下文章

在 Django Rest Framework 中将整数的 JSON 列表转换为字符串

在 Django 中将值传递给 Bootstrap 模式

在 Django 模板中将卡片组划分为行的最佳方法 - Django

如何在用户个人资料页面中将用户发布的博客显示为 Django 3 中的我的帖子列表部分?

解析json在模板中的django modelformset中返回

django rest_framework中将json输出字符强制为utf-8编码