проблема с отображением html в Django, возможно, из структуры view.py - PullRequest
0 голосов
/ 31 марта 2020

Я создаю приложение 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: enter image description here

Я смущен тем, что происходит неправильно, и мне было интересно, есть ли у кого-нибудь подсказка, что не так, и является ли это эффективным способом структурировать мой класс представления, зная, что я хочу использовать все эти данные для создания панели мониторинга.

1 Ответ

2 голосов
/ 31 марта 2020

Вы ссылаетесь на неправильные переменные в вашем для l oop. Вы должны использовать имя переменной, объявленное после слова for, для ссылки на экземпляр внутри l oop.

<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>

Обратите внимание, что я также изменил ссылки, например,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...