Как вывести данные из БД SQLite Django на html страницу?

119
10 августа 2019, 21:30

Файл models.py

from django.db import models
class Manufacturer(models.Model):
    number = models.IntegerField(verbose_name="Номер")
    manufacturer = models.CharField(max_length=20, verbose_name="Производитель")
    def __str__(self):
        return self.manufacturer
    class Meta:
        verbose_name = "Производитель"
        verbose_name_plural = "Производители"
class Catalog(models.Model):
    number = models.IntegerField(verbose_name="Номер")
    manufacturer = models.ForeignKey(Manufacturer, on_delete=models.CASCADE, verbose_name="Производитель")
    types = models.CharField(max_length=50, verbose_name="Тип оборудивания")
    model = models.CharField(max_length=50, verbose_name="Модель")
    description = models.CharField(max_length=1000, verbose_name="Описание")
    information = models.CharField(max_length=1000, verbose_name="Информация")
    def __str__(self):
        return self.model
    class Meta:
        verbose_name = "Каталог"
        verbose_name_plural = "Каталоги"

Файл views.py

from django.shortcuts import render
import requests
from django.views.generic import ListView, DetailView, TemplateView
from Tenda.models import Manufacturer, Catalog
def index(request):
    return render(request, 'Tenda/index.html')
class CatalogView(ListView):
    model = Catalog
    template_name = 'catalog.html'
class CatalogDetail(DetailView):
    model = Catalog
    template_name = 'catalog.html'

Файл catalog.html

{% extends "Tenda/wrapper.html" %}
{% block content %}
    {% for val in values %}
        <!-- Таблица каталога-->
        <table class="table">
          <thead class="thead-dark">
            <tr>
              <th scope="col">#</th>
              <th scope="col">Номер</th>
              <th scope="col">Производитель</th>
              <th scope="col">Тип</th>
              <th scope="col">Модель</th>
              <th scope="col">Описание</th>
              <th scope="col">Информация</th>
            </tr>
          </thead>
          <tbody>
            {% for catalog in catalogs %}
            <tr>
              <th scope="row">1</th>
              <td>{{ catalog.number }}</td>
              <td>{{ catalog.manufacturer }}</td>
            </tr>
            {% endfor %}
          </tbody>
        </table>
        {{val}}
    {% endfor %}
{% endblock %}
Answer 1

Переменные "catalog.number" и "catalog.manufacturer" из файла "catalog.html" не инициализированы в функции "index" файла "views.py", а точнее эти переменные - поля модели должны являться инициализаторами {{объектов}}, в "catalog.html".

Например так в файле "views.py":

from .models import Catalog
def index(request):
    return render(request, 'Tenda/index.html',
                  {
                      'number': Catalog.number,
                      'manufacturer': Catalog.manufacturer,
                  }
                 )

А в файле "catalog.html":

<tr>
  <th scope="row">1</th>
  <td>{{ number }}</td>
  <td>{{ manufacturer }}</td>
</tr>
READ ALSO
Почему элемент рвет верстку?

Почему элемент рвет верстку?

Не могу понять, почему элемент div в котором находится стрелочка при ее отсутствии рвет верстку

100
Подключение шрифтов к сайту

Подключение шрифтов к сайту

Подключил шрифт на сайт с разными начертаниями, 2 начертания подключил немного иначе и результат отображения немного удивил

99
Проблема с JQuery Datepicker

Проблема с JQuery Datepicker

Почему-то даты перескакивают на понедельник,а не остаются на своих местах

121
Как скрыть меню при повторном клике jquery

Как скрыть меню при повторном клике jquery

Имеется вот такой псевдокод, при клике он показывает моё меню, но я хочу что бы при повторном он его опять скрывал, как это можно сделать?

110