簡體   English   中英

Django模板-從dict動態創建變量

[英]Django templates - dynamically create variables from dict

在一個模板中,我試圖生成一組相似的元素。 簡而言之,我有一些類似之處:

{%包含具有key1 = value1 key2 = value2%的“ some / path.html”}

{%包含key2 = value3 key4 = value4%的“ some / path.html”}

等等...

和傳遞給with語句的變量是不同的。 未傳遞給with語句的其余變量具有“ some / path.html”模板中描述的默認值。

我的想法是將一些dict(或列表)傳遞給模板,並且模板會將基於dict的參數傳遞給with語句。 例如,我將擁有dict: {0: {key1: value1, key2: value2}, 1: {key2: value3, key4: value4}}而該dict將被轉儲為with語句傳遞給的參數。

我該如何實現? 或者,如果解決方案不好,我該怎么辦?

我很樂意為此提供幫助!

在模板中,您可以將數據訪問dicts / objects /與“。”一起。

嘗試在視圖中將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 %}

希望對您有幫助。

我抓撓了很多頭,想出了這個! 會發布,所以也許會有用。 /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中的值加載到您的上下文中! 好極了!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM