2016-01-20 92 views
1

在一個模板中,我試圖產生一組類似的元素。 總之,我有一些線類同此:Django模板 - 從字典動態創建變量

{%包括 「一些/ path.html」 與鍵1 =值鍵2 =值%}

{%包括「一些/ path.html 「與鍵2 =值3鍵4 =值4%}

等等...

,並傳遞給with聲明的變量是不同的。沒有傳遞給with語句的其餘變量具有在「some/path.html」模板中描述的默認值。

我的想法是將一些字典(或列表)傳遞給模板,模板會根據字典將參數傳遞給with語句。 例如,我會有字典:{0: {key1: value1, key2: value2}, 1: {key2: value3, key4: value4}} ,這個字典將會被傳遞給with聲明的參數。

我該如何實現它?或者如果這是不好的解決方案,我能做些什麼呢?

我很想得到一些幫助!

回答

0

在模板中,您可以使用'。'將數據存取到字典/對象/ whatether中。

嘗試將字典傳遞到你的背景是這樣的觀點:

context['my_dict'] = {0: {key1: value1, key2: value2}, 1: {key2: value3, key4: value4}} 

然後你就可以訪問它像這樣在你的模板:

{% include "some/path.html" with key1=my_dict.0.key1 key2=my_dict.0.key2 %} 

{% include "some/path.html" with key2=my_dict.1.key2 key4=my_dict.1.key4 %} 

希望它會幫助你。

+0

嘿,謝謝你的回答。 我想盡可能避免硬編碼。 我可以想象,我將有15包括相同的文件。現在我想介紹新的變量到第16個文件。所以我只需要添加一行keyX = my_dict.16.keyX,我不想在模板文件中添加這個,我想在我的python視圖中添加它。 我希望能夠做{%include「x.html」{%for k,v in dict.items%} k = v {%endfor%}%},但這不起作用。我希望你能得到我:) – Spinach

0

我撓了撓頭,想出了這個! 要發佈它,所以它可能會有用。 在/yoursite/templatetags/yourcustomtag.py

from django import template 
import sys 
register = template.Library() 

@register.simple_tag(takes_context=True) 
def yourTag(context): 
    for k, v in your_dict_in_this_context: 
     context[k] = v 
    return 

而且在你的模板調用

{% load yourcustomtag %} 
{% yourTag %} 

,並已加載值從字典到你的背景!好極了!