【问题标题】:Django template tag, making my list empty or I'm not pass anythingDjango 模板标签,使我的列表为空或我没有传递任何东西
【发布时间】:2019-05-04 08:35:29
【问题描述】:

感谢阅读我的文章

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

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

这是我使用“最后”标签和索引页的 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 result in my index


(解决) 这是我使用 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 on chart


总结:我无法让内置的“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())

【问题讨论】:

    标签: javascript html django django-templates


    【解决方案1】:

    这两个过滤器都在 django 文档中有详细记录。 last filter 获取list 的最后一个元素,如果列表是该长度,length_is filter 返回True,否则返回False

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

    【讨论】:

    • 好吧我弄上length_is,是不是用的不好;但是我如何使用对我想要显示的内容进行排序,在我的列表中,例如我有一个列表 [1,2,3,4,5,6],我只想显示 3、5 和 6
    • 至于“last”标签是否正确使用,如果我要放入的话; {% for tank_system in tank %} {{tank_system.EC|last}}, {%endfor%}(创建列表)我有 typeErrors,那么我该如何解决这个问题?
    • 除非您发布有关 tank 的数据和格式的其他信息,否则我无法真正帮助您解决这些问题。没有它,我们就是在黑暗中拍摄。
    • 对于第 3、5、6 个问题,您必须write your own filter
    • 所以tank_system.EC 不是一个列表或另一个Iterable。这是一个Decimal。您想要Decimal 中的最后一个数字吗?喜欢3.7 你想要7
    猜你喜欢
    • 2020-07-12
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多