我有一本深度未知的字典,我想在我的 Django 模板中顯示它。該字典表示檔案夾內子檔案夾的結構。我的目標是將其與父子檔案夾一起顯示在其子檔案夾之前,這將縮進以表明它們是該檔案夾的子檔案夾。
所以用一個例子來解釋,如果我有以下字典:
{'Script Hello':
{'Script Hello World':
{'Script Hello World 2': None,
'Script Hello World 3': None}},
'Script Hello World 4': None,
'Script Hello World 5':
{'Script Hello World 6': None}}
我希望它像這樣顯示:
. Script Hello
. Script Hello World
. Script Hello World 2
. Script Hello World 3
. Script Hello World 4
. Script Hello World 5
. Script Hello World 6
如果深度最多為 3(以確定我真正想要的),我已經完成了一個小代碼,但找不到使其遞回的方法。
我的代碼是這樣的:
{% for key, values in list.items %}
<li> {{ key }}
<ul>
{% for key,values in values.items %}
<li>{{ key }}</li>
<ul>
{% for key,values in values.items %}
<li>{{ key }}</li>
{% endfor %}
</ul>
{% endfor %}
</ul>
</li>
{% endfor %}
我嘗試使用 Javascript 制作一個快速函式來瀏覽我的字典并顯示其內容,但是我找不到如何在我的 Js 函式中獲取我的字典,我總是讓它轉義并且無法使用它,即使在嘗試了這樣的解決方案之后。
因此,我需要您的幫助,以便在我的模板中遞回地顯示我的字典,即使在嘗試了我能想到的所有方法之后,我也無法做到。
uj5u.com熱心網友回復:
我認為最簡單的解決方案是使用自定義模板標簽:
from django.utils.safestring import mark_safe
def get_data(data):
text = "<ul>"
for k, v in data.items():
text = f'<li>{k}<li>'
if isinstance(v, dict):
text = get_data(v) # recursively calling to get the lists
else: # this else block can be removed if you don't need it
text = f'<li>{v}</li>'
text = "</ul>"
return text
@register.filter(is_safe=True)
def render_dict(data):
text = get_data(data)
return mark_safe(text)
更多資訊可以在檔案中找到。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/480996.html
