如何在 Django 模板中渲染字典中的各个动态元素?

问题描述 投票:0回答:1

这是我的第一个问题(很抱歉有任何英语错误),我提前感谢您的帮助!我正在使用 Django 应用程序 (MVT)。我有一个返回字典的视图,我想访问模板中字典的各个元素。但是,在模板中,我可以毫无问题地渲染完整的字典,但无法渲染单个元素。我将向您展示返回字典 registros_por_dia 的视图。

class GrillaView(View):
    template_name = 'grilla.html'

    def get(self, request):
        return render(request, self.template_name)

    def contar_registros(self, fecha):
       ... 

    def post(self, request, fecha=None):
        if fecha:
        ...
        else:
            # Esta parte se ejecutará cuando se envíe el formulario del mes y año
            mes = int(request.POST.get('mes'))
            ano = int(request.POST.get('ano'))
            
            dias_en_mes = [dia for dia in range(1, monthrange(ano, mes)[1] + 1)]
            registros_por_dia = {}

            for dia in dias_en_mes:
                fecha = datetime(ano, mes, dia).strftime('%Y-%m-%d')
                contador = self.contar_registros(fecha)
                registros_por_dia[dia] = contador
         
        return render(request, self.template_name, {'dias_en_mes': dias_en_mes, 'registros_por_dia': registros_por_dia})

现在我将向您展示模板的相关部分。

...
{% if dias_en_mes %}
    {% with fecha_format='%Y-%m-%d' %}
    <div style="display: flex; flex-wrap: wrap;">

        {% for dia in dias_en_mes %}
        {% with fecha=dia|date:fecha_format %}
        <div style="width: 50px; height: 50px; border: 1px solid black; margin: 5px;">
            <span>{{ dia }}</span>
            <br>
            <span>{{registros_por_dia.dia}}</span>
            
        </div>
        {% endwith %}
        {% endfor %}
    </div>
    {% endwith %}
    {% endif %}
    {% endblock %}

行 {{registros_por_dia.dia}} 不呈现任何值。但是,如果我将其更改为 {{registros_por_dia}},它会渲染整个字典。 我尝试过各种变体但没有成功。

  • <span>{{registros_por_dia|get:dia}}</span>
  • <span>{{registros_por_dia.get(dia, 'Valor predeterminado')}}</span>
  • {% with registro=registros_por_dia.dia %}<span>{{ registro }}</span>              {% endwith %}
  • <span>{{registros_por_dia|getattr:dia}}</span>
  • <span>{{registros_por_dia[dia]}}</span>
  • <span>{{registros_por_dia|dictlookup:dia}}</span>

它们都不起作用,有人知道我能做什么吗? 非常感谢!

我尝试过各种变体但没有成功。

  • <span>{{registros_por_dia|get:dia}}</span>
  • <span>{{registros_por_dia.get(dia, 'Valor predeterminado')}}</span>
  • {% with registro=registros_por_dia.dia %}<span>{{ registro }}</span>              {% endwith %}
  • <span>{{registros_por_dia|getattr:dia}}</span>
  • <span>{{registros_por_dia[dia]}}</span>
  • <span>{{registros_por_dia|dictlookup:dia}}</span>

它们都不起作用,有人知道我能做什么吗? 非常感谢!

django django-templates
1个回答
0
投票

您可能正在寻找字典的

items
方法:

{% for dia, contador in registros_por_dia.items %}

{{dia}}: {{contador}}<br />

{% endfor %}

当然,如果

contador
是像列表这样的数据类型,请在外循环中进行如下处理:

{% for dia, contador in registros_por_dia.items %}

{{dia}}: {% for c in contador %} {{c}} {% endfor %}<br />

{% endfor %}
© www.soinside.com 2019 - 2024. All rights reserved.