Джанго;2 модели / класс / таблицы переходят в один шаблон - PullRequest
0 голосов
/ 19 февраля 2019

Простите, если я спрошу что-нибудь глупое, я очень плохо знаком с индустрией кодирования

Я работал над проектом Django по созданию панелей для демонстрации наблюдения за теплицей гидропоники.

Итак, я создаюдве модели;

class tank_system(models.Model):
PH = models.DecimalField(default=7.5,max_digits=3, decimal_places=1)
EC = models.DecimalField(default=13.3,max_digits=3, decimal_places=1)
Winlet = models.DecimalField(default=20.1, max_digits=3, decimal_places=1)
Woutlet = models.DecimalField(default=20.3,max_digits=3, decimal_places=1)
WaterLevel = models.IntegerField(default=500)
TempWater = models.IntegerField(default=25)
tanks = models.IntegerField(default=1)
datetime = models.DateTimeField(default=timezone.now())

class ambient (models.Model):
TempRoom = models.IntegerField(default=25)
CO2 = models.DecimalField(default=20.0, max_digits=3, decimal_places=1)
O2 = models.DecimalField(default=20.0,max_digits=3, decimal_places=1)
Humdity = models.IntegerField(default=25)
Room = models.IntegerField(default=1)
datetime = models.DateTimeField(default=timezone.now())

, и я отображаю данные двух моделей в один шаблон

здесь мои представления;

from django.shortcuts import render, get_object_or_404
from CGI.models import tank_system, ambient

def index(request):
    tank = tank_system.objects.all()
    room = ambient.objects.all()
    return render(request, 'CGI/Pages/DashBoard.html', {'tank': tank},{'room': room}) 

, когда я пытаюсь это сделать, я только получилданные формы 1 таблица

Здесь мой HTML-шаблон;

{% extends "base.html" %}
 {% block content %}
{%load staticfiles%}
 {% load static %}
 <div class = "containor">
 <div class ="row" id = "row1">
 <div class ="col-sm-6" style="background-color:">
    <h2>Camera</h2>
 </div>

<div class ="col-sm-6" style="background-color:">
    <h2>Ambinet</h2>
</div>
</div>

<div class = "containor">
    <div class="row" id="row2">
        <div class ="col-sm-6" id="Cam1" style="background-color:">
            <div class="containor">
                <video id="livestream" width="550" height="350" autoplay></video>
                 <canvas class = "my-4 chartjs-render-monitor" id="live_vid" height="1"></canvas>
                <script src="{% static 'FrounterWeb/JS-code/Stream.JS' %}" ></script>
            </div>
        </div>

        <div class ="col-sm-2" id="Humdity" style="background-color:">
            <div class="containor">
                <center>
                    <picture>
                        <img src="{% static 'FrounterWeb/img/Humidty_icon.png' %}" alt="RoomTemp">
                    </picture>
                <br>
                    <h1>
                    {% for ambient in room %}
                         {% if forloop.first %}
                         {{  ambient.Humdity }}
                         {% endif %}
                         {% endfor %}
                    %</h1>
                </center>
            </div>
        </div>

        <div class ="col-sm-2" id="Roomtemp" style="background-color:">
            <div class="containor">
                <center>
                    <picture>
                        <img src="{% static 'FrounterWeb/img/RoomTemp.png' %}" alt="RoomTemp">
                    </picture>
                <br>
                    <h1>
                    {% for ambient in room %}
                         {% if forloop.first %}
                         {{  ambient.TempRoom }}
                         {% endif %}
                         {% endfor %}
                    C</h1>
                </center>
            </div>
        </div>

        <div class ="col-sm-2" id="co2" style="background-color:">
            <div class="containor">
                <center>
                    <picture>
                        <img src="{% static 'FrounterWeb/img/co2_icon.png' %}" alt="co2">
                    </picture>
                <br>
                    <h1>
                    {% for ambient in room %}
                         {% if forloop.first %}
                         {{  ambient.CO2 }}
                         {% endif %}
                         {% endfor %}
                    </h1>
                </center>
            </div>
        </div>

    </div>
</div>

<div class = "containor" >
    <div class="row" id = "row3" >
        <div class ="col" style="background-color:">
            <center>
                <h2>Water tank</h2>
            </center>
        </div>
        </div>
    </div>
</div>

