在django模板中迭代嵌套的dict

时间:2014-04-15 12:49:45

标签: python django templates dictionary

我找到了一些在django模板中迭代dict的解决方案(例如How to iterate over nested dictionaries in django templates),但它始终用于定义的深度。

例如,如果我有这个词:

{'a':{'b':'c',
      'd':'e',
      'f':'g',
      'h':{'i':'j',
           'k':'l',
           'm':'n'
          }
      }
  'o':'p'
}

但我也可以:

{'a':{'b':{'c':{'d':'e',
                'f':'g'
               }
          }
     }
 }

除了递归之外,还有另外一种方法吗?如果没有,是否可以在django模板中进行递归? 我认为唯一的方法是创建自定义过滤器,例如get_sonshas_son并使用它。是这样做的好方法吗?

其他信息:

我将结构存储在如下的模型中:

class XMLStructure(Model.models):
    node_name = models.CharField()
    parent = models.ForeignKey('XMLStructure')

    @staticmethod
    def get_root(self):
        # return the root of the structure

    def has_children(self):
        # return true / false if it's a leaf

    @staticmethod 
    def get_leaves(self): 
        # return all leaves of my xml 

和一个函数build,它将xml结构生成为dict。

我尝试使用Django Snippets中的代码,但我无法使它们工作(总是得到RuntimeError: maximum recursion depth exceeded while calling a Python object

我虽然将dict转换为列表会更容易。我的第一个词是:

dict_as_list = ['a','/','b','d','f','h','/','i','k','m','\','\','o','\']

然后将值存储到dict中。如你所见,我非常绝望。

谢谢

0 个答案:

没有答案