我找到了一些在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_sons
和has_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中。如你所见,我非常绝望。
谢谢