<div class = "containor">
    <div class="row" id ="row4" >

        <div class ="col-sm-2">
            <div class="containor">
                <center>
                        <picture>
                            <img src="{% static 'FrounterWeb/img/pHicon.png' %}" alt="co2">
                        </picture>
                    <br>
                    <h1>
                    {% for tank_system in tank %}
                         {% if forloop.first %}
                         {{ tank_system.PH }}
                         {% endif %}
                         {% endfor %}
                    </h1>
                </center>
            </div>
        </div>

        <div class ="col-sm-2">
            <div class="containor">
                <center>
                        <picture>
                            <img src="{% static 'FrounterWeb/img/EC-icon.png' %}" alt="co2">
                        </picture>
                    <br>
                    <h1>
                    {% for tank_system in tank %}
                         {% if forloop.first %}
                         {{ tank_system.EC }}
                         {% endif %}
                         {% endfor %}
                    %</h1>
                </center>
            </div>
        </div>

        <div class ="col-sm-2">
            <div class="containor">
                <center>
                        <picture>
                            <img src="{% static 'FrounterWeb/img/WaterTemp.png' %}" alt="co2">
                        </picture>
                    <br>
                    <h1>
                    {% for tank_system in tank %}
                         {% if forloop.first %}
                         {{ tank_system.TempWater }}
                         {% endif %}
                         {% endfor %}
                    C</h1>
                </center>
            </div>
        </div>

        <div class ="col-sm-2">
            <div class="containor">
                <center>
                        <picture>
                            <img src="{% static 'FrounterWeb/img/Flow-icon.png' %}" alt="co2">
                        </picture>
                    <br>
                    <h1>
                    {% for tank_system in tank %}
                         {% if forloop.first %}
                         {{ tank_system.Winlet }}
                         {% endif %}
                         {% endfor %}
                    ml/hr</h1>
                </center>
            </div>
        </div>

        <div class ="col-sm-2">
            <div class="containor">
                <center>
                        <picture>
                            <img src="{% static 'FrounterWeb/img/Flow-out-icon.png' %}" alt="co2">
                        </picture>
                    <br>
                    <h1>
                    {% for tank_system in tank %}
                         {% if forloop.first %}
                         {{ tank_system.Woutlet }}
                         {% endif %}
                         {% endfor %}
                    ml/hr</h1>
                </center>
            </div>
        </div>

        <div class ="col-sm-2">
            <div class="containor">
                <center>
                        <picture>
                            <img src="{% static 'FrounterWeb/img/waterlevel-icon.png' %}" alt="Waterlevel">
                        </picture>
                    <br>
                    <h1>
                    {% for tank_system in tank %}
                         {% if forloop.first %}
                         {{ tank_system.tanks }}
                         {% endif %}
                         {% endfor %}
                    L</h1>
                </center>
            </div>
        </div>

    </div>
</div>

<div class = "containor">
    <div class="row" id="row5" >

        <div class ="col-sm-6" >
            <h1>Water data</h1>
        </div>

        <div class ="col-sm-6" >
            <h1>Room data</h1>
        </div>

    </div>
</div>

<div class = "containor">
    <div class="row" id="row6" >

        <div class ="col-sm-6" >
            <div class="float-sm-none" id = Waterchart>

            </div>
        </div>

        <div class ="col-sm-6" >
            <div class="float-sm-none" id = Roomchart>


            </div>
        </div>

    </div>
</div>

здесь картина лучше понять;picture better understanding

Если бы вы могли мне помочь, я очень признателен

Ответы [ 3 ]

0 голосов
/ 19 февраля 2019

В вашем методе индекса внесите изменения как:

def index(request):
    tank = tank_system.objects.all()
    room = ambient.objects.all() 
    return render(request, 'CGI/Pages/DashBoard.html', {'tank': tank, 'room': room}) 
0 голосов
/ 19 февраля 2019

Вы можете передавать данные двумя разными способами

def index(request):
    tank = tank_system.objects.all()
    room = ambient.objects.all()
    return render(request, 'CGI/Pages/DashBoard.html', {'tank': tank,'room': room}) 
                  or 
    return render(request, 'CGI/Pages/DashBoard.html', locals())
locals() stands for get all local variable/objects and pass to the html as context
0 голосов
/ 19 февраля 2019

В вашем рендере 4 аргумента, из которых 2 является контекстом.Для этого требуется только один словарь с контекстом, или вы можете сделать контекстный словарь переменной и передать его в качестве аргумента в render.

Попробуйте:

from django.shortcuts import render, get_object_or_404
from CGI.models import tank_system, ambient

def index(request):
    tank = tank_system.objects.all()
    room = ambient.objects.all()
    return render(request, 'CGI/Pages/DashBoard.html', {'tank': tank,'room': room}) 

ИЛИ

from django.shortcuts import render, get_object_or_404
from CGI.models import tank_system, ambient

def index(request):
    tank = tank_system.objects.all()
    room = ambient.objects.all()
    context = {
           'tank': tank,
           'room': room  
       }
    return render(request, 'CGI/Pages/DashBoard.html',context) 
...