Django模板 - 从dict动态创建变量

时间:2016-01-20 15:33:48

标签: python django

在一个模板中,我试图产生一组类似的元素。 简而言之,我有一些类似的线:

  

{%include“some / path.html”with key1 = value1 key2 = value2%}

     

{%include“some / path.html”with key2 = value3 key4 = value4%}

依旧......

传递给with语句的变量是不同的。未传递给with语句的Rest变量具有“some / path.html”模板中描述的默认值。

我的想法是将一些字典(或列表)传递给模板,模板会根据dict将参数传递给with语句。 例如,我会有词典:{0: {key1: value1, key2: value2}, 1: {key2: value3, key4: value4}} 这个词汇将被传达给传递给with陈述的论据。

我怎样才能实现它?或者,如果这是一个糟糕的解决方案,我可以做些什么呢?

我很想得到一些帮助!

2 个答案:

答案 0 :(得分:0)

在模板中,您可以使用'。'访问数据到dicts / objects / whatether。

尝试在视图中将dict传递到您的上下文中:

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 %}

希望它会对你有所帮助。

答案 1 :(得分: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 %}

并且您已将dict中的值加载到上下文中!耶!