首页 > 解决方案 > Django中的html显示问题可能来自view.py结构

问题描述

我正在构建一个 django 应用程序,但我对前端的东西非常不熟悉。最终我想构建一个仪表板,但现在我在构建一个与我希望它显示的内容相匹配的视图方面有些挣扎。

到目前为止,视图类已很好地转移到前端(运行服务器时没有错误),但它不显示值,而是显示黑点。这里附上我的模型、html 代码以及我的 view.py

class Classification(models.Model):
    Class = models.CharField(max_length=10, primary_key=True)
    revenue_proportion = models.FloatField(default=0)
    Quantity_of_item = models.IntegerField(default=0)
    percentage_of_items = models.FloatField(default=0)
    cumul_percentage_of_items = models.FloatField(default=0)
    inventory_dollars = models.FloatField(default=0)
    inventory_dollars_percentage = models.FloatField(default=0)
    cumul_inventory_dollars_percentage = models.FloatField(default=0)
    average_margin = models.FloatField(default=0)
    average_sales_week = models.FloatField(default=0)
    weekly_percentage_sales = models.FloatField(default=0)

    def __str__(self):
        return self.Class


class stock_anormal(models.Model):
    reference_anormales = models.CharField(max_length=10, primary_key=True)
    stock_alerte_calcule = models.FloatField(default=0)
    stock_alerte_recommande = models.FloatField(default=0)
    en_alerte = models.FloatField(default=0)

    def __str__(self):
        return self.reference_anormales


class stock_negatif(models.Model):
    reference_negatives = models.CharField(max_length=10,primary_key=True)
    stock_alerte_calcule = models.FloatField(default=0)
    stock_alerte_recommande = models.FloatField(default=0)
    risque_de_rupture = models.FloatField(default=0)

    def __str__(self):
        return self.reference_negatives




class niveau_service(models.Model):
    reference_service = models.CharField(max_length=10, primary_key=True)
    niveau_service_calcule = models.FloatField(default=0)
    niveau_service_recommande = models.FloatField(default=0)
    alerte_niveau_service = models.FloatField(default=0)

    def __str__(self):
        return self.reference_service


class top_sellers(models.Model):
    reference = models.CharField(max_length=10, primary_key=True)
    avg_per_week = models.FloatField(default=0)


    def __str_(self):
        return self.reference
  <ul>

        {% for reference in top_sellers_list %}
            <li><a href="/dashboard/{{ top_sellers_list.reference }}/"> {{top_sellers_list.avg_per_week }}</a></li>
        {% endfor %}

    </ul>

    <ul>

        {% for reference in classification %}
             <li><a href="/dashboard/{{ classification.Class }}/"> {{classification.inventory_dollars }}</a></li>
        {% endfor %}

    </ul>

    <ul>

        {% for reference in anormal %}
             <li><a href="/dashboard/{{ anormal.reference_anormales }}/"></a></li>
        {% endfor %}

    </ul>


    <ul>

        {% for reference in negat %}
             <li><a href="/dashboard/{{ negat.reference_negatives }}/"></a></li>
        {% endfor %}

    </ul>

    <ul>

        {% for reference in service %}
             <li><a href="/dashboard/{{ service.reference_service }}/"></a></li>
        {% endfor %}

    </ul>

from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse, Http404
from .models import top_sellers, Classification, stock_anormal, stock_negatif, niveau_service


# Create your views here.

def dashboard(request):
    top_sellers_list = top_sellers.objects.order_by('avg_per_week')[:8]
    classification = Classification.objects.order_by('Class')
    anormal = stock_anormal.objects.order_by('reference_anormales')
    negat = stock_negatif.objects.order_by('reference_negatives')
    service = niveau_service.objects.order_by('reference_service')




    context1 = { 'top_sellers_list' : top_sellers_list,
                 'classification' : classification,
                 'anormal' : anormal,
                 'negat' : negat,
                 'service' : service

                 }


    return render(request, 'dashboard/index.html', context1)

和显示hmtl: 在此处输入图像描述

我对出了什么问题感到困惑,想知道是否有人知道出了什么问题,以及这是否是构建我的视图类的有效方法,因为我知道我想使用所有这些数据来制作仪表板。

标签: pythonhtmldjango

解决方案


您在 for 循环中引用了错误的变量。您必须使用在单词之后声明的变量名for来引用循环内的实例。

<ul>
    {% for t in top_sellers_list %}
        <li><a href="/dashboard/topsellers/{{ t.id }}/">{{t.avg_per_week }}</a></li>
    {% endfor %}
</ul>
<ul>
    {% for c in classification %}
         <li><a href="/dashboard/classifications/{{ c.id }}/"> {{c.inventory_dollars }}</a></li>
    {% endfor %}
</ul>
<ul>
    {% for a in anormal %}
         <li><a href="/dashboard/anormals/{{ a.id }}/">{{ a.reference_anormales }}</a></li>
    {% endfor %}
</ul>
<ul>
    {% for n in negat %}
         <li><a href="/dashboard/negats/{{ n.id }}/">{{ n.reference_negatives }}</a></li>
    {% endfor %}
</ul>
<ul>
    {% for s in service %}
         <li><a href="/dashboard/services/{{ s.id }}/">{{ s.reference_service }}></a></li>
    {% endfor %}
</ul>

请注意,我也更改了链接,例如


推荐阅读