首页 > 解决方案 > Django 模板标签,让我的列表为空,或者我没有传递任何东西

问题描述

感谢您阅读我的帖子

好的,我目前正在开发在仪表板中显示数据的 Django 项目;我设法用 Chart JS 显示和绘制图表,很好,但现在我需要限制 Django 数据库中的数量数据以显示在图表上并显示放入数据库的最新数据。

我使用 Django 内置标签显示最近的是“last”并限制显示数据,标签是“length_is”(Solve)。

这是我使用“最后”标签和索引页的 HTML 代码

<div class = "containor">
    <div class = "float-right  my-4 chartjs-render-monitor" id="chartContainerPH" style="width: 49%; height: 400px;display: inline-block; background-color:#FDFDFD;">
    <center>
        <a class="title-link" href="{%url 'ph' %}">PH:</a>
        <p>{% for tank_system in tank %} {{tank_system.ph|last}} {%endfor%}</p>
        </center>
    {%include 'FrounterWeb/includes/PHchart.html'%}
    </div>

这是我在索引中得到 Last Tag 结果的结果


解决)这是我使用length_is标签的图表HTML代码

{%block PHchart%}

<canvas class = "my-4 chartjs-render-monitor" id="PHchart" ></canvas>
<script>

var ctx = document.getElementById("PHchart");
var PHchart = new Chart(ctx, {
    type: 'line',
    data: {
        labels: [ {%for tank_system in tank%} "{{tank_system.datetime}}", {%endfor%} ], //x-Axis
        datasets: [{ //y-Axis
        label: 'PH1',
            data: [ {%for tank_system in tank%} {{tank_system.PH|length_is:"3"}}, {%endfor%} ],
            backgroundColor: "rgb(249, 24, 24,0.2)",
            borderColor: "rgb(249, 24, 24,0.2)",
            fill: true,
            }]
    },
    options: {
        scales: {
            yAxes: [{
                ticks: {
                    beginAtZero:false
                }
            }]
        }
    }
});
</script>
</div>{%endblock%}

结果Length_is 在图表上


摘要:我无法让内置的“filter”和“length_is”( Solve ) Django 标签工作。你能和我分享一个例子或教程吗?Django 文档没有写很多例子。

这里是我的观点代码;

    @login_required(login_url='/accounts/login/')
def index(request):
    tank = tank_system.objects.all()
    args = {'tank':tank}
    return render(request,'FrounterWeb/extends/includes.html',args)

和我的模特代码;

class tank_system(models.Model):
    PH = models.DecimalField(max_digits=3, decimal_places=1)
    EC = models.DecimalField(max_digits=3, decimal_places=1)
    WaterLevel = models.IntegerField(default=100)
    TempWater = models.IntegerField(default=0)
    TempRoom = models.IntegerField(default=0)
    datetime = models.DateTimeField(default=timezone.now())

标签: javascripthtmldjangodjango-templates

解决方案


这两个过滤器都在 django 文档中有详细记录。last过滤器为您获取 a的最后一个元素,如果列表为该长度,listlength_is过滤器返回,否则。 TrueFalse

这可能意味着您对代码的理解存在问题。您需要验证tank_system.PHor的类型和值tank_system.ph(两者都有),并且大小写很重要。一种调试方法是简单地将 的值输出tank_system.ph到网页并验证结果。


推荐阅读